Buen día, tengo poco tiempo programando en arduino. Actualmente realizo un ejercicio en el cual enciendo un semáforo con un pulsador (push boton) y con el mismo pulsador este se apaga después de mantenerlo presionado dos segundos. Esta secuencia ya la tengo programada y funcionando.
Quisiera agregar una condición en la cual tengo agregado un segundo pulsador (push boton) con el que la idea sea que en cuanto este se presione independientemente de que este en verde o amarillo pase a rojo y se mantenga asi hasta que vuelva a presionar de nuevo este pulsador.
la programación que tengo hasta ahora es la siguiente.
//-------VARIABLES DE LOS BOTONES--------//
int bot_1 = 5;
int bot_2 = 7;
//-------VARIABLES DE LOS BOTONES--------//
int verde = 8;
int amarillo = 9;
int rojo = 10;
//-------VARIABLES DE LOS BOTONES--------//
int valor = 0;
int valor_antiguo = 0;
int estado = 0;
int tiempo = 2000;
void setup(){
//se declaran las variables como salidas o entradas dependiendo.
pinMode(bot_1,INPUT);
pinMode(bot_2,INPUT);
pinMode(verde,OUTPUT);
pinMode(amarillo,OUTPUT);
pinMode(rojo,OUTPUT);
}
void detener(){
estado = 0;
}
void loop(){
valor = digitalRead(bot_1);
if((valor==HIGH)&&(valor_antiguo==LOW)){
estado = 1 - estado;
delay(20);
}
valor_antiguo = valor;
Serial.print(valor);
Serial.print(valor_antiguo);
Serial.println(estado);
if(estado == 0){
digitalWrite(rojo,LOW);
digitalWrite(verde,LOW);
digitalWrite(amarillo,LOW);
}
if(estado == 1){
digitalWrite(rojo,LOW);
digitalWrite(verde,HIGH);
digitalWrite(amarillo,LOW);
delay(tiempo);
digitalWrite(rojo,LOW);
digitalWrite(verde,HIGH);
digitalWrite(amarillo,HIGH);
delay(tiempo/3);
digitalWrite(rojo,HIGH);
digitalWrite(verde,LOW);
digitalWrite(amarillo,LOW);
delay(tiempo);
digitalWrite(rojo,HIGH);
digitalWrite(verde,LOW);
digitalWrite(amarillo,HIGH);
delay(tiempo/3);
}
}