Hi guys!
So I figured out how to use a push button as a switch using code I found online. The if function tests for the buttonState and then activates one of the LED sequences.
Inside this if function is another if function, which contains the 2 sequences. Inside the else the LED´s are constantly on, which is fine and works well. If I press the button the blinking sequence is executed, which also works fine. But I want the blinking to loop until I press the button again.
I tried using a while function for the blinking sequence but at the end the state is set back to LOW, so that doesnt work.. Does anybody have an idea how to do this? So I can use the button to change between static light and my blinking sequence?
Thanks in advance!
Tim
// the setup function runs once when you press reset or power the board
int ledpinhintenrot4 = 13;
int ledpinhintenblau1 = 12;
int ledpinhintenblau2 = 11;
int ledpinhintenblau3 = 10;
int ledpinhintenblau4 = 9;
int ledpinhintenrot1 =8;
int ledpinhintenrot2 =7;
int ledhintenrot=4;
int ledpinvorneweis=5;
int ledpinhintenrot=6;
int buttonPower = A5;
int buttonInput = A3;
int state =0;
long time=0;
long i= 1;
long debounce = 200;
int buttonState =0;
int previous = LOW;
void setup() {
// initialize digital pin LED_BUILTIN as an output.int
pinMode(ledpinhintenblau1, OUTPUT);
pinMode(ledpinhintenblau2,OUTPUT);
pinMode(ledpinhintenblau3,OUTPUT);
pinMode(ledpinhintenblau4, OUTPUT);
pinMode(ledpinhintenrot1,OUTPUT);
pinMode(ledpinhintenrot2,OUTPUT);
pinMode(ledpinhintenrot4,OUTPUT);
pinMode(ledpinvorneweis,OUTPUT);
pinMode(ledpinhintenrot,OUTPUT);
pinMode(ledhintenrot,OUTPUT);
pinMode(buttonPower,OUTPUT);
pinMode(buttonInput,INPUT);
}
void loop() {
buttonState = digitalRead(buttonInput);
digitalWrite(buttonPower,HIGH);
if (buttonState == HIGH && previous == LOW && millis() - time > debounce) {
if (state == HIGH) {
digitalWrite(ledpinhintenblau1, HIGH);
digitalWrite(ledpinhintenblau2,HIGH);
digitalWrite(ledpinhintenblau3,HIGH);
digitalWrite(ledpinhintenblau4,HIGH);
digitalWrite(ledpinhintenrot1, HIGH);
digitalWrite(ledpinhintenrot2,HIGH);
digitalWrite(ledpinhintenrot4,HIGH);
digitalWrite(ledpinvorneweis,HIGH);
digitalWrite(ledpinhintenrot,HIGH);
digitalWrite(ledhintenrot,HIGH);
delay(200);
digitalWrite(ledpinhintenblau1, LOW);
digitalWrite(ledpinhintenblau2,LOW);
digitalWrite(ledpinhintenblau3,LOW);
digitalWrite(ledpinhintenblau4,HIGH);
digitalWrite(ledpinhintenrot1, HIGH);
digitalWrite(ledpinhintenrot2,HIGH);
digitalWrite(ledpinhintenrot4,HIGH);
digitalWrite(ledpinvorneweis,HIGH);
digitalWrite(ledpinhintenrot,HIGH);
digitalWrite(ledhintenrot,HIGH);
delay(100);
digitalWrite(ledpinhintenblau1, HIGH);
digitalWrite(ledpinhintenblau2,HIGH);
digitalWrite(ledpinhintenblau3,HIGH);
digitalWrite(ledpinhintenblau4,HIGH);
digitalWrite(ledpinhintenrot1, HIGH);
digitalWrite(ledpinhintenrot2,HIGH);
digitalWrite(ledpinhintenrot4,HIGH);
digitalWrite(ledpinvorneweis,HIGH);
digitalWrite(ledpinhintenrot,HIGH);
digitalWrite(ledhintenrot,HIGH);
delay(200);
digitalWrite(ledpinhintenblau1, LOW);
digitalWrite(ledpinhintenblau2,LOW);
digitalWrite(ledpinhintenblau3,LOW);
digitalWrite(ledpinhintenblau4,HIGH);
digitalWrite(ledpinhintenrot1, HIGH);
digitalWrite(ledpinhintenrot2,HIGH);
digitalWrite(ledpinhintenrot4,HIGH);
digitalWrite(ledpinvorneweis,HIGH);
digitalWrite(ledpinhintenrot,HIGH);
digitalWrite(ledhintenrot,HIGH);
delay(1300);
state = LOW;
}
else {
digitalWrite(ledpinhintenblau1, HIGH);
digitalWrite(ledpinhintenblau2,HIGH);
digitalWrite(ledpinhintenblau3,HIGH);
digitalWrite(ledpinhintenblau4,HIGH);
digitalWrite(ledpinhintenrot1, HIGH);
digitalWrite(ledpinhintenrot2,HIGH);
digitalWrite(ledpinhintenrot4,HIGH);
digitalWrite(ledpinvorneweis,HIGH);
digitalWrite(ledpinhintenrot,HIGH);
digitalWrite(ledhintenrot,HIGH);
state = HIGH;
}
time = millis();
}
digitalWrite(buttonInput, state);
previous = buttonState;
}