#define led 4 //definimos el led con el puerto
#define led2 2 //definimos el led con el puerto
#define btn 13 //definimos el led con el puerto
int flag = 0; //inizialicamos la variable de estado
void setup() {
pinMode(led, OUTPUT); //definimos los leds
pinMode(led2, OUTPUT); //definimos los leds
pinMode(btn, INPUT_PULLUP); //definimos el botón
Serial.begin(115200); //inizializamos el monitor serie
}
void loop() {
delay(2000); //le ponemos un retraso de 2 seg
while (flag == 0) { //bucle que definimos que los leds esten apagados que es el primer estado
digitalWrite(led, LOW); //definimos que los leds estén apagados
digitalWrite(led2, LOW);
if (digitalRead(btn) == LOW) //dentro de este bucle si mantenemos el botón cambia el estado al siguiente
flag++;
}
while (flag == 1){ //bucle segundo estado
led_blink(); //llamamos la primera función
if (digitalRead(btn) == LOW) //mientras mantenemos el botón
flag++; //que sume la variable flag a 2
}
while(flag == 2){ //bucle tercer estado
led_blink2(); //llamamos la segunda función
if (digitalRead(btn) == LOW){
//mientras mantenemos el botón
flag = 0; //que sume la variable flag a 0
delay(2000); //tiene un retraso de 2 seg
}
}
}
void led_blink(){
digitalWrite(led2, HIGH); //le decimos que el led este encendido
digitalWrite(led, HIGH);
Serial.print("Blink "); //mientras que este esta función funcionando escribira en el monitor serie el siguiente mensaje
delay(1000); //tiene un retraso de 1 seg
digitalWrite(led2, LOW); //le decimos que el led este apagado
digitalWrite(led, LOW);
Serial.println("Off"); //mientras que este esta función funcionando escribira en el monitor serie el siguiente mensaje
delay(1000);
}
void led_blink2(){
digitalWrite(led2, HIGH);
digitalWrite(led, LOW);
Serial.print("Blink ");
delay(1000);
digitalWrite(led2, LOW);
digitalWrite(led, HIGH);
Serial.println("Off");
delay(1000);
}