![]() | Szerzők: Makan Gergely, Somogyi Anikó, Dr. Mingesz Róbert és Mellár János A tananyag elsősorban az Elektronikai alapok programozóknak és a Digitális architektúrák című kurzusokhoz készült, az elsajátításához szükséges idő: 45 perc. |
Összefoglalás
A lecke a LED-ek Arduinóval történő meghajtásáról szól. Az Arduinón lévő LED használatához megfelelően be kell állítani a LED-et meghajtó mikrovezérlő kivezetést, majd pedig írni kell a kimenetet. Ezeket a lépéseket az Arduino függvényekkel egyszerűen megtehetjük. Külső LED-et tetszőleges kivezetésre köthetünk, kétféle logikai módban. Soros áramkorlátozó ellenállást mindig szükséges bekötni. A LED-eket tetszőleges periódusidővel lehet villogtatni megfelelő program írásával.
Tartalom
- Ismétlés
- LED-ek az Arduinón
- Kivezetés konfigurálása
- Programozás
- Külső LED bekötése
- LED villogtatása
- LED-ek kétféle bekötési módja (szimuláció)
- Arduino felprogramozása, LED villogtatása (videó)
- Önellenőrző kérdések
Ismétlés
- LED-ek működése, használata
- Az Arduino bemutatása
LED-ek az Arduinón
Az Arduino UNO áramköri lapon található egy programozható LED (programból be- és kikapcsolható LED), amit USER LED-nek is szoktak nevezni és a “L” felirat tartozik hozzá a áramköri lapon. Ezen kívül található még 3 db LED az áramköri lapon. Ebből egy a tápfeszültség meglétét jelzi (“ON”), kettő pedig a számítógéppel való kommunikációt jelzi és villognak a kommunikáció ideje alatt (az “RX”: a bejövő, a “TX”: a kimenő üzenetek esetén).

Ahhoz, hogy használni tudjuk a programból a USER LED-et, először tudnunk kell, hogy hányas számú kivezetésre van kötve. Az UNO lábkiosztásában megkeresve a LED szimbólumát kiderül, hogy a 13-as kivezetésre van kötve.
Kivezetés konfigurálása
Egy kivezetést a következő módokban használhatunk az UNO esetén:
- digitális bemenet
- digitális kimenet
- analóg bemenet
A konfigurálást a setup
függvényben szokás elvégezni. Ehhez a pinMode(pin, mode)
függvényt használhatjuk. A függvény első paramétere a kivezetés száma, amit konfigurálni szeretnénk, a második a mód, amiknél használhatjuk az INTPUT
(digitális bemenet), az INPUT_PULLUP
(digitális bemenet felhúzó ellenállással) vagy az OUTPUT
(digitális kimenet) konstansokat. Ha egy kivezetéshez nem írunk pinMode
függvényt, akkor az analóg bemenetként használható.
Programozás
Ha használni szeretnénk a panelon lévő LED-et, akkor azt digitális kimenet módba kell konfigurálnunk a pinMode
függvénnyel. Ezt a pinMode(13, OUTPUT);
függvényhívással tehetjük meg, ami tehát a 13-as kivezetést digitális kimeneti módba állítja. Miután ezt megtettük a digitalWrite(pin, value)
függvénnyel tudjuk logikai alacsonyra (a LOW
konstanssal) vagy logikai magasra (a HIGH
konstanssal) állítani a kimenetet. Ezt a setup
függvényben vagy a loop
függvényben is szokás használni. A következő függvényhívással például logikai magas jelszintet, tehát 5 V-os feszültséget tudunk kiadni a 13-as kivezetésre: digitalWrite(13, HIGH);
. Ennek hatására a USER LED világítani kezd.
Külső LED bekötése
Külső LED-et tehát bármelyik kivezetésre köthetünk (ha a kódban digitális kimenetként konfiguráltuk). Fontos, hogy ebben az esetben (mint azt már korábban láthattuk) szükséges egy soros áramkorlátozó ellenállás is, hogy ne terheljük túl a kimenetet és a LED megengedett maximális áramerősségét se lépjük túl.
Kétféle módon vezérelhetjük a külső LED-et: úgynevezett pozitív (vagy egyenes) és negatív (vagy fordított) logikai módban, attól függően, hogy hogyan kötöttük be az Arduinóba. Az pozitív logikai mód azt jelenti, hogy a LED akkor világít, ha a hozzá kapcsolt kimenetre logikai magas értéket írunk, a negatív logikai bekötés esetén pedig akkor világít a LED, ha logikai alacsony értéket írunk a kimenetre. Ebben az esetben fordítva, a LED katódjára kötjük digitális kimenetet és az anódra pedig a logikai magas szintnek megfelelő fix feszültséget, az UNO esetén 5 V-ot. Tehát amikor logikai magasat írunk a kimenetre, akkor nem folyik áram, hiszen a LED mindkét kivezetésén ugyanakkora feszültség található, ha pedig logikai alacsonyat, akkor az azt jelenti, hogy egy a digitális kimenetbe befolyó áram indul el és a LED világítani fog. Ezek alapján látható, hogy a USER LED pozitív (egyenes) bekötésű.
A következő szimulációban a kétféle LED bekötési mód látható. A szimulációt elindíthatjuk a Szimuláció indítása gombbal és a külső LED-ek világítani fognak. A Kód gombra kattintva megnézhetjük a pozitív és negatív logikájú bekötésekhez tartozó kódot.
LED villogtatása
Az Arduino használata során fontos tudni, hogy egy digitális kimenet egészen addig megőrzi az aktuális állapotát, amíg meg nem változtatjuk a programból. Tehát, ha bekapcsolunk egy LED-et, akkor az egészen addig világítani fog, amíg ki nem kapcsoljuk, nem billen vissza egy adott idő után. Ha egy LED-et villogtatni szeretnénk, akkor tehát folyamatosan be és ki kellene kapcsolni az adott digitális kimenetet. Ezt a loop függvényben meg is lehet tenni két függvényhívással:
void loop()
{
digitalWrite(13, HIGH);
digitalWrite(13, LOW);
}
Ez a kód valóban villogtatni fogja a USER LED-et, viszont olyan gyorsan, olyan nagy ismétlési frekvenciával, hogy az emberi szem nem tudja lekövetni és csak annyit látunk, hogy a LED folyamatosan világít. Szükség van tehát valamilyen késleltetésre, ami valamennyi ideig feltartja a kód futását. Ezt a delay(ms)
függvénnyel tehetjük meg. A függvény egyetlen paramétere a késleltetés nagysága, amit milliszekundumban adhatunk meg. Egészítsük ki az előző kódot kiegészítve a delay
függvénnyel:
void loop()
{
digitalWrite(13, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
A fenti kód úgy működik, hogy miután bekapcsoltuk a LED-et a delay(1000)
függvényt meghívva 1 másodpercet késleltetjük a programot. A LED addig világít, amíg ki nem kapcsoljuk ez pedig pont 1 másodperc múlva következik be, majd megint várakozunk 1 másodpercet és a loop
függvény (ciklus) előröl kezdődik. Tehát 1 másodpercig világít a LED, majd 1 másodpercig nem világít a LED. Ez T=2 s-os periódusidőnek felel meg, ami pedig 0,5 Hz-es frekvenciának felel meg.
A következő szimulációban a USER LED-et láthatjuk villogni 0,5 Hz-es frekvenciával (a Tinkercadben alapesetben ez a kód szerepel az Arduinón):
A következő videóban a USER LED bekapcsolásához szükséges lépéseket láthatjuk valódi hardverrel:
A teljes videó forrása: http://www.inf.u-szeged.hu/miszak/arduino-alkalmazasa-a-fizika-es-az-informatika-oktatasaban/
További segédanyagok a digitális kimenetek tulajdonságaihoz: http://dx.doi.org/10.6084/m9.figshare.11971794
Az önellenőrzéshez következzen egy rövid kvíz a legfontosabb résztémákból: