Salve, sono nuovo del forum e mi sono avvicinato ad Arduino da quasi una settimana. Al liceo ho studiato un po' di C++ quindi non sono proprio a digiuno da questo linguaggio di programmazione, ma sono passati ormai 10 anni...
Arrivo al dunque: ho un Arduino UNO con collegamento a PIR e KEYPAD.
Ho intenzione di realizzare un sistema di allarme di rilevamento tramite PIR che funziona a loop che deve disattivarsi quando inserisco un codice su tastiera. Il problema è che visto il funzionamento del PIR a loop continuo, non riesco a trovare un modo per inserirmi nel loop senza interrompere il sensore.
vi scrivo tutto il loop, magari la situazione è più chiara!
In pratica il programma funziona perfettamente, inserisco il codice e si attiva il sensore PIR. Se sbaglio codice me lo fa riinserire.
Quello che devo aggiungere io è bloccare il sistema di allarme riinserendo il codice in un momento qualsiasi dell'esecuzione.
Secondo me devi scomporre le varie parti in funzioni separate, es. controllaPIR(), leggiKBD(), ecc. ecc. e dal loop() le richiami in continuazione una dopo l'altra.
NON devi usare l'istruzione delay() che è bloccante per il codice e che, in questo caso, creerebbe dei momenti di pausa inaccettabili. Devi imparare a fare le cose usando la millis() e, per capire come, prova a strudiare QUESTO articolo e poi QUESTO. Anche QUI trovi un possibile esempio.
Capito come scrivere codice non bloccante e scomposta la tua applicazione in funzioni elementari, le quali svolgono ciascuna un determinato compito, ti risulterà molto più facile fare quello che vuoi fare
gpb01:
Secondo me devi scomporre le varie parti in funzioni separate, es. controllaPIR(), leggiKBD(), ecc. ecc. e dal loop() le richiami in continuazione una dopo l'altra.
NON devi usare l'istruzione delay() che è bloccante per il codice e che, in questo caso, creerebbe dei momenti di pausa inaccettabili. Devi imparare a fare le cose usando la millis() e, per capire come, prova a strudiare QUESTO articolo e poi QUESTO. Anche QUI trovi un possibile esempio.
Capito come scrivere codice non bloccante e scomposta la tua applicazione in funzioni elementari, le quali svolgono ciascuna un determinato compito, ti risulterà molto più facile fare quello che vuoi fare
Guglielmo
Ti ringrazio, inizierò a riscrivere il programma dopo aver imparato la funzione millis().