All submissions

LED Blinking Patterns

Solving Approach

How do you plan to solve it?

 
 

 

 

 

Code

/*Paste your code here*/


#define LED_1 8
#define LED_2 9
#define LED_3 10
#define LED_4 11

#define bush_button 2
#define NUMBER_OF_PATTERNS 4

int pattern_counter = 0;


void InterruptHandler(void)
{
  delay(150);

  pattern_counter++;

  if(pattern_counter>=NUMBER_OF_PATTERNS)
  {
    pattern_counter=0;
  }

}


void Pattern_1(void)
{
  digitalWrite(LED_1,HIGH);
  digitalWrite(LED_2,HIGH);
  digitalWrite(LED_3,HIGH);
  digitalWrite(LED_4,HIGH);
  delay(500);
  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,LOW);
  delay(500);
} 

void Pattern_2(void)
{
  digitalWrite(LED_1,HIGH);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,HIGH);
  digitalWrite(LED_4,LOW);
  delay(500);
  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,HIGH);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,HIGH);
  delay(500);  
}

void Pattern_3(void)
{
  digitalWrite(LED_1,HIGH);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,LOW);
  delay(500);

  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,HIGH);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,LOW);
  delay(500);   

  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,HIGH);
  digitalWrite(LED_4,LOW);
  delay(500);   

  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,HIGH);
  delay(500);   
}

void Pattern_4(void)
{
  digitalWrite(LED_1,HIGH);
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,LOW);
  digitalWrite(LED_4,HIGH);
  delay(500);
  digitalWrite(LED_1,LOW);
  digitalWrite(LED_2,HIGH);
  digitalWrite(LED_3,HIGH);
  digitalWrite(LED_4,LOW);
  delay(500);   
}


void (*stateMachine[NUMBER_OF_PATTERNS])(void) = {Pattern_1,Pattern_2,Pattern_3,Pattern_4};

void setup() {
  Serial.begin(115200);
  pinMode(LED_1,OUTPUT);
  pinMode(LED_2,OUTPUT);
  pinMode(LED_3,OUTPUT);
  pinMode(LED_4,OUTPUT);
  pinMode(bush_button,INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(bush_button), InterruptHandler, FALLING);
}

void loop() 
{
  // put your main code here, to run repeatedly:


  Serial.print("State: ");
  Serial.println(pattern_counter);
  stateMachine[pattern_counter]();
  

}

 

 

 

Output

Video

Add a video of the output (know more)

 

https://youtube.com/shorts/Yg0layxfeQo

 

 

Submit Your Solution

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