Több LED vezérlése for ciklussal
Utolsó felülvizsgálat: 2022.02.04 16:50
Gyakran ismételni szeretne egy kivezetés-sorozatot, és mindegyikkel tenni valamit. Például ez a példa 6 LED-et villogtat amelyek az Arduinóhoz vannak csatlakoztatva, egy for() ciklus segítségével, hogy oda-vissza mozogjon a 2-7 digitális kivezetéseken. A LED-ek egymás után kapcsolódnak be és ki a digitalWrite() és a delay() függvények használatával.
Ezt a példát "Knight Rider"-nek is hívhatjuk egy 80-as évekbeli TV-sorozat emlékére, ahol David Hasselhoffnak egy KITT nevű mesterséges intelligencia-gépe vezette a Pontiacját. Az autót rengeteg LED-del egészítették ki minden lehetséges méretben, amelyek mutatós hatásokat adtak elő. Konkrétan egy kijelzője volt, amely jobbra-balra, egy vonalban pásztázott, amint azt KITT és KARR között ez az izgalmas harc is mutatja. Ez a példa mmásolja KITT kijelzőjét.
Hardver szükséglet
Arduino kártya
6 LED
6 220 ohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör
Csatlakoztasson hat LED-et sorba kötve 220 ohmos ellenállásokkal a kártya 2-7 digitális kivezetéseihez.

Vázlat

A kód
Az alábbi kód azzal kezdődik, hogy egy for()
ciklust használ, hogy a 2-7 digitális kivezetéseket kimenetként hozzárendelje a 6 használt LED-hez. A kód fő ciklusában két for()
ciklust használunk a ciklusváltozó növelésére, egyenként lépkedve a LED-eken, a másodiktól a hetedik kivezetésig. Ha a 7-es kivezetés világít, a folyamat megfordul, és minden LED-en keresztül visszalépeget.
/*
For Loop Iteration
A for() ciklus használatát mutatja be.
Több LED-el világít egymás után, majd visszafelé.
Az áramkör:
- LED-ek a 2-7 kivezetésektől a földig 220 ohmos ellenálláson keresztül.
created 2006
by David A. Mellis
modified 30 Aug 2011
by Tom Igoe
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/control-structures/ForLoopIteration
*/
int timer = 100; // Minél nagyobb a szám, annál lassabb az időzítés.
void setup() {
// használja a for ciklust az egyes kivezetések kimenetként történő inicializálásához:
for (int thisPin = 2; thisPin < 8; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// ciklus a legalacsonyabb számú kivezetéstől a legmagasabbig:
for (int thisPin = 2; thisPin < 8; thisPin++) {
// a kivezetés bekapcsolása:
digitalWrite(thisPin, HIGH);
delay(timer);
// a kivezetés kikapcsolása:
digitalWrite(thisPin, LOW);
}
// ciklus a legmagasabb számú kivezetéstől a legalacsonyabbig:
for (int thisPin = 7; thisPin >= 2; thisPin--) {
// a kivezetés bekapcsolása:
digitalWrite(thisPin, HIGH);
delay(timer);
// a kivezetés kikapcsolása:
digitalWrite(thisPin, LOW);
}
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.