Trying to write code to allow for blinking, chasing and scanning using four push buttons. Not able to switch between the four while they are running continuously. Would appreciate some guidance
// One Button On/Off Toggle
const byte buttonPin[] = {14,15,16,13}; // the number of the pushbutton pin
const byte ledPin[] = {3,4,5,6}; // the number of the LED pin
const int pinled1 = 12;
const int pinled2 = 11;
const int pinled3 = 10;
const int pinled4 = 9;
const int pinled5 = 8;
const int pinled6 = 7;
const int pinled7 = 6;
const int pinled8 = 5;
const int pinled9 = 4;
const int pinled10 = 3;
// Variables will change:
int ledState[] = {LOW,LOW,LOW,LOW}; // the current state of the output pin
int buttonState[] = {LOW,LOW,LOW,LOW}; // the current reading from the input pin
int lastButtonState[] = {HIGH,HIGH,HIGH,HIGH}; // the previous reading from the input pin
int reading;
int foo;
int tim=88;//speed of blink
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 50; // the debounce time; increase if the output flickers
int i = 0;
void setup() {
for(int i = 0; i < 4; i++){
pinMode(buttonPin[i], INPUT);
// pinMode(ledPin[i], OUTPUT);
}
pinMode(pinled1, OUTPUT);
pinMode(pinled2, OUTPUT);
pinMode(pinled3, OUTPUT);
pinMode(pinled4, OUTPUT);
pinMode(pinled5, OUTPUT);
pinMode(pinled6, OUTPUT);
pinMode(pinled7, OUTPUT);
pinMode(pinled8, OUTPUT);
pinMode(pinled9, OUTPUT);
pinMode(pinled10, OUTPUT);
}
void loop() {
// for(int i = 0; i < 4; i++){
reading = digitalRead(buttonPin[i]);
if (reading != lastButtonState[i]) {
lastDebounceTime = millis();
lastButtonState[i] = reading;
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (buttonState[i] != lastButtonState[i]) {
buttonState[i] = lastButtonState[i];
if (buttonState[i] == LOW) {
//ledState[i] = !ledState[i];
//digitalWrite(ledPin[i], ledState[i]);
foo = ledPin[i];
while (foo){
switch (foo) {
case 3://chase right
digitalWrite(pinled10, LOW);
digitalWrite(pinled1, HIGH);
delay(tim);
digitalWrite(pinled2, HIGH);
delay(tim);
digitalWrite(pinled1, LOW);
delay(tim);
digitalWrite(pinled3, HIGH);
delay(tim);
digitalWrite(pinled2, LOW);
delay(tim);
digitalWrite(pinled4, HIGH);
delay(tim);
digitalWrite(pinled3, LOW);
delay(tim);
digitalWrite(pinled5, HIGH);
delay(tim);
digitalWrite(pinled4, LOW);
delay(tim);
digitalWrite(pinled6, HIGH);
delay(tim);
digitalWrite(pinled5, LOW);
delay(tim);
digitalWrite(pinled7, HIGH);
delay(tim);
digitalWrite(pinled6, LOW);
delay(tim);
digitalWrite(pinled8, HIGH);
delay(tim);
digitalWrite(pinled7, LOW);
delay(tim);
digitalWrite(pinled9, HIGH);
delay(tim);
digitalWrite(pinled8, LOW);
delay(tim);
digitalWrite(pinled10, HIGH);
delay(tim);
digitalWrite(pinled9, LOW);
delay(tim);
break;
case 4://blink
digitalWrite(pinled1, HIGH);
digitalWrite(pinled2, HIGH);
digitalWrite(pinled3, HIGH);
digitalWrite(pinled4, HIGH);
digitalWrite(pinled5, HIGH);
digitalWrite(pinled6, HIGH);
digitalWrite(pinled7, HIGH);
digitalWrite(pinled8, HIGH);
digitalWrite(pinled9, HIGH);
digitalWrite(pinled10, HIGH);
delay(tim);
digitalWrite(pinled1, LOW);
digitalWrite(pinled2, LOW);
digitalWrite(pinled3, LOW);
digitalWrite(pinled4, LOW);
digitalWrite(pinled5, LOW);
digitalWrite(pinled6, LOW);
digitalWrite(pinled7, LOW);
digitalWrite(pinled8, LOW);
digitalWrite(pinled9, LOW);
digitalWrite(pinled10, LOW);
delay(tim + 1000);
break;
case 5://chase left
digitalWrite(pinled1, LOW);
digitalWrite(pinled10, HIGH);
delay(tim);
digitalWrite(pinled9, LOW);
delay(tim);
digitalWrite(pinled9, HIGH);
delay(tim);
digitalWrite(pinled10, LOW);
delay(tim);
digitalWrite(pinled8, HIGH);
delay(tim);
digitalWrite(pinled9, LOW);
delay(tim);
digitalWrite(pinled7, HIGH);
delay(tim);
digitalWrite(pinled8, LOW);
delay(tim);
digitalWrite(pinled6, HIGH);
delay(tim);
digitalWrite(pinled7, LOW);
delay(tim);
digitalWrite(pinled5, HIGH);
delay(tim);
digitalWrite(pinled6, LOW);
delay(tim);
digitalWrite(pinled4, HIGH);
delay(tim);
digitalWrite(pinled5, LOW);
delay(tim);
digitalWrite(pinled3, HIGH);
delay(tim);
digitalWrite(pinled4, LOW);
delay(tim);
digitalWrite(pinled2, HIGH);
delay(tim);
digitalWrite(pinled3, LOW);
delay(tim);
digitalWrite(pinled1, HIGH);
delay(tim);
digitalWrite(pinled2, LOW);
delay(tim);
break;
case 6://scan
digitalWrite(pinled1, HIGH);
delay(tim);
digitalWrite(pinled2, HIGH);
delay(tim);
digitalWrite(pinled1, LOW);
delay(tim);
digitalWrite(pinled3, HIGH);
delay(tim);
digitalWrite(pinled2, LOW);
delay(tim);
digitalWrite(pinled4, HIGH);
delay(tim);
digitalWrite(pinled3, LOW);
delay(tim);
digitalWrite(pinled5, HIGH);
delay(tim);
digitalWrite(pinled4, LOW);
delay(tim);
digitalWrite(pinled6, HIGH);
delay(tim);
digitalWrite(pinled5, LOW);
delay(tim);
digitalWrite(pinled7, HIGH);
delay(tim);
digitalWrite(pinled6, LOW);
delay(tim);
digitalWrite(pinled8, HIGH);
delay(tim);
digitalWrite(pinled7, LOW);
delay(tim);
digitalWrite(pinled9, HIGH);
delay(tim);
digitalWrite(pinled8, LOW);
delay(tim);
digitalWrite(pinled10, HIGH);
delay(tim);
digitalWrite(pinled9, LOW);
delay(tim);
digitalWrite(pinled9, HIGH);
delay(tim);
digitalWrite(pinled10, LOW);
delay(tim);
digitalWrite(pinled8, HIGH);
delay(tim);
digitalWrite(pinled9, LOW);
delay(tim);
digitalWrite(pinled7, HIGH);
delay(tim);
digitalWrite(pinled8, LOW);
delay(tim);
digitalWrite(pinled6, HIGH);
delay(tim);
digitalWrite(pinled7, LOW);
delay(tim);
digitalWrite(pinled5, HIGH);
delay(tim);
digitalWrite(pinled6, LOW);
delay(tim);
digitalWrite(pinled4, HIGH);
delay(tim);
digitalWrite(pinled5, LOW);
delay(tim);
digitalWrite(pinled3, HIGH);
delay(tim);
digitalWrite(pinled4, LOW);
delay(tim);
digitalWrite(pinled2, HIGH);
delay(tim);
digitalWrite(pinled3, LOW);
delay(tim);
digitalWrite(pinled1, HIGH);
delay(tim);
digitalWrite(pinled2, LOW);
delay(tim);
break;
//default:
// statements
}
}//while
}
}
}
// }//for
i++;
if(i>3){
i=0;
}
}//end loop