uso interrupt
salve a tutti vorrei fare un piccolo semaforo usando la scheda arduino 1, ma utilizzzando l' interrupt; ho cercato di documentarmi riguardo l' interrupt ed ho visto alcuni esempi [u internet; espongo i miei dubbi.
allora specifiche:
- incrocio semaforico che in condizioni normali funziona e fin qui tutto tranquillo: ho aggiunto soltanto un led di segnalazione che normalmente è lampeggiante;
- quando viene attivato un cambio di stato sul pin 2 (a cui collego un pulsante per l' interrupt) voglio che i 4 semafori diventino rossi il led di segnalazione si accende di colore verde per un determinato tempo (diciamo 3 secondi): magari in quella determinata corsia far passare un mezzo di emergenza con una priorità maggiore.
- passati i 3 secondi il programma deve ritornare nello stato di normale funzionamento ed in particolare deve riprendere dallo stato precedente (ad esempio de il semaforo 1 dell' incrocio era verde ed il 2 era rosso, deve riprendere dalla stessa condizione)
i miei dubbi in particolare sono questi:
- come implementare la funzione ritardo dentro un interrupt (ho letto dal sito che delay e millis non possono essere utilizzate); posso creare io una funzione con un ciclo for che viene eseguito 1000000 di volte (1 istruzione 1 usec ad esempio) ?
- come posso memorizzare lo stato precedente del semaforo e magari rprendere da li il valore da immettere dopo la fine dell' interrupt? esiste qualche funzione dentro arduino che mi fa ciò oppure devo crearmi delle variabili dove memorizzare il tutto?
allora specifiche:
- incrocio semaforico che in condizioni normali funziona e fin qui tutto tranquillo: ho aggiunto soltanto un led di segnalazione che normalmente è lampeggiante;
- quando viene attivato un cambio di stato sul pin 2 (a cui collego un pulsante per l' interrupt) voglio che i 4 semafori diventino rossi il led di segnalazione si accende di colore verde per un determinato tempo (diciamo 3 secondi): magari in quella determinata corsia far passare un mezzo di emergenza con una priorità maggiore.
- passati i 3 secondi il programma deve ritornare nello stato di normale funzionamento ed in particolare deve riprendere dallo stato precedente (ad esempio de il semaforo 1 dell' incrocio era verde ed il 2 era rosso, deve riprendere dalla stessa condizione)
i miei dubbi in particolare sono questi:
- come implementare la funzione ritardo dentro un interrupt (ho letto dal sito che delay e millis non possono essere utilizzate); posso creare io una funzione con un ciclo for che viene eseguito 1000000 di volte (1 istruzione 1 usec ad esempio) ?
- come posso memorizzare lo stato precedente del semaforo e magari rprendere da li il valore da immettere dopo la fine dell' interrupt? esiste qualche funzione dentro arduino che mi fa ciò oppure devo crearmi delle variabili dove memorizzare il tutto?
