tengo un problema con las interrupciones

hola soy nuevo en la comunidad, tengo un problema con las interrupciones.

lo que quiero que haga mi programa es lo siguiente:
presionar bot贸n y cuando lo suelte que tenga un delay de 5 y si lo vuelvo a presionar que se reinicie el delay, siempre que lo precione se debe de reiniciar y si pasan mas de los 5 segundos sin presionar que se apague el led.

ayuda por favor :cry: :cry:

]nt Btn0 = 2;
int pinLed = 13;
boolean estado =0;

void setup() {
聽pinMode(Btn0, INPUT_PULLUP); 
聽pinMode(pinLed, OUTPUT);
聽attachInterrupt(digitalPinToInterrupt(Btn0),cambioEstado, FALLING);
聽Serial.begin(9600);
}

void loop() {
聽cambioEstado();
聽delay(5000);
聽digitalWrite(pinLed,LOW);
}

/* La funcion de interrupcion cambia el estado actual del led */
void cambioEstado() {
聽estado=true;
聽digitalWrite(pinLed,estado);

}[/code

Hola, tienes de momento dos problemas.
El primero es que no te has le铆do las normas, sobre todo en la parte donde te explica como poner el c贸digo.
Revisa las normas y luego pasamos al segundo problema.

Tu problema es la funci贸n delay(), practicamente no sirve para nada, podr铆as hacerlo funcionar con una interrupci贸n a tu programa, pero seria una victoria pirrica, no podr铆as avanzar hacia programas mas completos. Empieza con el ejemplo del IDE blink sin delay.
Saludos

La respuesta de mi pregunta es la siguiente:.
:slight_smile:

聽 聽 const int buttonPin = 2; 
聽 聽 const int ledPin =聽 13; 
聽 聽 int buttonState = LOW;聽 
聽 聽 int ledState = LOW; 

聽 聽 void setup(){
聽 聽 聽 聽 pinMode(ledPin, OUTPUT);
聽 聽 聽 聽 pinMode(buttonPin, INPUT);
聽 聽 }

聽 聽 void loop() {
聽 聽 聽 聽 buttonState = digitalRead(buttonPin);
聽 聽 聽 聽 ledState = digitalRead(ledPin);

聽 聽 聽 聽 if(buttonState == HIGH && ledState == LOW){
聽 聽 聽 聽 聽 聽 digitalWrite(ledPin, HIGH);
聽 聽 聽 聽 } else {
聽 聽 聽 聽 聽 聽 if(ledState == HIGH && buttonState == LOW){
聽 聽 聽 聽 聽 聽 聽 聽 delay(5000);
聽 聽 聽 聽 聽 聽 聽 聽 digitalWrite(ledPin, LOW);
聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 }

聽 聽 }

Perfecto, pero no tomes a mal mi consejo, intenta modificarlo para que funcione sin delays(), te puedo asegurar que sera tiempo bien invertido.
Saludos