====== Lauflicht ======
Die nachfolgenden Programme animieren ein aus mehreren Leuchdioden bestehendes Lauflicht.
Die Leuchtdioden werden an den Pins 2 bis 9 angeschlossen
==== Lauflicht in eine Richtung ====
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);
}
==== Hin- und herbewegendes Lauflicht ====
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);
}
==== Harmonische Schwingung ====
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);
}