]> git.piffa.net Git - sketchbook_andrea/blob - advanced_projects/interrupts/doppia_ISR/doppia_ISR.ino
interrupts
[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 in PULL UP.
6    
7    Doppia ISR: la prima ISR intercetta FALLING
8    e riconfigura l'interrupt con RISING per una seconda
9    ISR che a sua volta ripristina il comportamento
10    precedente.
11
12 Schema: https://www.arduino.cc/en/uploads/Tutorial/inputPullupButton.png
13  */
14
15 int ledPin = 13; 
16
17 void setup()
18 {
19   pinMode(ledPin, OUTPUT);
20   pinMode(2, INPUT_PULLUP);
21   attachInterrupt(0, eventoFall, FALLING);
22   // Partiamo intercettanto un interrupt FALLING
23 }
24
25 void loop()
26 {
27 // Tutto avviene nelle ISRs
28 }
29
30 void eventoFall() // Sempre VOID
31 {
32   digitalWrite(ledPin, HIGH);
33   attachInterrupt(0, eventoRise, RISING); 
34 }
35
36 void eventoRise() // Sempre VOID
37 {
38   digitalWrite(ledPin, LOW);
39   attachInterrupt(0, eventoFall, FALLING); 
40 }