So I have two programs that I'm trying to combine. The first program handles switches. For example, when switch A is high, LED1 will go on for 2 seconds and then turn off. Eight switches so 8 LEDs. The second program is just a sequencer for those 8 LEDs. Both programs by themselves work fine. What I'm trying to do is have the LEDs run their pattern and anytime a switch is triggered to just illuminate the corresponding LED for a couple seconds before resuming the pattern. Tried a few different ways including making 1 of the programs into a function and just calling to it but I suspect all the delays are killing the read states. Should mention that it's being used in a skeeball project. Fairly new to Arduino so I expect that I'm probably approaching this the wrong way and that my code probably isn't the most efficient, so any suggestions would be appreciated.
Included is the code I have:
Program 1( Switches)
#define LED1 9
#define LED2 10
#define LED3 11
#define LED4 12
#define LED5 13
#define LED6 A5
#define LED7 A4
#define LED8 A3
void setup(){
/* Start the serial connection*/
Serial.begin(9600);
/* Configure the inputs(using the internal pull up resistor) and outputs */
pinMode(0, INPUT_PULLUP); /* Switch at GUTTERBALL */
pinMode(1, INPUT_PULLUP); /* Switch at 10 HOLE */
pinMode(2, INPUT_PULLUP); /* Switch at 20 HOLE */
pinMode(3, INPUT_PULLUP); /* Switch at 30 HOLE */
pinMode(4, INPUT_PULLUP); /* Switch at 40 HOLE */
pinMode(5, INPUT_PULLUP); /* Switch at 50 HOLE */
pinMode(6, INPUT_PULLUP); /* Switch at LEFT 100 HOLE */
pinMode(7, INPUT_PULLUP); /* Switch at RIGHT 100 HOLE */
pinMode(8, INPUT_PULLUP); /* The 'START' button */
pinMode(LED1, OUTPUT); /* LED at GUTTERBALL */
pinMode(LED2, OUTPUT); /* LED at 10 HOLE */
pinMode(LED3, OUTPUT); /* LED at 20 HOLE */
pinMode(LED4, OUTPUT); /* LED at 30 HOLE */
pinMode(LED5, OUTPUT); /* LED at 40 HOLE */
pinMode(LED6, OUTPUT); /* LED at 50 HOLE */
pinMode(LED7, OUTPUT); /* LED at LEFTT 100 HOLE */
pinMode(LED8, OUTPUT); /* LED at RIGHT 100 HOLE */
}
/* Using internal pullup, so on the switches, LOW is HIGH */
void loop(){
const int gutterBut = digitalRead(0); /* GUTTERBALL value */
if (gutterBut == LOW) { /* On button press, light the led for 2 secs */
digitalWrite(LED1, HIGH);
delay(2000);
digitalWrite(LED1, LOW);
}
const int A10But = digitalRead(1); /* 10 HOLE value */
if (A10But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED2, HIGH);
delay(2000);
digitalWrite(LED2, LOW);
}
const int A20But = digitalRead(2); /* 20 HOLE value */
if (A20But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED3, HIGH);
delay(2000);
digitalWrite(LED3, LOW);
}
const int A30But = digitalRead(3); /* 30 HOLE value */
if (A30But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED4, HIGH);
delay(2000);
digitalWrite(LED4, LOW);
}
const int A40But = digitalRead(4); /* 40 HOLE value */
if (A40But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED5, HIGH);
delay(2000);
digitalWrite(LED5, LOW);
}
const int A50But = digitalRead(5); /* 50 HOLE value */
if (A50But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED6, HIGH);
delay(2000);
digitalWrite(LED6, LOW);
}
const int L100But = digitalRead(6); /* LEFT 100 HOLE value */
if (L100But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED7, HIGH);
delay(2000);
digitalWrite(LED7, LOW);
}
const int R100But = digitalRead(7); /* RIGHT 100 HOLE value */
if (R100But == LOW){ /* On button press, light the led for 2 secs */
digitalWrite(LED8, HIGH);
delay(2000);
digitalWrite(LED8, LOW);
}
delay(100);
}
Program 2 ( LED sequences) same setup and definitions as Program 1
void loop(){
seqA();
seqB();
seqC();
seqD();
seqF();
seqG();
}
void seqA(){
digitalWrite(LED8, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(100);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(100);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
digitalWrite(LED7, HIGH);
delay(100);
digitalWrite(LED6, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED8, HIGH);
}
void seqB(){
delay(100);
digitalWrite(LED8, LOW);
digitalWrite(LED8, LOW);
digitalWrite(LED6, HIGH);
digitalWrite(LED7, HIGH);
delay(100);
digitalWrite(LED6, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(100);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(100);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED1, HIGH);
delay(100);
digitalWrite(LED1, LOW);
}
void seqC(){
digitalWrite(LED7, HIGH);
delay(250);
digitalWrite(LED8, HIGH);
digitalWrite(LED6, HIGH);
delay(250);
digitalWrite(LED5, HIGH);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED3, HIGH);
digitalWrite(LED2, HIGH);
delay(250);
digitalWrite(LED1, HIGH);
delay(250);
}
void seqD(){
digitalWrite(LED8, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED8, HIGH);
digitalWrite(LED1, HIGH);
delay(250);
digitalWrite(LED7, HIGH);
digitalWrite(LED2, HIGH);
delay(250);
digitalWrite(LED6, HIGH);
digitalWrite(LED3, HIGH);
delay(250);
digitalWrite(LED5, HIGH);
digitalWrite(LED4, HIGH);
delay(250);
}
void seqF(){
digitalWrite(LED8, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED8, HIGH);
delay(250);
digitalWrite(LED7, HIGH);
delay(250);
digitalWrite(LED6, HIGH);
delay(250);
digitalWrite(LED5, HIGH);
delay(250);
digitalWrite(LED4, HIGH);
delay(250);
digitalWrite(LED3, HIGH);
delay(250);
digitalWrite(LED2, HIGH);
delay(250);
digitalWrite(LED1, HIGH);
digitalWrite(LED8, LOW);
delay(250);
digitalWrite(LED7, LOW);
delay(250);
digitalWrite(LED6, LOW);
delay(250);
digitalWrite(LED5, LOW);
delay(250);
digitalWrite(LED4, LOW);
delay(250);
digitalWrite(LED3, LOW);
delay(250);
digitalWrite(LED2, LOW);
delay(250);
digitalWrite(LED1, LOW);
delay(250);
}
void seqG(){
digitalWrite(LED8, HIGH);
delay(500);
digitalWrite(LED7, HIGH);
delay(500);
digitalWrite(LED6, HIGH);
delay(500);
digitalWrite(LED5, HIGH);
delay(500);
digitalWrite(LED4, HIGH);
delay(500);
digitalWrite(LED3, HIGH);
delay(500);
digitalWrite(LED2, HIGH);
delay(500);
digitalWrite(LED1, HIGH);
digitalWrite(LED8, LOW);
delay(500);
digitalWrite(LED7, LOW);
delay(500);
digitalWrite(LED6, LOW);
delay(500);
digitalWrite(LED5, LOW);
delay(500);
digitalWrite(LED4, LOW);
delay(500);
digitalWrite(LED3, LOW);
delay(500);
digitalWrite(LED2, LOW);
delay(500);
digitalWrite(LED1, LOW);
delay(500);
}