Hello, I'm coding a line of 14 LEDs (we all love blinking LEDs, right?) and i'm controlling them using an array. That's all great, but for the instances where I individually control the LEDs, the code gets messy (having 14 lines of code for turning them on, 14 for off again). Is there a way to control multiple values in the array using one line of code?
(here's the code i have):
int pinArray[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int count = 0;
int timer = 30;
int cycle = 10;
void setup(){ //This sets up the program
for (count=0;count<13;count++) {
pinMode(pinArray[count], OUTPUT);
}
}
void loop() { //This section turns all LEDs on in consecutive order, then off in order. Then it goes back the same way
for (cycle=0;cycle<9;cycle++){
for (count=0;count<14;count++) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
}
count=0;
for (count=0;count<14;count++) {
digitalWrite(pinArray[count], LOW);
delay(timer);
}
for (count=13;count>=0;count--) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
}
count=13;
for (count=13;count>=0;count--) {
digitalWrite(pinArray[count], LOW);
delay(timer);
}
}
for (cycle>8;cycle<19;cycle++){ //This section blinks two lit LEDs across the faceplate and back
for (count=0;count<13;count++) {
digitalWrite(pinArray[count], HIGH);
delay(timer/2);
digitalWrite(pinArray[count + 1], HIGH);
delay(timer/2);
digitalWrite(pinArray[count], LOW);
delay(timer);
}
for (count=13;count>-1;count--) {
digitalWrite(pinArray[count], HIGH);
delay(timer/2);
digitalWrite(pinArray[count - 1], HIGH);
delay(timer/2);
digitalWrite(pinArray[count], LOW);
delay(timer/2);
}
}
cycle = 29; //This section blinks on LEDs then off, and waits to blink the next one
for (cycle>28;cycle<34;cycle++){
count = 13;
for (count<14;count>-1;count--){
digitalWrite(pinArray[count], HIGH);
delay(timer*2);
digitalWrite(pinArray[count], LOW);
delay(timer*10);
}
}
for (cycle>34;cycle<55;cycle++){ //This section scrolls four sets of two lit LEDs across
digitalWrite(pinArray[2], LOW);
digitalWrite(pinArray[6], LOW);
digitalWrite(pinArray[10], LOW);
digitalWrite(pinArray[0], HIGH);
digitalWrite(pinArray[4], HIGH);
digitalWrite(pinArray[8], HIGH);
digitalWrite(pinArray[12], HIGH);
delay(timer*6);
digitalWrite(pinArray[3], LOW);
digitalWrite(pinArray[7], LOW);
digitalWrite(pinArray[11], LOW);
digitalWrite(pinArray[1], HIGH);
digitalWrite(pinArray[5], HIGH);
digitalWrite(pinArray[9], HIGH);
digitalWrite(pinArray[13], HIGH);
delay(timer*6);
digitalWrite(pinArray[0], LOW);
digitalWrite(pinArray[4], LOW);
digitalWrite(pinArray[8], LOW);
digitalWrite(pinArray[12], LOW);
digitalWrite(pinArray[2], HIGH);
digitalWrite(pinArray[6], HIGH);
digitalWrite(pinArray[10], HIGH);
delay(timer*6);
digitalWrite(pinArray[1], LOW);
digitalWrite(pinArray[5], LOW);
digitalWrite(pinArray[9], LOW);
digitalWrite(pinArray[13], LOW);
digitalWrite(pinArray[3], HIGH);
digitalWrite(pinArray[7], HIGH);
digitalWrite(pinArray[11], HIGH);
delay(timer*6);
}
for (cycle>54;cycle<65;cycle++){ //This section blinks all LEDs on and off together
digitalWrite(pinArray[0], HIGH);
digitalWrite(pinArray[1], HIGH);
digitalWrite(pinArray[2], HIGH);
digitalWrite(pinArray[3], HIGH);
digitalWrite(pinArray[4], HIGH);
digitalWrite(pinArray[5], HIGH);
digitalWrite(pinArray[6], HIGH);
digitalWrite(pinArray[7], HIGH);
digitalWrite(pinArray[8], HIGH);
digitalWrite(pinArray[9], HIGH);
digitalWrite(pinArray[10], HIGH);
digitalWrite(pinArray[11], HIGH);
digitalWrite(pinArray[12], HIGH);
digitalWrite(pinArray[13], HIGH);
delay(timer*10);
digitalWrite(pinArray[0], LOW);
digitalWrite(pinArray[1], LOW);
digitalWrite(pinArray[2], LOW);
digitalWrite(pinArray[3], LOW);
digitalWrite(pinArray[4], LOW);
digitalWrite(pinArray[5], LOW);
digitalWrite(pinArray[6], LOW);
digitalWrite(pinArray[7], LOW);
digitalWrite(pinArray[8], LOW);
digitalWrite(pinArray[9], LOW);
digitalWrite(pinArray[10], LOW);
digitalWrite(pinArray[11], LOW);
digitalWrite(pinArray[12], LOW);
digitalWrite(pinArray[13], LOW);
delay(timer*10);
}
if (cycle = 65){ //This section blinks on all LEDs one at a time, then off one at a time.
digitalWrite(pinArray[3], HIGH);
delay(timer*10);
digitalWrite(pinArray[8], HIGH);
delay(timer*10);
digitalWrite(pinArray[4], HIGH);
delay(timer*10);
digitalWrite(pinArray[10], HIGH);
delay(timer*10);
digitalWrite(pinArray[5], HIGH);
delay(timer*10);
digitalWrite(pinArray[1], HIGH);
delay(timer*10);
digitalWrite(pinArray[9], HIGH);
delay(timer*10);
digitalWrite(pinArray[0], HIGH);
delay(timer*10);
digitalWrite(pinArray[11], HIGH);
delay(timer*10);
digitalWrite(pinArray[2], HIGH);
delay(timer*10);
digitalWrite(pinArray[7], HIGH);
delay(timer*10);
digitalWrite(pinArray[13], HIGH);
delay(timer*10);
digitalWrite(pinArray[6], HIGH);
delay(timer*10);
digitalWrite(pinArray[12], HIGH);
delay(timer*100);
digitalWrite(pinArray[5], LOW);
delay(timer*10);
digitalWrite(pinArray[12], LOW);
delay(timer*10);
digitalWrite(pinArray[3], LOW);
delay(timer*10);
digitalWrite(pinArray[7], LOW);
delay(timer*10);
digitalWrite(pinArray[1], LOW);
delay(timer*10);
digitalWrite(pinArray[9], LOW);
delay(timer*10);
digitalWrite(pinArray[11], LOW);
delay(timer*10);
digitalWrite(pinArray[2], LOW);
delay(timer*10);
digitalWrite(pinArray[8], LOW);
delay(timer*10);
digitalWrite(pinArray[10], LOW);
delay(timer*10);
digitalWrite(pinArray[0], LOW);
delay(timer*10);
digitalWrite(pinArray[13], LOW);
delay(timer*10);
digitalWrite(pinArray[6], LOW);
delay(timer*10);
digitalWrite(pinArray[4], LOW);
delay(timer*100);
cycle = 0;
}
}