Estoy practicando con las interrupciones externas. He creado un programa que lo que hace es poner en marcha un LED al cabo de delay de 2000 ms. Lo que pretendo es detectar que se ha pulsado S0 y que no se active el LED. Para ello uso la interrupción externa 0. Pero no sé porque no funciona el programa.
A ver si alguien me arroja un poco de luz al respecto.
Gracias
byte etapa;
boolean S0, S1;
void setup() {
pinMode(13,OUTPUT);
pinMode(0,INPUT);
pinMode(2,INPUT);
attachInterrupt(0,parar,FALLING);
etapa = 0;
}
void loop() {
S0 = digitalRead(2);
S1 = digitalRead(0);
//TRANSICIONES
if (etapa == 0 & S0 == 1 & S1 == 1)
{
etapa = 1;
}
if (etapa == 1 & S0 == 1)
{
delay(2000);
etapa = 2;
}
//ACCIONES
if (etapa == 0)
{
etapa = 0;
digitalWrite(13,LOW);
}
if (etapa == 2)
{
digitalWrite(13,HIGH);
}
}
void parar()
{
etapa = 0;
}