Arduinoról kezdőknek – 2. rész, a programozás

2020. július 05. vasárnap

Rádugjuk az USB portra, és egyetlen gombnyomással feltöltjük rá a szoftver által már leellenőrzött firmwaret – ennyi felprogramozni egy Arduinot. A rendszer előnyét a hardver- és szoftverelemek azon komplexitása jelenti, ami feledteti a mikrovezérlőket kísérő korábbi fenntartásokat.

A kép azért egy kicsit árnyaltabb, amit azért sem árt megismerni, mert a gondtalan játszadozáshoz kell némi barátság a fejlesztőkörnyezettel. A programozó kábeleket, interfészeket, UV lámpákat elfelejthetjük, csak egyetlen USB kábelre lesz szükség. A csatlakoztatás után a rendszer soros portként ismeri fel az Arduinoban lévő interfészt, mely az eszközkezelőben is megjelenik. Ha nem barmoltuk el korábban valami kínai szar rádió miatt a PL2303 vagy CH340 drivereket, akkor itt nincs is több dolgunk, talán csak annyi, hogy megnézzük, hányas COM portként jelent meg a kis lapkánk.

Az Arduinonak saját programozószoftvere van. Ezt az úgynevezett IDE-t már használtuk korábban az STM-eket érintő cikkekben – az McHF és a rádiószonda felprogramozásánál is -, de most nem mutogatunk, hanem kicsit másként nézzük át.

Példámban az Arduino UNO R3 boardot veszem, mely a beállításoknál még eltérő paraméterek mutat a többi lappal szemben, de egyébként nincs jelentősége a fajtának. Valamennyi panelen jól olvasható a rajta lévő mikrovezérlő típusa, a beállításoknál értelemszerűen ezt kell figyelembe venni.

Miután csatlakoztattuk az Arduinot és meggyőződtünk róla, hogy az eszközkezelőben soros portként megjelent, elindítjuk az innen letölthető, teljesen ingyenes szoftverét. Telepítjük majd elindítjuk, majd beállítjuk a legfontosabb paramétereket. Ez a board típusa és portja. Néhány típusnál meg kell adni a mikrovezérlőt és annak órajelét is, de az UNO és a Micro esetében ilyen nyűg nincs, ez a sor nem is látszik. Ahol kéri – például a Mega, Nano, Mini – ott egyszerűen csak le kell olvasni a chipről. Ha megvagyunk, el is végeztük a szükséges beállításokat, és kezdhetjük vizsgálni, mit mutat a programozó felülete.

arduino-ide-sett

Maga a szoftver arra lett kitalálva, hogy mindent tudjon: a bal felső sarokban lévő pipa leellenőrzi a kódunkat, és alul, a fekete négyzetben megmondja, hogy mi a baj, míg a nyíl egész egyszerűen feltolja a mikrovezérlőbe.

A programkód minden esetben azonos struktúra szerint épül fel. Már az elején fontos leszögezni, hogy dupla perjellel megjegyzést lehet a kódba szúrni, ami a sor végéig tart, és a program a fordítás során nem veszi figyelembe. Ez borzasztó hasznos funkció, számos eseményt fogok segítségével bemutatni.

Maga a programkód deklarációval indul, ahol megmondjuk, hogy milyen változókat fogunk alkalmazni. Minek mi a típusa, miként tároljuk, hogy működik. Ezzel nem foglalkozunk, elfogadjuk, hogy ott kell lennie és kész.

A setup rész kötelező elem, mindenhol van. A benne lévő kódok – jellemzően alapbeállítások – egyszer, indítás után elsőként futnak le.

A loop résszel is mindig találkozunk – néha többször is -, ez maga az érdemi programrész. Jellemzője, hogy miután a végéhez ér, újra az elejére ugrik és elölről kezdődik a ciklus.

Ugyan mélyebben nem merülünk bele, de azt nem árt tudni, hogy az egyes programelemek elejét és végét, egymásba ágyazottságát onnan tudja a rendszer, hogy kapcsos zárójelbe vannak foglalva. Ha a nagy módosítgatások közepette a programrész végéről lemarad egy-egy, vagy véletlenül több van, az bizony kiállást fog eredményezni, vagyis ellenőrzésnél szól a szoftver, hogy itt bizony ilyen gond adódott, nem lehet feltölteni a firmwaret. Pirossal kiemeli a hibát, néhány esetben pedig azt is megmondja, hányadik sorban kell nézelődni. Ha kijavítottuk a hibát és minden rendben van, megnyugtató fehér összegző szöveggel jelzi, hogy sikeres a művelet, kezdődhet vagy sikeresen lezajlott a feltöltés.

 

arduino-kiallas

arduino-checkok

 

A legtöbb boardon a 0 és 1-es számú digitális láb az RX és TX vonal. Ezekre ledek is vannak kötve, ami villogása jelzi az adatforgalmat. Hasznos dolog, ugyanis látjuk, hogy valóban él a kapcsolat, megy fel a kis programunk. Viszont van egy hátulütője is, mégpedig az, hogy programkódunkban alkalmazva bizony ellehetetlenítheti a felprogramozást. Csak hogy értsd, ez ugyanaz a soros adás és vétel szál, mint amit az USB is használ az Atmega felé (hiszen ezért villog kommunikációkor). Néhány alkalmazásban – mint a korábban bemutatott GPS-es állomásórában a műholdvevővel – folyamatos a perifériákkal való kommunikáció, amit ha ezekre a lábakra teszünk, az bizony csúnyán elronthatja a számítógép soros adatátvitelét. Nincs para, nem romlik el a mikrovezérlő, de a program kiáll, hogy nem sikerült feltölteni a firmwaret. Szerencsére szinte bármely lábat kijelölhetjük eszközeink ki- és bemenetei számára, így marad elég válogatni.

Ennyi elég is mára, a következő részben ezzel a tudással nekiesünk első programunknak, ami az utolsó elméleti etap lesz. Később a könyvtáralkat is áttekintve sorra vesszük azokat a funkciókat, ami megdobogtatja a rádióamatőr szívét: a kijelzőket, potmétereket, rotarykat és még ki tudja mi mindent. Nem foglalkozunk az olyan nagy szavakkal, mint a változók típusai vagy elágazások, a cél csak az, hogy egy idegenből jött programot át tudjunk gyúrni és használatba tudjuk venni úgy, hogy azt egy kicsit magunkénak érezzük.