2. díl - Arduino - Hello World

Hardware PC Arduino Arduino - Hello World

V minulém díle jsme si představili Arduino a dnes si již naprogramujeme první program. Než ale začneme programovat, popíšeme si, jak je to s nahráváním programů u jednotlivých modelů.

Většina desek má USB port s převodníkem na sériový (u starších desek byl normální sériový), který se dá u některých desek přeprogramovat, tudíž jej počítač nevidí jako Arduino na sériovém portu, ale třeba jako myš či klávesnici. Tudíž si pomocí Arduina lze vytvořit i vlastní herní ovladač či jiné vstupní zařízení (možná se o tom někdy zmíním). U některých desek ale na převodník nezbylo místo (Lilypad), tudíž je k nim nutno pro nahrání programu připojit destičku s převodníkem.

Arduino Lilypad s převodníkem

Arduino Lilypad s převodníkem

Připojení k počítači proběhne bez problému, Windows si jej načte. K programování nám postačí Arduino IDE, zdarma ke stažení na stránkách Arduina (http://arduino.cc/…ain/Software#toc2). Po jeho spuštění si rozklikneme menu Tool > Board a vybereme naše Arduino. Já budu používat MEGA 2560. Dále si v menu Tools ještě rozklikneme položku Serial Port, kde vybereme port, na kterém je Arduino (pokud nevíte, otevřete správce zařízení a rozklikněte sériové porty, kde by mělo být u některého napsáno Arduino a váš model).

Arduino na portu COM6

Arduino na portu COM6

Arduino IDE

Arduino IDE

Nyní k samotnému programování. Po spuštění uvidíme nahoře pod meny tmavě modrou lištu s 6 tlačítky. První nám ověří zdrojový kód na chyby, druhé jej ověří a nahraje do Arduina. Poté jsou zde tlačítka nový, otevřít, uložit a úplně vpravo pak otevření monitoru sériové linky, kde si můžeme zobrazit data, která po Arduinu odesíláme přes sériovou linku (třeba do počítače). Pod touto lištou je již pás karet, ve kterém můžeme přepínat mezi dalšími soubory aktuálního programu. My se ale většinou vejdeme do jednoho, více jich použijeme jen zřídka. Název karty i celého projektu bude odvozen od dnešního data. Za ním bude poté ještě písmenko abecedy, označující pořadí návrhu (sketche) daného dne. Třeba druhý sketch z 5. července se bude jmenovat sketch_jul05b. Toto se dá změnit, při uložení budete moci zadat svůj název. Arduino IDE nám pro každý projekt vytvoří novou složku (umístěny budou v C:\Users\uziva­tel\Documents\Ar­duino), protože počítá, že budeme používat více souborů.

Níže je bílý prostor, kam budeme psát svůj kód. Jazyk je odvozený s Wiringu, používá standardní syntaxi, tudíž byste s ním neměli mít problém. Pak je zde jíž jen černé okno, kam se vypisuje jak dopadla kompilace či upload do Arduina, velikosti sketche a kolik zbylo na Arduinu a také nalezené chyby.

Představení desky

Než se ale do čehokoliv pustíme, musíme vědět s čím pracujeme.

Arduino MEGA popis
  • USB budeme připojovat do jediného portu (1). Pozor: u desky MEGA 2560 není kabel součástí balení (myslím, že je jen u UNA).
  • Dalším konektorem je napájecí jack (2), schopný pobrat od 6V do 20 V, ale doporučuje se mezi 7 a 12 V. Přes 12 V může dojít k přehřátí, pod 7 zase nemusí být vše stabilní.
  • Dále se zde nachází resetovací tlačítko (3). To program spustí znovu a vymaže hodnoty v proměnných (asi jako když resetujete normální počítač).
  • Uprostřed desce dominuje její hlavní část - Mikroprocesor ATMega 2560 (4). Ten tu podrobně popisovat nebudu, ale bez něj to nejde.
  • Číslem 5 je označena LED dioda L, která se napojena na pin 13. Pod ní jsou diody TX a RX, indikující komunikaci na sériové lince. Na desce se nachází ještě jedna dioda - napájení. Na rozdíl od těchto žlutých svítí zeleně a je umístěna nad tlačítkem reset.
  • Vedle procesoru je ICSP konektor (6), kterým je možné také přistupovat k procesoru, ovšem jsou zde možné pokročilejší úpravy.
  • Dále je tu ještě jeden podobný konektor (7). Ten se nachází jen na modelech MEGA a nabízí nám možnost přeprogramovat převodník sériového portu, aby se tvářil jako třeba myš. Pak už nám zbývají jen piny.
  • Lištička s číslem 8 je napájení. Zprava obsahuje piny, Vin pro vstupní napětí nahrazuje jack konektor. Poté jsou tu dva GND, kam budeme připojovat zem. Poté jsou tu 5V a 3.3V, oba výstupní. Pak už nás z této části zajímá jen pin reset, který plní stejnou funkci resetovacího tlačítka.
  • Lišta 9 obsahuje analogové piny, které slouží jako vstupní a vrací hodnotu mezi 0-1023. Pokud připojíme potenciometr, tak se bude hodnota měnit, jak s ním budeme otáčet.
  • 10 jsou základní piny 2-13 a další GND. Schválně zde nezahrnuji piny 0 a 1, které sice mohou být použity také, ale je na nich sériová linka, takže při každém jejich použití musíme příslušenství odpojit.
  • Desky MEGA mají navíc několik dalších sériových linek (11), které se hodí třeba pro komunikaci s Bluetooth nebo jinými desky.
  • MEGA jsou také rozšířeny o další lištičku pinů (12), kde jich je až do 53 (navazují na předchozí lištičky 10 a 11) a obsahuje další dva GND. Pinů je zde více, jen je nyní nebudeme potřebovat a představíme si je, až na ně přijde řada.

A také pozor na to, co připojujeme. Každý pin je schopen zátěže jen do 20mA, chvilkovou až 40mA. Při překročení v lepším případě zlikvidujeme pin, v horším celou desku. Proto se při náročnějších obvodech používají tranzistory, ale to až někdy příště.

Hello world

Arduino umí posílat data po sériové lince. Takže si od něj necháme vypsat Hello world a čas od spuštění.

Já bych nejdřív napsal kód a potom jej postupně vysvětlil. Rád bych v komentářích viděl, jak vám to bude vyhovovat a podle toho bych pak psal další. Teď program - ten se skládá alespoň z funkcí setup() a loop(). Setup se vykoná jednou při naběhnutí Arduina a po něm se ve smyčce opakuje loop.

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println("Hello world!");
  Serial.print("Funguji jiz: ");
  Serial.print(millis());
  Serial.println("milisekund.");
  delay(1500);
}

A k vysvětlování...

Serial.begin(9600);

Toto nám otevře sériový port s baudrate 9600, který se používá nejčastěji. Jsou možné i jiné, ale doporučuji tento. Serial je v Arduinu přednastavený název pro TX a RX na pinech 1 a 0, které jsou napojeny na USB. Pokud budete chtít využívat i další, tak existuje funkce softwareserial, o které si povíme jindy a umožňuje vytvořit TX a RX i na pinech, které k tomu nejsou primárně určeny (třeba 12 a 11), ale ty nejsou připojeny k USB a hodí se třeba na komunikaci přes BT.

Serial.println("Hello world!");

Pošle odchozí komunikaci (TX). Jedná se o ukončený řádek, takže další text bude na novém řádku.

Serial.print("Funguji jiz: ");

Zas pošle text na sériový port, ale neukončí řádek, tudíž bude další text na stejném řádku.

Serial.print(millis());

Kromě textu můžeme vypsat i proměnné či funkce (kdy se pošle hodnota, kterou funkce vrací). Já zde nechal vypsat funkci milis(), která vrací počet milisekund od spuštění programu. Toto číslo bude stále větší a větší, až někdy 50. dne bude mimo použitelné hodnoty. V tomto bodě program nespadne s chybou, ale hodnota se vynuluje (tedy dle teorie, pokud to někdo chcete zkusit, tak si rád počkám na výsledky :-D)

Serial.println("milisekund.");

Nyní jen napíšeme milisekund a dokončíme řádek.

delay(1500);

Tato funkce program na chvíli pozastaví, ale počítání milisekund od spuštění bude pokračovat. Není nutná, ale je lepší, aby nedocházelo k masivnímu posílání dat.

Tak, Arduino nám něco vypisuje, to je sice hezké, ale nikde nevidíme co. V Arduino IDE se na liště nachází úplně vpravo ikonka lupy. Po kliknutí na ní se ukáže okénko - Serialmonitor. Výsledek poté bude vypadat zhruba takto:

Pokud se vám nezobrazuje nic, nebo nějaké nesmyslné znaky, zkontrolujte, zda máte stejný baudrate (číslo u Serial.begin(); a rozklikávací nabídka baud v Serialmonitoru).

Toto je pro dnešní díl vše, příště zablikáme s diodou a zaměříme se na analogové vstupy/výstupy. Do budoucna mám pak v plánu (ale nezaručuji stejné pořadí) kódový zámek, LCD display, alarm, hodinový modul, komunikaci přes BT, příjem IR signálu z ovladače pro TV, SD kartu, pohrát si se zvukem, ovládat světla přes internet, měřit vzdálenost a spousty dalšího.


 

  Aktivity (1)

Článek pro vás napsal Adam Ježek
Avatar
Autor se převážně věnuje Arduinu a psaní tutoriálů z této oblasti, občas napíše příležitostně nějakou tu zprávičku. Většinu svého volného času momentálně věnuje Linuxu a/nebo Raspberry Pi. Také umí C#, HTML, CSS, PHP a Python.

Jak se ti líbí článek?
Celkem (11 hlasů) :
4.909094.909094.909094.909094.90909


 


Miniatura
Předchozí článek
Seznámení s Arduinem
Miniatura
Všechny články v sekci
Arduino
Miniatura
Následující článek
Arduino - Hrajeme si s LEDkami

 

 

Komentáře
Zobrazit starší komentáře (11)

Avatar
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:

Ahoj co říkáte na toto:http://aukro.cz/…4571017.html ?

Odpovědět 15.3.2015 18:41
Lepší být šprt než blbec :)
Avatar
Vesničan
Člen
Avatar
Vesničan:

Ahoj. Proč se mi nezobrazí ani základní mat. operace pomocí funkce print() ve spodním okně. Deska zatím nedorazila prý to chvíli trvá. Hláška 'print' was not declared in this scope. V eBooku Arduina jsem to někde četl že to jde ale nemůžu to najít. Za pomoc díky.

 
Odpovědět 13. února 11:44
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na Vesničan
Adam Ježek:

Nevím, kde chceš spouštět kód, když ti zatím ještě nedorazila deska. Spodní (černé) okno je pouze výstup kompileru. A print sám o sobě není, musíš určit kam se to má vypsat, tudíž třeba Serial.print("a");

Odpovědět  +1 13. února 12:46
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Avatar
Tomáš Brůna
Redaktor
Avatar
Odpovídá na Vesničan
Tomáš Brůna:

Tady byla blbost -_-

Editováno 13. února 12:47
Odpovědět 13. února 12:46
Lepší být šprt než blbec :)
Avatar
Vesničan
Člen
Avatar
Odpovídá na Adam Ježek
Vesničan:

Jen jsem chtěl odladit program nejlépe odkrokováním a zjistit jeho velikost. Jestli to musí mít výstup tak třeba textový soubor nebo přímo na monitor do nějakého okna. Umí li to jen seriál.print tak to vrátit na RS232 např. pomocí MAX232, nebo virtuální desku Arduino. Simulátor asi nebude. Jsem začátečník ale musí snad jít odladit program a pak koupit čip podle velikosti programu. To UNO mít budu ale pak si chci vyrábět vlastní desky a čidla. Díky.

 
Odpovědět 13. února 22:09
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Vesničan
ostrozan:

Kup si mega2560 a máš vystaráno
Garantuju ti, že program, který by ti sežral 256 k nikdy v životě nenapíšeš.
Ale i 32 k UNA ti vystačí na hodně velké projekty - u toho vidím problém spíš v omezeném počtu I/O
Jo a v absenci debuggeru vidím největší nedostatek arduina.

Editováno 13. února 22:42
 
Odpovědět 13. února 22:40
Avatar
Vesničan
Člen
Avatar
Vesničan:

Asi předbíhám ale budu li postupovat od lekce k lekci narazím někdy na něco co mi umožní přijmout data a uložit je v PC abych je mohl zpracovat v Excelu nebo alespoň vytvořit soubor např. txt. Ten již do xls převést umím. Děkuji.

 
Odpovědět 14. února 3:12
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Vesničan
ostrozan:

To je spíš záležitost aplikace v pc. Kdejakých terminálů je ke stažení spousta - nebo lépe si napiš vlastní, třeba ve WPF.

 
Odpovědět 14. února 8:35
Avatar
heger.m
Člen
Avatar
heger.m:

K čemu slouží, ten napájecí konektor. Nikde jsem se to nedozvěděl. A kdy ho mám použít a jakou V zvolit.

 
Odpovědět 24. července 21:19
Avatar
Adam Ježek
Tým ITnetwork
Avatar
Odpovídá na heger.m
Adam Ježek:

Dalším konektorem je napájecí jack (2), schopný pobrat od 6V do 20 V, ale doporučuje se mezi 7 a 12 V. Přes 12 V může dojít k přehřátí, pod 7 zase nemusí být vše stabilní.

Dá se použít, pokud nechceš (nebo nemůžeš) napájet Arduino přes USB.

Odpovědět 24. července 21:57
Pokud chceš odpovědět, klikni na odpovědět. Pokud chceš vložit zdroják, klikni na vložit zdroják (</>)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 21. Zobrazit vše