All submissions

LED Blinking Patterns

Solving Approach

How do you plan to solve it?

 

Code

/*Paste your code here*/
//define button pin
#define btnPin 2

// define LED pins 
#define ledPin13 13
#define ledPin12 12
#define ledPin11 11
#define ledPin10 10

// define led states
#define ON 0
#define OFF 1

volatile unsigned long prevTimeBtnPresses = 0;
byte debounceDelay = 50;
volatile bool buttonPressed = false;
byte btnClicks = 0;

void pattern1();
void pattern2();
void pattern3();
void pattern4();
void pattern5();

void setup()
{
  Serial.begin( 9600 );
  // button pin initialisation
  pinMode(btnPin, INPUT);
  // led pins initialisation
  pinMode(ledPin13, OUTPUT);
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);
  
  // initially all leds are off
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, OFF );
  
  attachInterrupt( digitalPinToInterrupt( btnPin ),
                   buttonPressedInterrupt, RISING);
}

void loop()
{
  if ( buttonPressed )
    {
      buttonPressed = false;
      btnClicks++;
      if ( btnClicks == 6 )
      {
        btnClicks = 1;
      }
    }
  
  // if count of button clicks is 1 then turn on all four leds
  // then wait for 1000ms then turn off all the leds then wait
  // for 1000ms
  if ( btnClicks == 1 )
  {
    pattern1();
  }
  if ( btnClicks == 2 )
  {
    pattern2();
  }
  if ( btnClicks == 3 )
  {
    pattern3();
  }
  if ( btnClicks == 4 )
  {
    pattern4();
  }
  if ( btnClicks == 5 )
  {
    pattern5(); 
  }
}
void buttonPressedInterrupt()
{
  if ( millis() - prevTimeBtnPresses > debounceDelay )
  {
    prevTimeBtnPresses = millis();
    buttonPressed = true;
  }
}
void pattern1()
{
  digitalWrite( ledPin13, ON );
  digitalWrite( ledPin12, ON );
  digitalWrite( ledPin11, ON );
  digitalWrite( ledPin10, ON );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, OFF );
  delay(700);
}
void pattern2()
{
  digitalWrite( ledPin13, ON );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, ON );
  digitalWrite( ledPin10, OFF );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, ON );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, ON );
  delay(700);
}
void pattern3()
{
  digitalWrite( ledPin13, ON );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, OFF );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, ON );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, OFF );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, ON );
  digitalWrite( ledPin10, OFF );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, ON );
  delay(700);
}
void pattern4()
{
  digitalWrite( ledPin13, ON );
  digitalWrite( ledPin12, ON );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, OFF );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, ON );
  digitalWrite( ledPin10, ON );
  delay(700);
}
void pattern5()
{
  digitalWrite( ledPin13, ON );
  digitalWrite( ledPin12, OFF );
  digitalWrite( ledPin11, OFF );
  digitalWrite( ledPin10, ON );
  delay(700);
  digitalWrite( ledPin13, OFF );
  digitalWrite( ledPin12, ON );
  digitalWrite( ledPin11, ON );
  digitalWrite( ledPin10, OFF );
  delay(700);
}

 

 

 

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!