Arduino-alapozó
Néhány tízezer forint, valamint nem kevés kreativitás és kitartás kell ahhoz, hogy elkészítsd álmaid eszközét. Ehhez több száz különböző szenzor áll rendelkezésedre.
Első lépésben telepítsd az Arduino Software legfrissebb kiadását közvetlenül a gyártó oldaláról. Azt javasoljuk, hogy az installáláskor a driverek telepítését is engedélyezd, hogy gépedet szoftveres oldalról is felkészítsd a mikrovezérlő csatlakoztatására. Ezt követően indítsd el az Arduino Software-t, majd egy USB A-B kábel segítségével csatlakoztasd eszközödet Windows, Mac OS X vagy Linux rendszerű számítógépedhez. Az összeköttetéssel az Arduinón fel kell villannia egy zöld LED jelzőfénynek. Ha ez nem történik meg, ellenőrizd, hogy mindkét oldalon jól illeszkedik-e a kábel.
A fejlesztőkörnyezet elindulása után elsőként tölts be egy példaprogramot a File\Examples menüből, mondjuk a Basic csoportból a Blink miniprogramot választva, amellyel a mikrovezérlőn lévő LED-et lehet villogtatni. Ha ezzel készen vagy, irány a [Tools] menü, ahol a [Board] listából keresd ki éppen használt Arduino mikrovezérlődet. Ha nem találod ott, kattints a [Boards manager] lehetőségre, és keresd ki a listából az eszközt, majd telepítsd illesztőprogramját.
Következő lépésként ismét klikkelj a [Tool] menüpontra, majd a [Port] listában keresd meg a vezérlődet. Miután ezt is elvégezted, kattints a menüsor alján lévő pipaikonra (Verify) a kód elemzéséhez, majd - amennyiben nem talált hibát - a mellette lévő jobbra mutató nyílra (Upload) a kód feltöltéséhez. Ha minden jól megy, néhány másodperc múlva villogni kezd majd az Arduinód, és ezzel le is futtattad az első programodat.
Egy program felépítése
Persze ez valójában nem a tiéd volt, de sokat tanulhatsz belőle. Elemezzük a C++ kódot! Minden programkód, azaz Skatch két fő [void] típusú funkcióhívásból áll, egy setup() és egy loop() blokkból. A [void] jellemzője, hogy nem ad vissza semmilyen értéket, csupán deklarál.
A fő eltérés köztük, hogy a setup() blokkba helyezett kód csak egyszer fut le a mikrovezérlő elindítása után, míg a loop() folyamatosan ismétli a benne található parancsokat, így előbbi a változók inicializálására, utóbbi a programtörzs tényleges futtatására alkalmas. Ezek alapján egy Arduino program szintaktikája a következő: void setup() {egyszer lefutó kód} és void loop() {többször futtatott kód}, amelyen belül pontosvesszőt kell használnunk az utasítások elválasztásához.
Kódunk egy részét már megfejtettük, a következő lépésben meg kell neveznünk azt a pint, amellyel műveletet akarunk végezni. Egyszerű dolgunk van, mert Arduino esetén szinte mindig a 13-as digitális kimenetnél találjuk az integrált LED-et. A címzés a [pinMode] paranccsal lehetséges, amely két változóra kíváncsi: a pin számára és arra, hogy kimenetként, vagy bemenetként akarjuk-e azt használni. Mi most kimenetként fogjuk, így a kódunkba a [pinMode (13, OUTPUT);] sort kell beírnunk.
A villogtatáshoz ezt követően a digitalwrite() utasítást fogjuk használni, ami a pincímzést követően két értéket vehet fel. A [High] esetén az adott pinbe több, [Low] híváskor kevesebb áram kerül, azaz így fel- és lekapcsolhatjuk a lámpánkat. A konkrét parancs tehát ezt követően a következő lesz: [digitalWrite(13, HIGH);] és [digitalWrite(13, LOW);], míg a késleltetésért a delay () lesz felelős, ami alapesetben 1000 milliszekundum értéket vesz fel, azaz [delay(1000);].
Tananyagok, segítségek
Persze egy Arduino-kód ennél jóval összetettebb, a rendelkezésünkre álló hely pedig kevés arra, hogy minden funkcióhívást, változót és struktúrát bemutassunk. Így azt javasoljuk, hogy akit érdekel a mikrovezérlő programozása, az egyrészt látogassa gyakran az arduino.cc/en/Reference oldalt, ahol megtalálható minden egyes utasítás részletes leírása. Illetve érdemes virtuálisan átlapozni Brian W. Evans Arduino-programozási kézikönyvét; Cseh Róbert jóvoltából magyar nyelven is elérhető, ingyenesen letölthető.
Érdemes ezenfelül még átvizsgálni a különféle fórumok és kész projektek oldalait, hiszen itt rengeteg újrahasznosítható, javítható kódot találunk, viszont pont emiatt érdemes saját kódunkat is megosztanunk, hogy még tovább gazdagodhasson az Arduino-közösség. Mindemellett nem feltétlenül kell C++ kódokban elmélyednünk, hiszen a gyermekek informatikai oktatásában egyre többször használt Scratch is rendelkezik Arduino kiegészítővel.
A kísérleti kiegészítőket tartalmazó scratchx.org például bemutat egy saját, béta-állapotú megoldást, amely tapasztalatunk szerint az Arduino Unóval üzembiztosan működik, viszont más vezérlők esetén problémák léphetnek fel. Elsőként telepítsük a scratchx.org-ról letölthető Device Plugin beépülőt, majd keressük fel a projekt oldalát. Mivel plugin feltételezi a StandardFirmata firmware meglétét, azt is telepítsük mikrovezérlőnkre. Lépjünk be az Arduino Software felületére, majd az [File\Examples] menüpontjában keressük meg a [Firmata] csoporton belül a [StandardFirmata] programot, majd töltsük fel azt gépünkre, hogy közvetíthessen eszközünk és a speciális Scratch kiegészítés között.
Ám nem csak ez az egyetlen próbálkozás az Arduino és a Scratch házasítására. Remek alternatíva lehet még az S4A: szintén objektumorientált, vizuális szerkesztővel rendelkezik, amelyről szinte csak a cica hiányzik, hiszen kész Scratch-projekteket is megnyithatunk benne, ám visszafelé már nem kompatibilis. A csatlakozáshoz mindössze az s4a.cat oldalról kell telepítenünk a programozási felületet, valamint a fejlesztők egyedi firmware-jét, amit szintén az Android Software segítségével tölthetünk fel eszközünkre.
A kevésbé elterjedt megoldások közül említést érdemel még a Catenary, a codebender.cc, az Ardublock és a Modkit is. Érdemes még az IFTTT oldalán is regisztrálni, a felhőszolgáltatásokat összekötő weboldalon ugyanis felhasználóként igényelhetünk egy Maker Channel egyedi kulcsot, amelyre később egy HTTP hívással hivatkozhatunk, amennyiben az Arduinónk rendelkezik Ethernet- vagy Wi-Fi-csatlakozóval, shielddel. A hivatkozás birtokában több száz recept közül választhatunk, felvillanthatjuk a lámpát, ha új üzenetünk érkezik, meglengethetünk egy zászlót, ha új hír kerül fel a kedvenc oldalunkra, illetve akár az időjárás-előrejelzések alapján is beállíthatunk feltételes utasításokat. A lehetőségek tényleg korlátlanok, főként ha az elérhető több száz szenzort is számba vesszük, amelyek között például vérnyomásmérőket, alkoholszondákat, páratartalom-mérőket és szervomotorokat is találhatunk. Te mit építenél belőlük?