Problema controllo su pin

Buonasera a tutti,

vi spiego meglio il problema. allora ho uno strumento in input digitale quindi ricevo o 0 o 1 ... ora ho necessita che per 30 minuti ci sia un controllo costante sul pin digitale esempio pin 9... quindi per trenta minuti, se il pin 9 è stato SEMPRE ACCESO far partire l'allarme sonoro sul pin 8. però il controllo deve essere costante per 30 minuti continuamente passati questi 30 minuti sempre acceso quindi con valore 1, far scattare allarme su pin 8. spero di esere stato chiaro se possibile mandatemi la stringa per messaggio privato o condividete qua per tutti è ancora meglio. scusaateee in anticipo ma ripeto sono agli inizi :slight_smile: sono un nabbo!

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

thecernius:
.... mandatemi la stringa per messaggio privato o condividete qua per tutti è ancora meglio.

Emmm, no, mi spiace, ma qui NON funziona così ... come puoi ben leggere nel su richiamato regolamento al punto 16.1 :confused: ... per cui, come tale punto spiega, noi qui ti aiutiamo a sistemare/correggere il software che TU devi scrivere.

Tutti i link per studiare sono riportati nel punto 16.1, ti suggerisco anche QUESTO libro ... vedrai che poi sarai in grado di scrivere il tuo programma ... :slight_smile:

Guglielmo

mi scuso per la presentazione ma l'ho fatta in concomitanza di questo post, ok sto studiando, partendo da 0 speravo nell'aiuto di un forum ho sbagliato posto chiedo ancora scusa pensavo fosse un posto per chi è alle prime armi.

thecernius:
... scusa pensavo fosse un posto per chi è alle prime armi.

ma assolutamente lo è ! ... però leggi bene anche il punto 16.13 e capirai quale è la filosofia :wink:

Cerchiamo di evitare la "pappa fatta" perché chi la usa (== copia/incolla), normalmente, NON impara nulla ! :wink:

Guglielmo

Nel tuo caso, per il problema che descrivi, l'aiuto è la seguente indicazione ...

... devi studiarti come si usa la millis(), prima QUI, poi QUI ed infine leggi anche QUI e QUI ... vedrai che ti sarà tutto più chiaro :wink:

Guglielmo

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.