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

 

 

 

 

Submit Your Solution

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