I am trying to program an UNO to run 2 separate LED chasing sequences. One chase sequence has 5 LED's and chases all the time. The other chase sequence only runs on a push of a button and runs while the button is pushed. I have the LED's connected for one chase on pins 2-6 and the pins for the other chase on 8-12 and the button is on 7. Currently my programming is causing one chase of lights, the 2-6 to chase out from the middle starting on the number 4 pin. Pins 8-12 are always chasing, the button does nothing. I've copied some code trying to get it to work, so I do not know what everything in my code is doing exactly, just the general idea.
Can I please get help in fixing my program. I think I need to use array's and the millis function, but I'm having trouble figuring it out.
Thanks for helping out the rookie!
// Programming for 2 different 5 LED chasing sequences. One 5 LED chasing sequence will always run.
//The other 5 LED chasing sequence will run while the button is pushed.
int ledPins[] = {2, 3, 4, 5, 6}; // an array of pin numbers to which always on LEDs are attached
int allPins[] = {2, 3, 4, 5, 6, 8, 9, 10, 11, 12}; //the array of pin numbers that go on when the button is pushed.
int pinCount = 6; // the number of pins (i.e. the length of the array), I'm not sure what this is really doing
int button = 7; //Pin location for the button
long sequenceDelay = 200; //length of time between the LED's lighting
long flashDelay = 500; //length of time for lighting of LED's
boolean LED2state = false;
boolean LED3state = false;
boolean LED4state = false;
boolean LED5state = false;
boolean LED6state = false;
boolean LED8state = false;
boolean LED9state = false; // the LED will turn ON in the first iteration of loop()
boolean LED10state = false; // need to seed the light to be OFF
boolean LED11state = false;
boolean LED12state = false;
long waitUntil2 = 0; //start point for the waitUntil variables for the lighting sequence
long waitUntil3 = sequenceDelay; // the seed will determine time
long waitUntil4 = sequenceDelay + sequenceDelay;
long waitUntil5 = sequenceDelay + sequenceDelay + sequenceDelay;
long waitUntil6 = sequenceDelay + sequenceDelay + sequenceDelay + sequenceDelay;
long waitUntil8 = 0;
long waitUntil9 = sequenceDelay;
long waitUntil10 = sequenceDelay + sequenceDelay;
long waitUntil11 = sequenceDelay + sequenceDelay + sequenceDelay;
long waitUntil12 = sequenceDelay + sequenceDelay + sequenceDelay + sequenceDelay;
void setup() {
pinMode(button, INPUT); //sets the button's mode
int thisPin;
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(ledPins[thisPin], OUTPUT);
}
for (int thisPin = 0; thisPin < pinCount; thisPin++) {
pinMode(allPins[thisPin], OUTPUT);
}
}
void loop() {
// loop from the lowest pin to the highest:
while (button == LOW); //while button is not pushed pins 2-6 light in a chasing sequence
digitalWrite(2, LED2state);
digitalWrite(3, LED3state);
digitalWrite(4, LED4state);
digitalWrite(5, LED5state);
digitalWrite(6, LED6state);
if (millis() >= waitUntil2) {
LED2state = !(LED2state);
waitUntil2 = millis() +flashDelay;
}
if (millis() >= waitUntil3) {
LED3state = !(LED2state);
waitUntil3 = millis() +flashDelay;
}
if (millis() >= waitUntil4) {
LED4state = !(LED4state);
waitUntil4 = millis() +flashDelay;
}
if (millis() >= waitUntil5) {
LED5state = !(LED5state);
waitUntil5 = millis() +flashDelay;
}
if (millis() >= waitUntil6) {
LED6state = !(LED6state);
waitUntil6 = millis() +flashDelay;
}
while(button == HIGH) // when the button is pushed it lights all lights in a 5 LED chase sequence.
digitalWrite(2, LED2state);
digitalWrite(3, LED3state);
digitalWrite(4, LED4state);
digitalWrite(5, LED5state);
digitalWrite(6, LED6state);
digitalWrite(8, LED8state);
digitalWrite(9, LED9state);
digitalWrite(10, LED10state);
digitalWrite(11, LED11state);
digitalWrite(12, LED12state);
if (millis() >= waitUntil2) {
LED2state = !(LED2state);
waitUntil2 = millis() +flashDelay;
}
if (millis() >= waitUntil3) {
LED3state = !(LED2state);
waitUntil3 = millis() +flashDelay;
}
if (millis() >= waitUntil4) {
LED4state = !(LED4state);
waitUntil4 = millis() +flashDelay;
}
if (millis() >= waitUntil5) {
LED5state = !(LED5state);
waitUntil5 = millis() +flashDelay;
}
if (millis() >= waitUntil6) {
LED6state = !(LED6state);
waitUntil6 = millis() +flashDelay;
}
if (millis() >= waitUntil8) {
LED8state = !(LED8state);
waitUntil8 = millis() +flashDelay;
}
if (millis() >= waitUntil9) {
LED9state = !(LED9state);
waitUntil9 = millis() +flashDelay;
}
if (millis() >= waitUntil10) {
LED10state = !(LED10state);
waitUntil10 = millis() +flashDelay;
}
if (millis() >= waitUntil11) {
LED11state = !(LED11state);
waitUntil11 = millis() +flashDelay;
}
if (millis() >= waitUntil12) {
LED12state = !(LED12state);
waitUntil12 = millis() +flashDelay;
}
}