Difference between revisions of "Arduino - Zhrnutie druhého dňa"

From DT^2
Jump to: navigation, search
m
m
 
Line 6: Line 6:
 
* 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 '''[https://www.arduino.cc/reference/en/language/functions/communication/serial/available/ Serial.available()]''' - napr. v podmienke: '''[https://www.arduino.cc/reference/en/language/structure/control-structure/if/ if (Serial.available()} { prečítaj a spracuj správu... }'''] - pričom správu môžeme čítať napr. po jednom znaku pomocou funkcie '''[https://www.arduino.cc/reference/en/language/functions/communication/serial/read/ Serial.read()]'''  
 
* 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 '''[https://www.arduino.cc/reference/en/language/functions/communication/serial/available/ Serial.available()]''' - napr. v podmienke: '''[https://www.arduino.cc/reference/en/language/structure/control-structure/if/ if (Serial.available()} { prečítaj a spracuj správu... }'''] - pričom správu môžeme čítať napr. po jednom znaku pomocou funkcie '''[https://www.arduino.cc/reference/en/language/functions/communication/serial/read/ 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
 
* 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:<br>'''int pole[100];'''<br>a potom môžeme zapísať hodnotu do hociktorej z vytvorených 100 položiek tohto poľa, napr.<br> '''pole[33] = 1;'''<br> 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.
+
* 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:<br>'''int pole[100];'''<br>a potom môžeme zapísať hodnotu do hociktorej z vytvorených 100 položiek tohto poľa, napr.<br> '''pole[33] = 1;'''<br> 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 [[Arduino_-_záznam_rytmu_tlačidlami|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 '''[https://www.arduino.cc/en/Reference/Servo Servo]''' pomocou jeho metódy '''[https://www.arduino.cc/en/Reference/ServoWrite write(uhol)]''', potom, čo vo funkcii '''setup()''' nastavíme pomocou metódy [https://www.arduino.cc/en/Reference/ServoAttach attach()], na ktorom pine je k Arduinu pripojené.
 
* 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 '''[https://www.arduino.cc/en/Reference/Servo Servo]''' pomocou jeho metódy '''[https://www.arduino.cc/en/Reference/ServoWrite write(uhol)]''', potom, čo vo funkcii '''setup()''' nastavíme pomocou metódy [https://www.arduino.cc/en/Reference/ServoAttach attach()], na ktorom pine je k Arduinu pripojené.

Latest revision as of 22:49, 31 July 2018

  • 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é.