X-Git-Url: http://git.piffa.net/web?a=blobdiff_plain;f=basic%2Fbuttons%2Fbutton_state_4_state_and_condition%2Fbutton_state_4_state_and_condition.ino;h=5ac087927d40dbc49e4b345791375a3ffde06fca;hb=2833f00daaa67fa16122dc20873a1f00a346abf8;hp=42fd3a05f82838fb705e564a14a41fd83261eeb5;hpb=0807dd2a57e859d7fc246d8eb02692ea4d0da248;p=sketchbook_andrea diff --git a/basic/buttons/button_state_4_state_and_condition/button_state_4_state_and_condition.ino b/basic/buttons/button_state_4_state_and_condition/button_state_4_state_and_condition.ino index 42fd3a0..5ac0879 100644 --- a/basic/buttons/button_state_4_state_and_condition/button_state_4_state_and_condition.ino +++ b/basic/buttons/button_state_4_state_and_condition/button_state_4_state_and_condition.ino @@ -6,23 +6,23 @@ */ int led = 13; int buttonPin = 2; -int statoAttuale; // variable for reading the pin status -int ultimoStato; // variable to hold the last button state +int statoAttuale; // Variabile per leggere lo stato del bottone +int ultimoStato; // Variabile per registrare l'ultimo stato del bottone int ledStatus; // varabile per mantenere lo stato del led void setup() { - pinMode(buttonPin, INPUT); // Set the switch pin as input + pinMode(buttonPin, INPUT); // Set the switch pin as input pinMode(led, OUTPUT); - Serial.begin(9600); // Set up serial communication at 9600bps - ultimoStato = digitalRead(buttonPin); // read the initial state - ledStatus = 0; + Serial.begin(9600); // Attiva la comunicazione seriale a 9600bps + ultimoStato = digitalRead(buttonPin); // Prima lettura del bottone + ledStatus = 0; // Il LED viene inpostato come spento } void loop(){ - statoAttuale = digitalRead(buttonPin); // read input value and store it in var - delay(20); // riduce l'effetto bounce - if (statoAttuale != ultimoStato && statoAttuale == HIGH) { - // the button state has changed AND the button is pressed + 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 Serial.println("Button premuto"); ledStatus = !ledStatus ; // Inverte lo stato del LED @@ -32,10 +32,41 @@ void loop(){ Serial.println(ledStatus) ; } - ultimoStato = statoAttuale; // save the new state in our variable + ultimoStato = statoAttuale; // Aggiorna lo stato finale al valore attuale digitalWrite(led, ledStatus); // setta il led allo stato richiesto } +/* 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 registro + e conoscere se il LED e' acceso o spento. + - https://www.arduino.cc/en/Reference/PortManipulation + - http://www.instructables.com/id/Microcontroller-Register-Manipulation/ + */