Die nachfolgenden Programme animieren ein aus mehreren Leuchdioden bestehendes Lauflicht.
Die Leuchtdioden werden an den Pins 2 bis 9 angeschlossen
const int DELAY_MS = 500; const int PIN[] = { 2, 3, 4, 5 }; const int PIN_COUNT = 4; int currentLed; void setup() { int i = 0; while (i < PIN_COUNT) { pinMode(PIN[i], OUTPUT); i = i + 1; } currentLed = 0; digitalWrite(PIN[currentLed], HIGH); } void loop() { digitalWrite(PIN[currentLed], LOW); currentLed = currentLed + 1; if (PIN_COUNT <= currentLed) { currentLed = 0; } digitalWrite(PIN[currentLed], HIGH); delay(DELAY_MS); }
Bei dieser Variante bewegt sich das Lauflicht hin und her.
const int DELAY_MS = 100; const int PIN[] = { 2, 3, 4, 5, 6, 7, 8, 9 }; const int PIN_COUNT = 8; int currentLed; int dir; void setup() { int i = 0; while (i < PIN_COUNT) { pinMode(PIN[i], OUTPUT); i = i + 1; } currentLed = 0; dir = 1; digitalWrite(PIN[currentLed], HIGH); } void loop() { digitalWrite(PIN[currentLed], LOW); currentLed = currentLed + dir; if (currentLed < 0 || PIN_COUNT <= currentLed) { dir = -dir; currentLed = currentLed + dir; } digitalWrite(PIN[currentLed], HIGH); delay(DELAY_MS); }
Bei dieser Variante stellt die Bewegung eine harmonische Schwingung dar.
const int DELAY_MS = 100; const int PIN[] = { 2, 3, 4, 5, 6, 7, 8, 9 }; const int PIN_COUNT = 8; int currentLed; int dir; void setup() { int i = 0; while (i < PIN_COUNT) { pinMode(PIN[i], OUTPUT); i = i + 1; } currentLed = 0; dir = 1; } void loop() { digitalWrite(PIN[currentLed], LOW); currentLed = currentLed + dir; if (currentLed < 0 || PIN_COUNT <= currentLed) { dir = -dir; currentLed = currentLed + dir; } digitalWrite(PIN[currentLed], HIGH); double maxAmp = PIN_COUNT / 2.0; double currAmp = currentLed - maxAmp; delay(DELAY_MS * abs(sin(currAmp / maxAmp)) + 100); }