Arduino: Blink - Villogó
Forrás: arduino.cc/en/Tutorial/Blink
A programkód C nyelven íródott és 3 fő részből áll. Az első részben töltjük be a szükséges modulokat, deklaráljuk a paramétereket (változókat és állandókat). A második rész a setup() függvény, amely a program elején egyszer fut le, a harmadik rész pedig a loop() fv, amelyben megadott kódsorozat addig ismétlődik, amíg működik az áramkör.
/* Blink - Villogó Bekapcsol egy LED-et egy másodpercre, majd egy másodpercig kikapcsolja, és ez ismétlődik. A legtöbb Arduino panelen található LED-es visszajelzés. A Nano-n 4db LED található. Az első LED a D13 lábbal van össze kapcsolva, a második a power LED, a harmadik és a negyedik pedig a D1 és a D0 lábbal ellentétesen van kapcsolva. Ez azt jelenti, hogy akkor világítanak, ha a D1, illetve a D0 kimeneten LOW/alacsony jel megy ki. Tehát a D0, D1 és a D13 kimenetek használatával kipróbálhatjuk a Nano-t külső LED áramkör nélkül is:) A forráskódban a per csillag és csillag per jelek közé írt szöveg többsoros kommentet jelent, nem része a programnak. Ugyanígy a per per jelek mögé írt szöveg is komment, de csak egysoros lehet */ // ide kerülne a változók deklarálása, de ebben a programban nincsennek. // A setup függvény csak egyszer fut le az áramkör bekapcsolásakor, vagy a reset megnyomásakor. Itt kell elvégezni a kezdeti beállításokat. void setup() { pinMode(13, OUTPUT); // a pinMode() fv kimenetnek állítja be a 13-as lábat. } // A loop függvény lefut, lefut, és újra lefut mindaddig, amíg működik az áramkör. void loop() { digitalWrite(13, HIGH); // A digitalWrite fv a 13-as lábra HIGH/magas jelet (5V-ot) kapcsol, ezért világít a LED delay(1000); // delay() fv vár 1000ms-ot, azaz 1 másodpercet digitalWrite(13, LOW); // A 13-as lábra LOW/alacsony jel (0V) kerül, ezért a LED kikapcsol delay(1000); // vár 1 másodpercet }
Az előbbi forráskód kommentek nélkül:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
Ugyanez változóval:
const int ledkimenet = 13; // szám típusú állandó létrehozása int idotartam = 1000; // szám tipusú változó létrehozása void setup() { pinMode(ledkimenet, OUTPUT); } void loop() { digitalWrite(ledkimenet, HIGH); delay(idotartam); digitalWrite(ledkimenet, LOW); delay(idotartam); }
A változók/konstansok használatának előnye, hogy paraméterezhetővé válik a program és könnyebb, gyorsabb lesz utólag megváltoztatni a beállításokat. A konstans és a változó között pedig az a különbség, hogy a változót akár menet közben a programon belül is meg lehet változtatni, a konstanst pedig nem.
Két LED használata:
const int ledkimenet1 = 1; const int ledkimenet2 = 0; int idotartam = 1000; void setup() { pinMode(ledkimenet1, OUTPUT); pinMode(ledkimenet2, OUTPUT); } void loop() { digitalWrite(ledkimenet1, HIGH); digitalWrite(ledkimenet2, LOW); delay(idotartam); digitalWrite(ledkimenet1, LOW); digitalWrite(ledkimenet2, HIGH); delay(idotartam); }
Egy LED véletlenszerűen meghatározott időtartamokkal (időtartam változó menet közbeni változtatásával):
const int ledkimenet = 13; // szám típusú állandó létrehozása int idotartam = 1000; // szám tipusú változó létrehozása void setup() { pinMode(ledkimenet, OUTPUT); } void loop() { digitalWrite(ledkimenet, HIGH); idotartam = random(1,31)*100; // A random fv 1-től 30-ig terjedően generál egy egész számot // százzal megszorozva 0.1 és 3 másodperc közötti számot kapunk delay(idotartam); digitalWrite(ledkimenet, LOW); idotartam = random(1,31)*100; delay(idotartam); }