const int ledPins[] = {2, 3, 4, 5}; // LEDs from left to right
const int buttonPin = 13; // Push button pin
int pattern = 0; // Pattern selector
int lastButtonState = HIGH; // Previous button state
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
pinMode(buttonPin, INPUT_PULLUP); // Internal pull-up for button
}
void loop() {
int buttonState = digitalRead(buttonPin);
// Detect button press (HIGH -> LOW transition)
if (lastButtonState == HIGH && buttonState == LOW) {
pattern = (pattern + 1) % 4; // Cycle through 4 patterns
delay(250); // debounce
}
lastButtonState = buttonState;
// Run current pattern
switch (pattern) {
case 0: // Pattern 1: All LEDs blink (1111)
allBlink();
break;
case 1: // Pattern 2: Alternate (0101 ↔ 1010)
alternate();
break;
case 2: // Pattern 3: One LED at a time
oneByOne();
break;
case 3: // Pattern 4: Two LEDs at a time
twoAtATime();
break;
}
}
void allBlink() {
for (int i = 0; i < 4; i++) digitalWrite(ledPins[i], HIGH);
delay(300);
for (int i = 0; i < 4; i++) digitalWrite(ledPins[i], LOW);
delay(300);
}
void alternate() {
// 0101
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], HIGH);
delay(300);
// 1010
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], LOW);
delay(300);
}
void oneByOne() {
for (int i = 0; i < 4; i++) {
digitalWrite(ledPins[i], HIGH);
delay(300);
digitalWrite(ledPins[i], LOW);
}
}
void twoAtATime() {
// First two ON
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
delay(400);
// Last two ON
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH);
delay(400);
}
Add a video of the output (know more)