]> git.piffa.net Git - sketchbook_andrea/blobdiff - advanced_projects/interrupts/base/base.ino
interrupts
[sketchbook_andrea] / advanced_projects / interrupts / base / base.ino
index 9b23dc6cc9ec32b435f57b77e76f763dc27742c4..db4aea2153ae77bd33a7b2e59563217c651aedea 100644 (file)
@@ -1,9 +1,19 @@
 /*
- * Interrupt base
- * 
- * Utilizzo di un interrupt ala Arduino per intercettare
- * la pressione di un bottone.
- * 
+   Interrupt base
+   
+   Utilizzo di un interrupt ala Arduino per intercettare
+   la pressione di un bottone.
+
+   Un momentary switch e' collegato in PULL UP al PIN D2
+   La Interrupt Service Routine reazioneISR viene associata all'interrupt 0
+   che reagisce al passaggio di stato 5v -> 0v del PIN D2
+
+   La pressione del bottone causa l'accensione del bottone
+   che viene spento periodicamente ogni 3 secondi nel loop,
+   il delay non pregiudica la percezione dell'evento.
+
+Schema: https://www.arduino.cc/en/uploads/Tutorial/inputPullupButton.png
+   
  */
 
 int ledPin = 13; 
@@ -11,7 +21,8 @@ int ledPin = 13;
 void setup()
 {
   pinMode(ledPin, OUTPUT);
-  attachInterrupt(0, eventoAttivo, RISING); // 0 e' l'interrupt numero 0
+  pinMode(2, INPUT_PULLUP);
+  attachInterrupt(0, reazioneISR, FALLING); // 0 e' l'interrupt numero 0
       // connesso al PIN D2, l'interrupt 1 e' connesso al PIN D3
       // eventoAttivo : nome della funzione da richiamare
       // per un ISRs e' sempre VOID
@@ -21,11 +32,11 @@ void setup()
 void loop()
 {
   // Varie altre cose che da cui non dipende la gestione dell'interrupt
-  delay(5000);
+  delay(3000);
   digitalWrite(ledPin,LOW);
 }
 
-void eventoAttivo() // Sempre VOID
+void reazioneISR() // Sempre VOID
 {
   digitalWrite(ledPin, HIGH);
 }