]> git.piffa.net Git - sketchbook_andrea/blob - advanced_projects/interrupts/doppia_ISR/doppia_ISR.ino
8577def2162549055ddf3becd7f681933c6cdf54
[sketchbook_andrea] / advanced_projects / interrupts / doppia_ISR / doppia_ISR.ino
1 /*
2  * Interrupt doppia ISR
3  * 
4  * Utilizzo di un interrupt ala Arduino per intercettare
5  * la pressione di un bottone.
6  * 
7  * Doppia ISR: la prima ISR intercetta FALLING
8  * e riconfigura l'interrupt con RISING a una seconda
9  * ISR che a sua volta ripristina il comportamento
10  * precedente.
11  */
12
13 int ledPin = 13; 
14
15 void setup()
16 {
17   pinMode(ledPin, OUTPUT);
18   pinMode(2, INPUT_PULLUP);
19   attachInterrupt(0, eventoFall, FALLING);
20   // Partiamo intercettanto un interrupt FALLING
21 }
22
23 void loop()
24 {
25 // Tutto avviene nelle ISRs
26 }
27
28 void eventoFall() // Sempre VOID
29 {
30   digitalWrite(ledPin, HIGH);
31   attachInterrupt(0, eventoRise, RISING); 
32 }
33
34 void eventoRise() // Sempre VOID
35 {
36   digitalWrite(ledPin, LOW);
37   attachInterrupt(0, eventoFall, FALLING); 
38 }