All submissions

Solving Approach

How do you plan to solve it?

 
 

 

 

 

Code

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);
}

 

 

Output

Video

Add a video of the output (know more)

 

 

 

 

Submit Your Solution

Note: Once submitted, your solution goes public, helping others learn from your approach!