// Pin settings
const int ledPins[] = {5, 6, 7, 8, 9, 10, 11, 12}; // LED pins
const int buttonPin = 2; // Button pin
// Variables
int pattern = 0; // Current pattern state
bool buttonPressed = false; // Button state
void setup() {
// Initialize LED pins as outputs
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Initialize button pin as input
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// Check if the button is pressed
if (digitalRead(buttonPin) == LOW && !buttonPressed) {
buttonPressed = true;
pattern = (pattern + 1) % 6; // Move to the next pattern (cycle through 6 patterns)
delay(200); // Debounce delay
} else if (digitalRead(buttonPin) == HIGH) {
buttonPressed = false;
}
// Execute the selected pattern
switch (pattern) {
case 0:
pattern1();
break;
case 1:
pattern2();
break;
case 2:
pattern3();
break;
case 3:
pattern4();
break;
case 4:
pattern5();
break;
case 5:
// Do nothing, turn off all LEDs
allOff();
break;
}
}
// Pattern 1: LED chase from pin 5 to pin 12, on then off
void pattern1() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
// Pattern 2: LED chase from pin 12 to pin 5, on then off
void pattern2() {
for (int i = 7; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(500);
digitalWrite(ledPins[i], LOW);
}
}
// Pattern 3: LEDs from pin 12 and 6 running towards each other, then back
void pattern3() {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[7 - i], HIGH); // Pin 12 inward
digitalWrite(ledPins[i], HIGH); // Pin 5 outward
delay(500);
digitalWrite(ledPins[7 - i], LOW);
digitalWrite(ledPins[i], LOW);
}
for (int i = 3; i >= 0; i--) {
digitalWrite(ledPins[7 - i], HIGH); // Pin 12 outward
digitalWrite(ledPins[i], HIGH); // Pin 5 inward
delay(500);
digitalWrite(ledPins[7 - i], LOW);
digitalWrite(ledPins[i], LOW);
}
}
// Pattern 4: LEDs chase from pin 5 to pin 12, stay on, then turn off all and repeat once
void pattern4() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
}
delay(500); // Pause with all LEDs on
allOff();
delay(500); // Pause before repeating
// Repeat the chase
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
delay(500);
}
delay(500); // Pause with all LEDs on
allOff();
}
// Pattern 5: All LEDs on, then off
void pattern5() {
allOn();
delay(1000); // Keep all LEDs on for 1 second
allOff();
}
// Turn all LEDs off
void allOff() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], LOW);
}
}
// Turn all LEDs on
void allOn() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
}
}