/* Global Variables and Functions */
int led[] = {0, 1, 2, 3, 4, 5, 6}; // LED Pins
int button[] = {7, 8, 9}; // Button Pins
int ledCount = 7;
int buttonCount = 3;
int time = 200; // Delay Time
// Turning all the LEDs on or off at once
void globalLEDState(char state) {
for (int i = 0; i < ledCount; i++) {
digitalWrite(led[i], state);
}
}
// Turning LEDs on and off one by one
void sequentialLighting() {
for (int i = 0; i < ledCount; i++) { digitalWrite(led[i], HIGH); delay(time); } // On in order
for (int i = ledCount; i >= 0; i--) { digitalWrite(led[i], LOW); delay(time); } // Off in reverse order
}
// Alternate Blinking
void alternateBlink() {
for (int j = 0; j < 6; j+=1) {
for (int i = j % 2; i < ledCount; i+=2) { digitalWrite(led[i], HIGH); } delay(time*2);
for (int i = j % 2; i < ledCount; i+=2) { digitalWrite(led[i], LOW); }
}
}
/* Arduino Setup and Loop */
void setup() {
// Setting led pins to output
for (int i = 0; i < ledCount; i++) { pinMode(led[i], OUTPUT); }
// Setting button pins to input
for (int i = 0; i < buttonCount; i++) { pinMode(button[i], INPUT_PULLUP); }
}
void loop() {
// Sequential on-off - Blue Button
if (digitalRead(button[0]) == LOW) { sequentialLighting(); }
// Rapid Blinking - Green Button
if (digitalRead(button[1]) == LOW) {
for (int j = 0; j < 5; j++) {
globalLEDState(HIGH); delay(time);
globalLEDState(LOW); delay(time);
}
}
// Alternate Blinking - Yellow Button
if (digitalRead(button[2]) == LOW) {
alternateBlink();
globalLEDState(LOW);
}
}