11. LED Blinking Patterns

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

 To implement the LED blinking patterns, we assign each LED to a GPIO pin on the microcontroller and control their states using timed digital signals. Pattern 1 is achieved by turning on each LED sequentially with delays in between, while Pattern 2 lights up all LEDs simultaneously. This approach uses simple digitalWrite() and delay() functions to create visually distinct patterns for learning GPIO control.
 

 

 

 

Code

/*Paste your code here*/

const int buttonPin = 2;
const int led1 = 3;
const int led2 = 4;
const int led3 = 5;
const int led4 = 6;

int pattern = 0;              
int lastButtonState = HIGH;   

void setup() {
  pinMode(buttonPin, INPUT_PULLUP); 
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(buttonPin);

  // detect button press (falling edge)
  if (buttonState == LOW && lastButtonState == HIGH) {
    delay(50);                 
    pattern = (pattern + 1) % 5;  // cycle through 5 patterns (0-4)
  }
  lastButtonState = buttonState;

  // run the active pattern
  switch (pattern) {
    case 0: // Pattern 1: all LEDs blink together
      digitalWrite(led1, HIGH);
      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      delay(500);
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      digitalWrite(led4, LOW);
      delay(500);
      break;

    case 1: // Pattern 2: LED1 & LED3 blink first, then LED2 & LED4
      digitalWrite(led1, HIGH);
      digitalWrite(led3, HIGH);
      delay(500);
      digitalWrite(led1, LOW);
      digitalWrite(led3, LOW);
      delay(500);

      digitalWrite(led2, HIGH);
      digitalWrite(led4, HIGH);
      delay(500);
      digitalWrite(led2, LOW);
      digitalWrite(led4, LOW);
      delay(500);
      break;

    case 2: // Pattern 3: alternate blinking LED1 -> LED2 -> LED3 -> LED4
      digitalWrite(led1, HIGH); delay(300); digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH); delay(300); digitalWrite(led2, LOW);
      digitalWrite(led3, HIGH); delay(300); digitalWrite(led3, LOW);
      digitalWrite(led4, HIGH); delay(300); digitalWrite(led4, LOW);
      break;

    case 3: // Pattern 4: LED1+2 together, then LED3+4 together
      digitalWrite(led1, HIGH);
      digitalWrite(led2, HIGH);
      delay(500);
      digitalWrite(led1, LOW);
      digitalWrite(led2, LOW);
      delay(500);

      digitalWrite(led3, HIGH);
      digitalWrite(led4, HIGH);
      delay(500);
      digitalWrite(led3, LOW);
      digitalWrite(led4, LOW);
      delay(500);
      break;

    case 4: // Pattern 5: LED1+4 first, then LED2+3
      digitalWrite(led1, HIGH);
      digitalWrite(led4, HIGH);
      delay(500);
      digitalWrite(led1, LOW);
      digitalWrite(led4, LOW);
      delay(500);

      digitalWrite(led2, HIGH);
      digitalWrite(led3, HIGH);
      delay(500);
      digitalWrite(led2, LOW);
      digitalWrite(led3, LOW);
      delay(500);
      break;
  }
}

 

 

 

Output

Video

Add a video of the output (know more)

 

 

 

Was this helpful?
Upvote
Downvote