//Projekt Nightrider
// - Lauflicht wechselt an jedem Ende die Richtung
// Variable aktuelle LED
// Variable für die Richtung
// - LEDs mit Feld verwalten
// - LED-Wechsel alle 200 ms
// - delay ist nicht erlaubt
// - Lauflicht mit linker taste starten
//
// - delay ersetzen durch long zeit = millis();
// - Kritischen Code nur ausführen wenn eine Dauer abgelaufen ist
// - if(millis() - zeit > dauer)
// Kritischer Code;
// zeit = millis();
const int numLEDs = 8;
int ledPins[numLEDs] = {6, 7, 8, 9, 10, 11, 12, 13};
int ledNeu = 0;
int richtung = 1;
unsigned long vorherigeMillis = 0;
const long intervall = 200;
int status = 0;
void setup() {
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], HIGH);
}
pinMode(3, INPUT);
}
void loop() {
unsigned long aktuelleMillis = millis();
long dauer = intervall;
if(digitalRead(1))
status = 1;
if (aktuelleMillis - vorherigeMillis > dauer) {
// Kritischer Code
vorherigeMillis = millis();
digitalWrite(ledPins[ledNeu], LOW);
ledNeu += richtung;
if (ledNeu == 0 || ledNeu == numLEDs - 1) {
richtung *= -1;
}
digitalWrite(ledPins[ledNeu], HIGH);
}
}