Problema controllo su pin

ciao thecernius,

sì questo è un posto dove un principiante trova l'aiuto di esperti/professionisti che si prestano, appunto, per indirizzare e correggere gli errori di chi inizia (o di chi lo fa per hobby anche da tempo...come me :smiley: ).

detto questo...se accetti interruzioni nell'arco di qualche microsecondo, o millisecondo a seconda del tuo sketch, ti basta fare (pseudocodice):

setup:
oldMillis=millis(); // salvo il tempo ad avvio programma...meglio se ultima riga subito prima di entrare nel loop

loop:
se(pin==low){
oldMillis=millis(); // ogni volta che il pin va giù salvo il tempo attuale in una variabile
}
se(pin==high){
  se(millis()-oldMillis>=1800000){ // se il pin non va mai giù per 30 minuti (1000*60*30)
   digitalWrite(allarme,HIGH); // allora alzo l'allarme
  }
}

se invece non puoi permetterti nemmeno questo piccolissimo lasco di tempo :astonished: allora devi ricorrere all'uso di un interrupt....un passo alla volta.