All submissions

LED Blinking Patterns

Solving Approach

How do you plan to solve it?

 
 

 

 

 

Code

int leds[] = {4,5,6,7}; 
int buttonPin = 2; 
int pattern = 0; 
int lastButton = HIGH; 
bool pressed = false; 
void setup() { 
for(int i=0;i<4;i++) pinMode(leds[i], OUTPUT); 
pinMode(buttonPin, INPUT_PULLUP); 
Serial.begin(9600); 

  Serial.println("Task 4"); 
  Serial.println("Pattern 1"); 
} 
 
// Small delay function that checks button for instant switching 
void wait(int ms){ 
  for(int i=0;i<ms/50;i++){ 
    delay(50); 
    int b = digitalRead(buttonPin); 
    if(b == LOW && lastButton == HIGH && !pressed){ 
      pattern = (pattern + 1) % 5; 
      pressed = true; 
      Serial.print("Pattern "); 
      Serial.println(pattern + 1); 
    } 
    if(b == HIGH) pressed = false; 
    lastButton = b; 
  } 
} 
 
void loop() { 
  switch(pattern){ 
    case 0: // Pattern 1: all blink 
      for(int i=0;i<4;i++) digitalWrite(leds[i], HIGH); 
      wait(1000); 
      for(int i=0;i<4;i++) digitalWrite(leds[i], LOW); 
      wait(500); 
      break; 
 
    case 1: // Pattern 2: LED1&3 then LED2&4 
      digitalWrite(leds[0], HIGH); digitalWrite(leds[2], HIGH); 
      digitalWrite(leds[1], LOW);  digitalWrite(leds[3], LOW); 
      wait(500); 
      digitalWrite(leds[0], LOW); digitalWrite(leds[2], LOW); 
      digitalWrite(leds[1], HIGH); digitalWrite(leds[3], HIGH); 
      wait(500); 
      break; 
 
    case 2: // Pattern 3: LEDs one by one 
      for(int i=0;i<4;i++){ 
        for(int j=0;j<4;j++) digitalWrite(leds[j], LOW); 
        digitalWrite(leds[i], HIGH); 
        wait(500); 
      } 
      break; 
 
    case 3: // Pattern 4: LED1&2 then LED3&4 
      digitalWrite(leds[0], HIGH); digitalWrite(leds[1], HIGH); 
      digitalWrite(leds[2], LOW);  digitalWrite(leds[3], LOW); 
      wait(500); 
      digitalWrite(leds[0], LOW); digitalWrite(leds[1], LOW); 

      digitalWrite(leds[2], HIGH); digitalWrite(leds[3], HIGH); 
      wait(500); 
      break; 
 
    case 4: // Pattern 5: LED1&4 then LED2&3 
      digitalWrite(leds[0], HIGH); digitalWrite(leds[3], HIGH); 
      digitalWrite(leds[1], LOW);  digitalWrite(leds[2], LOW); 
      wait(500); 
      digitalWrite(leds[0], LOW); digitalWrite(leds[3], LOW); 
      digitalWrite(leds[1], HIGH); digitalWrite(leds[2], HIGH); 
      wait(500); 
      break; 
  } 
}



 

 

 

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!