Hi Leute, ich habe folgendes Problem, ich habe eigentlich ein einfaches Programm, bei dem alle Leds erst einmal mit kurzem Delay an gehen, dann kann ich zwei abschalten und am Ende möchte ich ein zufälliges langsames Blinken.
Soweit so gut, mit der Funktion Blinken scheitert es jedoch gerade. Es wird lediglich eine Led abgeschaltet, das wars aber auch schon
Bin ich blind oder was habe ich übersehen oder vergessen?
Vielen Dank schon mal für eure Hilfe
int BUTTON_PIN = A1;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 7;
int leds[6] = {2,3,4,5,6,7};
bool oldState = LOW;
int showType = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
for (int jj; jj<sizeof(leds)/sizeof(int);jj++){
pinMode(leds[jj],OUTPUT);
delay(10);
}
}
void loop() {
// Get current button state.
bool newState = digitalRead(BUTTON_PIN);
// Check if state changed from high to low (button press).
if (newState == LOW && oldState == HIGH) {
// Short delay to debounce button.
delay(20);
// Check if button is still low after debounce.
newState = digitalRead(BUTTON_PIN);
if (newState == LOW) {
showType++;
if (showType > 4)
showType=0;
startShow(showType);
}
}
// Set the last button state to the old state.
oldState = newState;
}
void startShow(int i) {
switch(i){
case 0:
digitalWrite(led1, LOW);
delay(100);
digitalWrite(led2, LOW);
delay(100);
digitalWrite(led3, LOW);
delay(100);
digitalWrite(led4, LOW);
delay(100);
digitalWrite(led5, LOW);
delay(100);
digitalWrite(led6, LOW);
break;
case 1:
digitalWrite(led1, HIGH);
delay(100);
digitalWrite(led2, HIGH);
delay(100);
digitalWrite(led3, HIGH);
delay(100);
digitalWrite(led4, HIGH);
delay(100);
digitalWrite(led5, HIGH);
delay(100);
digitalWrite(led6, HIGH);
delay(1000);
break;
case 2:
digitalWrite(led1, LOW);
delay(500);
break;
case 3:
digitalWrite(led4, LOW);
delay(500);
break;
case 4:
Blink();
break;
}
}
void Blink(){
digitalWrite(leds[random(0,sizeof(leds)/sizeof(int))],HIGH);
delay(500);
digitalWrite(leds[random(0,sizeof(leds)/sizeof(int))],LOW);
delay(500);
}