]> git.piffa.net Git - sketchbook_andrea/commitdiff
final
authorAndrea Manni <andrea@piffa.net>
Thu, 24 Mar 2016 20:52:48 +0000 (21:52 +0100)
committerAndrea Manni <andrea@piffa.net>
Thu, 24 Mar 2016 20:52:48 +0000 (21:52 +0100)
basic/buttons/button_state_4_final/button_state_4_final.ino [new file with mode: 0644]

diff --git a/basic/buttons/button_state_4_final/button_state_4_final.ino b/basic/buttons/button_state_4_final/button_state_4_final.ino
new file mode 100644 (file)
index 0000000..26dcbf8
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+   Stato di un bottone
+ Legge lo stato di un input
+ */
+const int led = 13;
+const int buttonPin = 2;              
+boolean  statoAttuale;          // Variabile per leggere lo stato del bottone
+boolean ultimoStato;           // Variabile per registrare l'ultimo stato del bottone
+
+void setup() {
+  pinMode(buttonPin, INPUT);          // Set the switch pin as input
+  pinMode(led, OUTPUT);    
+  ultimoStato = digitalRead(buttonPin);   // Prima lettura del bottone 
+}
+
+void loop(){
+  statoAttuale = digitalRead(buttonPin);      // Legge lo stato del bottone e lo resistra in val
+  delay(20);                                  // riduce l'effetto bounce
+  if (statoAttuale != ultimoStato && statoAttuale == HIGH) { // due condizione contemporanee
+    // lo stato del bottone e' camabiato AND lo stato attuale e' HIGH
+      digitalWrite(led, !(digitalRead(led)));      // Il processore setta lo stato di un led
+      // impostando il relativo PIN: possiamo leggere il relativo registro allo stesso modo di un bottone.
+  }
+
+  ultimoStato = statoAttuale;        // Aggiorna lo stato finale al valore attuale
+}
+
+
+
+/* Domande:
+
+ 1. La variabile ledstatus serve per tenere traccia dello stato del LED: 
+    si potrebbe fare a meno di questa? 
+    Cosa fa Arduino quando deve accendere o spegnere un LED?
+    Come funziona DigiralRead() ?
+
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ Soluzione:
+
+ 1. Per accendere o spegnere un LED Arduino imposta il valore del registro corrispondente
+    al PIN: se questo e' 0 il circuito e' aperto mentre se e' 1 il circuito e' chiuso.
+    Allo stesso modo con DigitalRead() e' possibile leggere lo stato di quel regustro
+    e conoscere se il LED e' acceso o spento.    
+ */