Solving Approach

How do you plan to solve it?

 First I build a function that contains each LED pattern where I use a "switch case" tool taking advantaje of a parameter which it depends on the times the button is pressed

The button logic consist of a variable that works as a counter which incremet its value each time the button is pressed. This code block will operate from void loop 
 

Code

/*Paste your code here*/

#define t 900

const char l1 = 2;
const char l2 = 3;
const char l3 = 4;
const char l4 = 5;
const char boton = 6;
int contador_pulsaciones = 0;

void patronLED(int g);

void setup() {

  for(int i = 2; i<=5; i++) pinMode(i, OUTPUT);
  
  for(int i = 2; i<=5; i++) digitalWrite(i, LOW);

  pinMode(boton,INPUT_PULLUP);

}

void loop() {

unsigned char estado = digitalRead(boton);

delay(90);

if(estado == false) {
  delay(100);

 if (contador_pulsaciones >=5) contador_pulsaciones = 0;

 else contador_pulsaciones++;
  }

else patronLED(contador_pulsaciones);

}

void patronLED(int g){

switch(g){

  case 1:
    for(int i = 2; i<=5; i++) {digitalWrite(i, HIGH);}
    delay(t);
    for(int i = 2; i<=5; i++) {digitalWrite(i, LOW);}
    delay(t);
    break;

  case 2:
   for(int i = 2; i<=5; i+=2) {digitalWrite(i, HIGH);}
   for(int i = 3; i<=5; i+=2) {digitalWrite(i, LOW);}
    delay(t);
   for(int i = 2; i<=5; i+=2) {digitalWrite(i, LOW);}
   for(int i = 3; i<=5; i+=2) {digitalWrite(i, HIGH);}
    delay(t);
   break;

   case 3:
   for(int i = 2; i<=5; i++) digitalWrite(i, LOW);
   for(int i = 2; i<=5; i++) {
    digitalWrite(i, HIGH);
    digitalWrite(i-1, LOW);
    delay(t);
   }
   break;

   case 4: 
    for(int i = 2; i<=3; i++) {digitalWrite(i, HIGH);}
    for(int i = 4; i<=5; i++) {digitalWrite(i, LOW);}
    delay(t);
    for(int i = 2; i<=3; i++) {digitalWrite(i, LOW);}
    for(int i = 4; i<=5; i++) {digitalWrite(i, HIGH);}
    delay(t);
    break;
   
   case 5:
    for(int i = 2; i<=5; i+=3) {digitalWrite(i, HIGH);}
    for(int i = 3; i<=4; i++) {digitalWrite(i, LOW);}
    delay(t);
    for(int i = 2; i<=5; i+=3) {digitalWrite(i, LOW);}
    for(int i = 3; i<=4; i++) {digitalWrite(i, HIGH);}
    delay(t);
    break;

   default:
    for(int i = 2; i<=5; i++) digitalWrite(i, LOW);
    break;

}

 

 

 

Output

Video

Add a video of the output (know more)

 

 

Upvote
Downvote

Submit Your Solution

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