Közlekedési lámpák akcióban

|

A hardverprogramozás meglehetősen bonyolult szakterület, így a kezdeti szárnypróbálgatásokhoz érdemes valami egyszerűbb projektet választani, a LED-es lámpák vezérlésénél pedig nem igazán találunk jobb kiindulási alapot.

A kódunk feltöltése előtt mindenképp ügyeljünk arra, hogy az összes komponenst a megfelelő csatlakozási pontokhoz kapcsoljunk, ha ez sikerült, kezdhetjük is begépelni a C++ nyelven írt programunkat. A könnyebb átáláthatóság érdekében címkézzük meg színek szerint a portokat (int piros = 10; int sarga = 8; int zold = 6; ) majd az indítást követően lefutó setup() függvényben helyezzük el egy-egy hivatkozást, mely a portokra mutat (piros esetén a kód: pinMode(piros, OUTPUT); ).

Ezt követően csupán annyit kell tennünk a lámpák világításának a szabályozásához, hogy a digitalWrite() utasítás első paraméterének megadjuk, hogy melyik LED-en szeretnénk végrehajtni a kapcsolgatást, majd második paraméterének pedig azt, hogy fel (HIGH) vagy éppen le (LOW) kívánjuk kapcsolni a világítást. Tehát a piros lámpánk bekapcsolása a digitalWrite(piros, HIGH); utasítással hajtható végre. Természetesen a megfelelő aktivitáshoz alaposan megtervezett időzítésre is szükségünk lesz, ehhez pedig a delay() utasítást érdemes alkalmaznunk a programkódunk megfelelő pontjain, melynek zárójelei között ezredmásodpercben adhatjuk meg a késleltetés időtartamát. Vagyis egy 5 másodperces időeltoláshoz a delay(5000); utasírást kell a parancsunkba ékelnünk.

Extra kiegészítések

Most, hogy a lámpánk automatizált működésével már elkészültünk, ideje kicsit bonyolítanunk a kódunkon, méghozzá azzal, hogy egy gomb segítségével szimuláljuk egy gyalogos érkezését. Ilyen esetben a gombnyomást követően beérkező impulzus pirosra váltja a lámpánkat, majd egy néhány másodpercnyi időre úgy is hagyja, hogy a gyalogosunk átérjen a megfelelő oldalra. A plusz kapcsoló bekötésénél elsődlegesen a fényforrások esetén is elvégzett kiindulási lépést hajtsuk végre, vagyis adjuk meg kódunknak, hogy mely porton keresse a gombot (12 -es port esetén ezt az int gomb = 12; utasítással érhetjük el), majd ezután egy rövidke sor begépelésének segítségével állíthatjuk a számunkra szükséges beolvasási módra az adott csatlakozót ( pinMode(gomb, INPUT); ). Ha ezzel elkészültünk, adjuk meg alapértelmezett pozíciónak a zöld lámpa világító státuszát ( digitalWrite(green, HIGH); ). Ezután a loop függvény belsejében egy ha utasítás használatával figyeljük a gombnyomást és ha ez megtörténik (tehát a digitalRead(button) == HIGH ) váltson szépen fokozatosan sárgára, majd pirosra a lámpa és pár másodperc után vissza zöldre. Ehhez akár használhatjuk az előzőekben megírt kódunkat is. Természetesen ezzel párhuzamosan a gyalogos átkelőhöz is szerelhetünk fel lámpákat, itt pedig a fényeknek csak annyit kell átadnunk, hogy a megfelelő időpontban aktiválódjanak.

Mivel ide elegendő két led így ezt az apró bővítést viszonylag gyorsan megvalósíthatjuk, igaz így már némileg bonyolódik a kódunk, hisz több szálon is kezelnünk kell a zöldre váltást. Természetesen még tovább fejleszthetjük a kódunkat, ha például egy valóshoz meglehetősen közeli szituációba helyezzük lámpáinkat, ahol egy kereszteződésben azt modellezzük, hogy miként kell aktiválnunk a LED-lámpákat, ha azt szeretnénk elérni, hogy a zöld jelzésekor a második, három LED-es lámpánk piros színben tündököljön. Persze ha szeretnénk, itt is eljátszogathatunk az időzítésekkel, hisz csak arra kell figyelnünk, hogy mikor az egyik lámpát bekapcsoljuk, a másikat vele párhuzamosan kapcsoljuk le. Ezek után még a végtelenségig bonyolíthatjuk kódunkat, ám ezen alapokra már gond nélkül építhetünk, ha a fényes diódákkal kívánunk foglalkozni.

Szenzorokkal bővítve

Valós közlekedési szituációkat is szimulálhatunk, ha készletünkben egy-egy szenzor is helyet kapott, hisz segítségükkel még látványosabb végereményt kap a LED-es bemelegítőnk. Természetesen minden egyes extra kiegészítőnk képes lehet némileg felbolygatni az addig működőképes kódunkat, így csak óvatosan emeljük be őket az érzékeny hardveres ökoszisztémánkba. Ha pedig nem csak öncélúan kívánunk kísérletezni a lámpáinkkal, hanem valós helyzeteket szeretnénk szimulálni pislákolva megtestesülő kódunkkal, tökéletes helyet találhatunk egy terepasztalba építve, mellyel akár a környezet automatizálásának alapjait is könnyedén lefektethetjük.

Oldalak: 1 2

Úgy tűnik, AdBlockert használsz, amivel megakadályozod a reklámok megjelenítését. Amennyiben szeretnéd támogatni a munkánkat, kérjük add hozzá az oldalt a kivételek listájához, vagy támogass minket közvetlenül! További információért kattints!

Engedélyezi, hogy a https://www.helloworldonline.hu értesítéseket küldjön Önnek a kiemelt hírekről? Az értesítések bármikor kikapcsolhatók a böngésző beállításaiban.