Arduino - Zhrnutie druhého dňa
- keď sa nedá poslať program do pripojeného Arduina, tak skontrolujeme, či je vybratý sériový port (Tools-Port) a či máme vybratý správny typ arduina (pre nás: Arduino Nano), ak sa nejaké dolu vypíše - prečítame si oranžovú chybovú správu a pokúsime sa pochopiť, čo nám Arduino chce povedať
- možno nám niekde chýba bodkočiarka
- možno nesedia zátvorky - namiesto zloženej zátvorky je niekde okrúhla alebo naopak, alebo v programe nie je rovnaký počet otvorených a zatvorených zložených zátvoriek, alebo nie sú na správnom mieste - príkazy musia byť vždy vnútri vo funkciách, nie mimo nich
- hoci väčšinou k Arduinu pripájame zariadenia, ktoré komunikujú iba pomocou dvoch hodnôt 0 a 1 (vtedy používame digitálne piny), Arduino vie prečítať aj signál, ktorý obsahuje plynule sa meniacu hodnotu (v skutočnosti je to elektrické napätie typicky medzi 0V a 5V) pomocou funkcie analogRead(číslo_analógového_pinu) - táto funkcia vráti hodnotu 0 (pre 0V) až 1023 (pre 5V)
- Arduino môže do počítača vysielať texty alebo čísla, ktoré si na počítači môžeme zobraziť v sériovom monitore (ikonka vpravo hore): najskôr vo funkcii setup() nastavíme rýchlosť komunikácie: Serial.begin(9600); a potom v programe môžeme vyslať správu pomocou Serial.println("textová správa"); alebo Serial.println(123); - prípadne Serial.println(premenná); - ak namiesto println() použijeme print(), za výpisom sa nevytvorí nový riadok.
- Táto komunikácia môže prebiehať aj opačným smerom: do horného riadku v serial monitore môžeme niečo napísať a stlačiť Send - vtedy sa zadaný text prenesie cez USB kábel z počítača do Arduina. V Arduine môžeme zistiť, či nejaká správa prišla pomocou funkcie Serial.available() - napr. v podmienke: if (Serial.available()} { prečítaj a spracuj správu... } - pričom správu môžeme čítať napr. po jednom znaku pomocou funkcie Serial.read()
- zistili sme, že premenné môžu byť definované buď vnútri vo funkcii - vtedy sú viditeľné iba vnútri tejto funkcie, alebo mimo funkcií a vtedy sú viditeľné vo všetkých funkciách
- hoci bežne sa v jednej premennej uchováva iba jedna hodnota, existujú aj premenné, v ktorých môžeme uchovať veľa hodnôt (napríklad 100) - sú to tzv. polia. Pole, do ktorého môžeme uložiť 100 čísel, vytvoríme takto:
int pole[100];
a potom môžeme zapísať hodnotu do hociktorej z vytvorených 100 položiek tohto poľa, napr.
pole[33] = 1;
zapíše do 34. položky číslo 1 (áno 34. položky, nie je to preklep, pretože sú číslované od 0). Hodnotu z poľa môžeme prečítať a použiť podobným spôsobom, napr: Serial.println(pole[7]); - vypíše na sériový port hodnotu 8. položky poľa. Pole sme využili na záznam rytmu. - Existujú dva druhy servo-motorov: bežné, ktoré sa otáčajú iba v rozmedzí 0-180 stupňov, ale môžeme im povedať do ktorej polohy sa majú natočiť a tzv. continuous, ktoré sa vedia točiť dookola oboma smermi. Servo motor riadime pomocou knižnice Servo.h a objektu Servo pomocou jeho metódy write(uhol), potom, čo vo funkcii setup() nastavíme pomocou metódy attach(), na ktorom pine je k Arduinu pripojené.