Hola el siguiente codigo es para tres estado con dos pulsadores, el primer estado prende el rojo con un push button y
los otros dos estados es con otro push button el problema es que copie el codigo tal cual desde un tutorial de you tube
y no me funciona, si alguien me ayudara lo agradeceria.
Saludos.
Este es el link del tutorial:
Este es el codigo:
//Pines
const int PIN_LED_VERDE=2;
const int PIN_LED_AMARILLO=3;
const int PIN_LED_ROJO=12;
const int PIN_PULSADOR_CAMBIO=5;
const int PIN_PULSADOR_ONOF=11;
// Estados
const int ESTADO_OFF=0;
const int ESTADO_VERDE=1;
const int ESTADO_AMARILLO=3;
//Variables
int estado=ESTADO_OFF;
int pulsadorCambioAntes=LOW;
int pulsadorCambioAhora=LOW;
int pulsadorOnOffAntes=LOW;
int pulsadorOnOffAhora=LOW;
//Inicializamos
void setup(){
pinMode(PIN_LED_VERDE,OUTPUT);
pinMode(PIN_LED_AMARILLO,OUTPUT);
pinMode(PIN_LED_ROJO,OUTPUT);
pinMode(PIN_PULSADOR_CAMBIO,INPUT);
pinMode(PIN_PULSADOR_ONOF,INPUT);
}
void loop(){
obtenerDatos();
controlarCircuito();
}
//Funcionalidad
void obtenerDatos(){
pulsadorCambioAntes=pulsadorCambioAhora;
pulsadorCambioAhora=digitalRead(PIN_PULSADOR_CAMBIO);
pulsadorOnOffAntes=pulsadorOnOffAhora;
pulsadorOnOffAhora=digitalRead(PIN_PULSADOR_ONOF);
delay(50);
}
void controlarCircuito()
{
switch (estado){
case ESTADO_OFF:
controlarEstadoOff;
break;
case ESTADO_VERDE:
controlarEstadoVerde;
break;
case ESTADO_AMARILLO:
controlarEstadoAmarillo;
break;
}
}
void controlarEstadoOff(){
if( (pulsadorOnOffAntes==HIGH) && (pulsadorOnOffAhora==LOW)){
encenderVerde();
}
}
void controlarEstadoVerde(){
if( (pulsadorOnOffAntes==HIGH) && (pulsadorOnOffAhora==LOW) ){
apagar();
}
else if ((pulsadorCambioAntes==HIGH) && (pulsadorCambioAhora==LOW)){
encenderAmarillo();
}
}
void controlarEstadoAmarillo(){
if( (pulsadorOnOffAntes==HIGH) && (pulsadorOnOffAhora==LOW) )
{
apagar();
}
else if ((pulsadorCambioAntes==HIGH) && (pulsadorCambioAhora==LOW))
{
encenderVerde();
}
}
void encenderVerde(){
digitalWrite(PIN_LED_VERDE,HIGH);
digitalWrite(PIN_LED_AMARILLO,LOW);
digitalWrite(PIN_LED_ROJO,LOW);
estado=ESTADO_VERDE;
}
void encenderAmarillo(){
digitalWrite(PIN_LED_VERDE,LOW);
digitalWrite(PIN_LED_AMARILLO,HIGH);
digitalWrite(PIN_LED_ROJO,LOW);
estado=ESTADO_AMARILLO;
}
void apagar(){
digitalWrite(PIN_LED_VERDE,LOW);
digitalWrite(PIN_LED_AMARILLO,LOW);
digitalWrite(PIN_LED_ROJO,HIGH);
estado=ESTADO_OFF;
}