Hola amigos, tengo una duda sobre el código que arme de varias recopilaciones (soy aprendiz)
Quiero
Que cada cierto tiempo se encienda un led, un buzzer y muestre en el display el color del led encendido; por 5 segundos, pero si presiono el pulsador antes de los 5 segundos que se apague el led, buzzer y siga con la siguiente instrucción, que sería lo mismo pero con un led de otro color.
De antemano gracias.
Dejo el código que armé.
#include <LiquidCrystal.h>
#define Pulsador 13
int inicio = 0; //Estado de la salida al arrancar arduino
int estadoAC = 0; // Estado actual del boton
int estadoAN = 0; //Variable para guardar el estado anterior del pulsador
const int rs = 12, en = 11, d4 = 4, d5 = 3, d6 = 2, d7 = 1;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int ROJO = 5; // led rojo
const int AZUL = 7;
const int buzzer = 6;
void setup() {
pinMode(Pulsador, INPUT);
pinMode (ROJO, OUTPUT);
pinMode (buzzer, OUTPUT);
pinMode(AZUL, OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
lcd.print("hello world!");
delay (3000);
lcd.clear();
delay (1000);
pinMode(ROJO, OUTPUT);
}
void loop() {
// Turn off the blinking cursor:
lcd.noBlink();
delay(1000);
// Turn on the blinking cursor:
estadoAC = digitalRead (Pulsador); //Actualizamos el valor de la variable
if(estadoAC && estadoAN == 0) //
{
inicio = 1 - inicio;// asignamos el estado contrario
delay(100);
}
estadoAN = estadoAC;
if(inicio == 1)
{
lcd.blink();
digitalWrite (ROJO, HIGH);
digitalWrite (buzzer, HIGH);
lcd.print("ROJO ENCENDIDO");
delay(5000);
digitalWrite (ROJO, LOW);
digitalWrite (buzzer, LOW);
lcd.clear();
lcd.noBlink();
delay(1000);
}
else
{
digitalWrite (ROJO, LOW);
digitalWrite (buzzer, LOW);
lcd.clear();
lcd.noBlink();
delay(1000);
}
//segundo LED
// Turn off the blinking cursor:
lcd.noBlink();
delay(1000);
// Turn on the blinking cursor:
estadoAC = digitalRead (Pulsador); //Actualizamos el valor de la variable
if(estadoAC && estadoAN == 0) //
{
inicio = 1 - inicio;// asignamos el estado contrario
delay(100);
}
estadoAN = estadoAC;
if(inicio == 1)
{
lcd.blink();
digitalWrite (AZUL, HIGH);
digitalWrite (buzzer, HIGH);
lcd.print("AZUL ENCENDIDO");
delay(5000);
digitalWrite (AZUL, LOW);
digitalWrite (buzzer, LOW);
lcd.clear();
lcd.noBlink();
delay(1000);
}
else
{
digitalWrite (AZUL, LOW);
digitalWrite (buzzer, LOW);
lcd.clear();
lcd.noBlink();
delay(1000);
}
}