]> git.piffa.net Git - sketchbook_andrea/blob - basic/buttons/blink_6_interrupt/blink_6_interrupt.ino
Clean up multitasking, bottoni con pooling e interrupts
[sketchbook_andrea] / basic / buttons / blink_6_interrupt / blink_6_interrupt.ino
1 /*
2   Blink v1
3
4   Accensione e spegnimanto di due LED utilizzando un interrupt:
5   un interrupt associato al PIN del bottone sollecita una ISR routine
6   che puo' essere richiamata in ogni momento a prescindere
7   da cosa il microprocessore sta facendo nel loop.
8
9   Nota: per togliere l'effetto bouncing del bottone:
10   - https://www.arduino.cc/en/tutorial/debounce
11   vedi esercizio: sketchbook_andrea/advanced_projects/interrupts/debounce/debounce.ino
12 - https://lab.piffa.net/sketchbook_andrea/advanced_projects/interrupts/debounce/debounce.ino
13  
14  */
15
16 // Pin 13 ha un LED collegato di default
17 const int ledA = 13;
18 const int ledB = 12; //Secondo LED, con resistenza
19 const int pausa = 5000; 
20
21 void setup() {
22   // Inizializziamo il PIN 13 come OUTPUT
23   pinMode(ledA, OUTPUT);
24   pinMode(ledB, OUTPUT);
25
26   pinMode(2, INPUT_PULLUP);
27   attachInterrupt(0, reazioneISR, FALLING); // 0 e' l'interrupt numero 0
28   // connesso al PIN D2, l'interrupt 1 e' connesso al PIN D3
29   // eventoAttivo : nome della funzione da richiamare
30   // per un ISRs e' sempre VOID
31   // LOW | RISING | FALLIN | CHANGE | HIGH
32 }
33
34 void loop() {
35   digitalWrite(ledA, HIGH);
36   delay(pausa);
37   digitalWrite(ledA, LOW);
38   delay(pausa);
39 }
40
41 void reazioneISR() // Sempre VOID
42 {
43   digitalWrite(ledB, !digitalRead(ledB));
44 }
45