// Das Array mit den belegten Pins. Die Nullen vorne und hinten sind ein Trick, // damit sich das Lauflicht, dass sich über mehrere LEDs erstreckt, komplett // aus dem Bild laufen kann. int pinArray[] = {0,0,0,6,7,8,9,10,11,12,13,0,0,0}; // Die Anzahl der Elemente im Array. Die Elemente sind dann über die //Indizes [0] bis [13] zu erreichen. int pinCount = 14; // Der aktive Eintrag des Array, pinArray[2] ist das 3(!) Element. Das wird // zum Start gesetzt, die beiden hinterherlaufenden Lichter kriegen dann die // Einträge [1] und [0], also sind zum Start alle // anzusprechenden Pins = 0 int activePin = 2; // Die Laufrichtung, in der für den nächsten Schritt zum activePin addiert // wird. dx ist +1 (aufwärts im Array) oder -1 (abwärts im Array) int dx = 1; // Der vom Potentiometer gelieferte Wert int poti = 0; // Mindestverzögerung zwischen zwei Schritten des Lauflichts. // Mit z.B. mintime=20 kann man die maximale Geschwindigkeit begrenzen. int mintime = 0; // setup() wird einmal bei Programmstart ausgeführt void setup() { // Serielle Übertragung starten Serial.begin(9600); // Durch das Array gehen, alle Pins auf OUTPUT setzen außer es kommt 0. for (int i=0; i< pinCount; i++) { if (pinArray[i] != 0) { pinMode(pinArray[i], OUTPUT); } } } // loop() wird während des Programmablaufs endlos immer wieder aufgerufen void loop() { // Zuerst schalten wir alle Pins of Array auf LOW, als Hilfsfunktion // verwenden wir digitalWriteNot0(), damit die Array-Einträge mit // Wert 0 ignoriert werden. for (int i=0; i 0) { digitalWrite(pin, state); } }