Az elmúlt években egy új játékos lépett be az elektronikai platformok piacára, gyökeresen megváltoztatva azt: az Arduino. Erre fogunk ma egy pillantást vetni.
Mi az az Arduino?
Az Arduino egy szabad szoftverekre és hardverekre épülő mikrokontrolleres fejlesztői platform, amely több, a teljesítményéhez képest elérhető árú mikrokontrolleres kártyából és egy ingyenes fejlesztői környezetből áll. A mikrokontroller gyakorlatilag egy egyetlen integrált áramkörre szerelt, kis teljesítményű és memóriájú számítógép, amit elsősorban más elektronikus eszközök vezérlésére használhatunk. A szabad hardver pedig azt takarja, hogy az összes Arduino kártya kapcsolási rajzát és terveit egy szabad szoftveres licencekre hasonlító licenc feltételei mentén lehet felhasználni. (Természetesen az Arduino márkanév bejegyzett védjegy!)
De miért jó ez?
Az Arduino alapvetően azért volt komoly újítás, mert akár a programozásban kevésbé jártas érdeklődők is lehetőséget kaptak a mikrovezérlős programozás alapjainak elsajátítására, és ezzel arra, hogy megfelelő elektronikai jártasság mellett, akár saját elektronikus eszközeiket is létrehozzák. Ez részben a hardvernek köszönhető: az Arduino kártyák önmagában tartalmazzák mindazt, ami a mikrokontroller biztonságos működéséhez szükséges: órajelforrás, feszültségforrás, megszakító, stb. A komolyabb újítás a szoftver volt: a fejlesztői környezet egyszerűen használható, az Arduino-kártyákon éppen található programot (sketch-et) egyetlen kattintással lehet cserélni. A programozás a Wiring Framework segítségével lehetséges, egy pofonegyszerű sorral lehet például egy LED-et ki- vagy bekapcsolni. A megszámlálhatatlan mennyiségű, mind az Arduino vállalat és mind a felhasználók álatal készített programkönyvtár segítségével pedig programjainkban majdnem olyan egyszerű léptetőmotorokat vagy LCD-kijelzőket használni mint egy LED-et. Példaként nézzünk meg egy olyan programot, ami a kártyán található LED-et villogtatja, másodpercenként egyszer.
const int led = 13; // A 13-as kivezetéshez van kötve a LED void setup() { // Ez a kód egyszer fut le pinMode(led, OUTPUT); // Kijelöljük a kivezetést kimenetnek } void loop() { // Ez a kód végtelen ciklusban fut digitalWrite(led, HIGH); // "magas" állapotba kapcsoljuk // a kivezetést -> világít a LED delay(500); // Várunk fél másodpercet digitalWrite(led, LOW); // "alacsony" állapotba kapcsoljuk // a kivezetést -> a LED elsötétül delay(500); // Újabb fél másodpercet várunk }
Hova tovább?
Egy ilyen oktatóplatformban az is lényeges szempont, hogy az oktatószintű környezetből tovább lehessen lépni komolyabb programok felé. A legtöbb Arduino AVR és ARM mikrokontrollerekre épül, amelyeket elterjedten használnak az iparban is. Ennek köszönhető, hogy Arduino-val olyan szabványos protokollokon lehet kommunikálni, mint az I2C vagy az SPI. Mivel a Wiring Framework C++-ra épül, az Arduino IDE bármilyen C++ kódot boldogan lefordít. Ha pedig lemondunk az Arduino IDE kényelméről, teljesen szabadon használhatjuk az avr-gcc (vagy akár az Atmel AVR-studio) minden lehetőségét, akár assembly-ben is programozhatunk, vagy (ha például Arduino Leonardo-t használunk) akár az USB protokoll alacsonyabb szintjeit is manipulálhatjuk.