For ciklus iteráció (más néven a Knight Rider)

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.