Talán ez az utolsó olyan konstrukció, mely az Arduino programozás elsajátítását szolgálja. Mivel a 15 db-os, programozható RGB LED-csík eleddig kimaradt a szórásból, most erre alapozva raktam össze ezt az egyszerű szerkezetet.
A LED-ek öt variációban (A-tól E-ig) gyulladnak ki, alszanak el, váltanak színt. A kívánt változatot - melynek betűjele megjelenik a LED mátrixon - infra távirányítóval lehet kiválasztani, és egy mikró szervomotor által mozgatott kar is (kiegészítő) szerepet kapott.
Az első négy variációban a csík LED-jei a három alapszínnel (Red, Greeen, Blue), míg az ötödikben e három alapszínből véletlenszerűen származtatott színekkel világítanak:
A : minden LED azonos színnel (R) világít, ezt két színváltás (G és B) követi.
B: 3-as csoportokban 0,5 mp után színt váltanak, ez ötször ismétlődik.
C: 3 db LED eltérő színnel világít és futófényként halad végig ötször.
D: a nem világító középső LED-re pontszimmetrikusan világít a többi, majd innen kiindulva az összes LED fokozatosan kialszik.
E: minden LED véletlenszerű színekkel világít 0,5 mp-ig, ez 20-szor ismétlődik.
Az Arduino programot is feltöltöttem a Minta programok aloldalra.
Ezt az egyszerű szerkezetet egy olyan Arduino program működteti, mely azon alapszik, hogy a korábbról már ismert Gyro szenzor egy DC motort vezérel.
A szenzort egy billenő karhoz erősítettem úgy, hogy az Y tengelynek a vízszintessel bezárt szöge legyen a fő paraméter.
Első körben - a vezérlőpanel bekapcsolása után, az érintő (touch) szenzor megérintésekor - a kar egy tetszőleges helyzetből indulva kis lépésekkel közelít a vízszintes helyzethez. A pillanatnyi szöget a számkijelző mutatja fokokban. A beállás elvárt pontossága ± 0,5° . Ez a folyamat a programban csak egyszer fut le.
Ezt követően a touch szenzor megérintésekor a kar véletlenszám generátorral előállított mértékben és irányban elfordul. A kijelző ilyenkor a generált végkitérés szögét mutatja. Kis késleltetés után a kar visszatér a nagyjából vízszintes helyzetéhez., és a kijelző 0-ra vált. Ez a fázis akárhányszor ismételhető, a videóban erre három példa látható.
A 4 LED-es kijelzőnek csak annyi szerepe van, hogy az éppen világító LED-ek pozíciója és színe az éppen futó fázist mutassa.
A Libikóka Arduino programja a Minta programok almenüben megtalálható.
Na, erre mondta életem párja, hogy nem olcsó játék...
Ez a kis játékos szerkezet nagyon egyszerű felépítésű: az emberfejet imitáló LED mátrixot egy kettős csuklóhoz rögzítettem, melyet két mikró szervomotor mozgat. Így a fej bólintani és billenteni is tud. Ezt a kombót pedig egy normál szervomotor függőleges tengely körül ide-oda forgatni tudja.
A beépített hangerő és fényerő érzékelők teszik lehetővé az egyoldalú "kommunikációt" az Emoji-val. Persze a kiadott hangparancsok jelentését nem érti, itt csupán a sorrendiségnek van szerepe.
A videóban a már ismert, de védhetetlen torzítás miatt a kellő pillanatban a jobb felső sarokban megjelenítem a kigyulladó LED-ek grafikus "térképét" is. (A program egyébként a megjelenítéshez ez alapján állítja elő a 16 elemű karaktertömböket (stringeket).
Az itt ismertetett példában a léptető motor helyett egy encoder motor programozásának eredménye látható.
És ha már Arduino programozásról van szó, akkor tegyük azt érdekesebbé!
Pontosabban, az egyszerű célkitűzést bolondítsuk meg egy kicsit:
csináljuk bonyolultabban és látványosabban!
A 3. részben ismertetett szerkezetet átalakítottam: a léptető motor helyett itt a paravánnal ellátott szánt egy ún. encoder motor mozgatja. Ennek pozicionálhatósága kevésbé pontos, de a hibahatár az egész cm-re történő kerekítést nem haladja meg, így ebben az esetben észrevehetetlen. Viszont a beállása hosszabb késleltetést igényel, ezért a videóban a működést bemutató részt felgyorsítottam.
És bevetettem egy trükköt is: a szán nem áll meg azonnal a beállított végpozíciónál, hanem azon túlhalad, majd visszamegy egy megelőző helyzetig, és így tovább. A kívánt végpozíciót folyamatosan rövidülő szakaszokkal éri el úgy, hogy a program az oda- vissza mozgások hosszát 1-1 cm-el csökkenti, a kezdeti 6 cm-től 1 cm-ig, vagyis "zárul az olló". A páros szám hosszúságú szakaszok szimmetrikusak, a páratlanok aszimetrikusak a végpozícióhoz képest. Ezt szemlélteti az alábbi ábra:
Ebben a fázisban egy szánszerkezetre, az infra távirányítóra, a LED mátrixra és a négy digites számkijelzőre alapozva az volt a célom, hogy olyan egyéb elemeket is használjak, melyeket - vagy a kombinációjukat - még nem programoztam az Arduiono rendszerben.
Így született meg a videó első részében látható szerkezet. Itt a szán - amelyet egy DC motor hajt - alternáló mozgást végez két végállás kapcsoló (mikrókapcsoló) között. Az indulás iránya a távirányítóval adható meg, az aktuális állapotot a LED mátrixon láthatjuk. (A "P" karakter az álló, vagyis a parkoló helyzetre utal.)
A második eset kissé már bonyolultabb. A szánra egy "paravánt" erősítettem, melynek helyzetét az ultrahangos távmérő mérni tudja. A szánt léptetőmotor mozgatja 1 cm és 15 cm közötti tartományban. A kívánt értéket az infra távirányítóval lehet betáplálni, mely a LED mátrixon jelenik meg. Tartományon kívüli számot nem fogad el a program. Ha a paraván a megadott helyzetnél megáll, azt a távmérő leellenőrzi, a mért értéket a négydigites kijelzőn láthatjuk. Ekkor a két kijelzőnek azonos számokat kell mutatnia. (Itt jegyzem meg, hogy csak kerekített értékekkel dolgozik a program.) Jelen esetben két kihívással kellett megbirkóznom:
Két szám egymás utáni bevitele (nem megfelelő érték esetén ennek megismétlése).
A megteendő távolság és a léptető motor lépéseinek száma közötti függvénykapcsolat meghatározása és programozása.
A videó utolsó részében a távmérés a szán mozgása során folyamatos. Azonban ekkor a programnak párhuzamosan kell vezérelnie a léptetőmotort és a távolság mérést/kijelzést, ami szemmel láthatóan lassabb mozgást eredményez. Nos, ennek kiküszöbölésén még dolgozni kell. De mint tudjuk: "a jó pap holtáig tanul"...
A három részes videóban elsőként két DC motor, majd egy szervo- és léptetőmotor vezérlése látható. A két első részben érintő szenzorokat használok, a harmadikban pedig infra távirányítót. Feliratokkal igyekeztem egyértelművé tenni, hogy éppen milyen egységeket milyen módon vezérelek.
Megtartva a "próbapad" technikát, most már mozgó elemek (DC motorok, szervó motor, léptető motor) Arduino progamozását tanulom. Nagymértékben támaszkodom a Makeblock részegységek példa programjaira, hiszen azoknak olyan speciális utasítás készletei vannak, melyeket az alap C/C++ programnyelv nem tartalmazza. Persze nem minden sikerül elsőre, de nagy előny, hogy a programot a mikrokontrollerbe feltöltve az eredményt azonnal láthatom. Mint mindenre, erre is igaz, hogy ha leesik a tantusz, akkor már sokkal egyszerűbb a kitűzött célt elérni.
Közben a LED mátrix lehetőségeivel is kísérleteztem: nevezetesen nem csak szokványos karaktereket, hanem grafikákat is meg lehet rajta jeleníteni. Pl. ilyet, mely a videóban is látható:
Ezek tényleg az első lépések. Semmilyen motor illetve egyéb mozgó alkatrész nincs, csupán áramkörökből (kijelzők, érzékelők) felépített rendszeren ismerkedem az Arduino gyönyöreivel...
Első lépésben készítettem egy "próbapadot", melynek bal oldalára két kijelzőt építettem be: egy új beszerzésű 8x16-os LED mátrixot valamint a már ismert 7 szegmenses számkijelzőt. A jobb oldalán három áramkör található: a már szintén ismert hangérzékelő és két érintő szenzor. Hátul középen van az "agy", vagyis az Arduino alapú mikrokontroller a 8 db, beépített RJ25 porttal. (A Makeblock gyártmányú MeOrion.) Ebbe kell USB kábel révén feltölteni fordítás után a számítógépről az Arduino IDE fejlesztő környezetben megírt programokat.
A videóban 4 egyszerű példát láthatunk. Sorrendben:
A LED mátrix váltakozva jeleníti meg a "J" és a "B" karaktereket.
Amíg a bal oldali érintő szenzor aktív, addig a "B", amíg a jobb oldali aktív, addig a "J" karakter jelenik meg a LED mátrixon, egyébként egy "-" jel.
Másodperc pontossággal számolja, meddig aktív a (jobb oldali) érintő szenzor. Ezen idő alatt a mátrixon a "BE" felirat látható, egyébként "KI"-t ír ki, a számkijelzőn pedig 0 jelenik meg.
Folyamatosan kijelzi a hangerőt. Egy bizonyos küszöbérték alatt "Lo", afölött pedig a "Hi" felirat látható.
Megjegyzések:
A LED mátrix kék színnel világító LED-jeit egy opálos, fehér plexi takarja. Sajnos a videokamera pont ezt a spektrumot nem szereti, ezért torzítanak a videóban a feliratok.
A LED mátrix max. 3 db teljes karaktert tud egyszerre megjeleníteni, ezért az utolsó példában valójában a "Hi" az angol high-t, a "Lo" pedig a low-t jelenti.