From ffe4902e6049f035554c0684852714b713ef50b5 Mon Sep 17 00:00:00 2001 From: Andrea Manni Date: Thu, 24 Mar 2016 21:52:48 +0100 Subject: [PATCH] final --- .../button_state_4_final.ino | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 basic/buttons/button_state_4_final/button_state_4_final.ino 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 index 0000000..26dcbf8 --- /dev/null +++ b/basic/buttons/button_state_4_final/button_state_4_final.ino @@ -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. + */ -- 2.39.2