Digital Hourglass Project (Starter-Kit,Projekt 8)

Hey everybody,

the digital hourglass works as it should (08 Starter Kit: Digital Hourglass - YouTube)

I want to add a new feature: after it finished counting for the first time (and all leds are shining until I tilt the board) the leds should blink automatically and continue shining (until I tilt the board).

But that does not work yet - after the process (counting, all leds are shining, blinking) the leds don’t come back to shining- they started blinking all over the place.

Can you please check the code and tell me what the problem is?

Thanks!

const int switchPin = 8; //Konstante für den Kippschalter
unsigned long previousTime = 0; //Variable für die Zeit (merkt sich, wann die LED zuletzt geändert wurde); unsigned akzeptiert nur positive Werte
unsigned long currentTime = 0;
unsigned long time;

int switchState = 0; //Variable für aktuellen Zustand des Schalters
int prevSwitchState = 0; //Variable für vorangegangenen Zustand des Schalters

int led = 2; //Variable zählt mit, welche LED als nächstes dran ist und beginn mit 2

long interval = 500; //Variable für Pause zwischen den LED-Anschaltungen

void setup() {
Serial.begin(9600);

// digitale Pins2-7 für LEDs werden als Ausgänge definiert:
for(int x = 2; x<8;x++){
pinMode(x, OUTPUT);
}

pinMode(switchPin, INPUT); //Festlegung von switchPin als Eingang
}

void loop() {
//Überprüfung der Startzeit:
unsigned long currentTime = millis();

//Auswertung der verstrichenen Zeit:
if(currentTime - previousTime > interval) {

digitalWrite(led, HIGH); //neue LED wird eingeschaltet
led++;
Serial.print("Led: ");
Serial.println(led);
delay(500);

if (led == 8){ //Einschaltstatus der letzten LED wird gecheckt
for(int i=0; i<=1; i++) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);

delay(500);

digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);

delay(500);

digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);

delay(500);
}
switchState = digitalRead(switchPin);
if(switchState == prevSwitchState){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
}
}
switchState = digitalRead(switchPin); //nach Check der Zeit wird Zustand des Schalters in Erfahrung gebracht und in die Variable switchState geschrieben

if(switchState != prevSwitchState){ //Check, ob sich Pos. des Schalters verändert hat. Ja: Ausschalten aller LEDs
for(int x = 2;x<8;x++){
digitalWrite(x, LOW);
}
led = 2; //Variable led auf ersten Pin zurückgesetzt
previousTime = currentTime; //Timer beginnt von vorn
}
prevSwitchState = switchState; //Schalterzustand wird neu abgespeichert und im nächsten Durchlauf mit switchState verglichen
}

Please follow the advice on posting a programming question given in Read this before posting a programming question

In particular note the advice to Auto format code in the IDE and to use code tags when posting code here as it prevents some combinations of characters in code being interpreted as HTML commands such as italics, bold or a smiley character, all of which render the code useless