]> git.piffa.net Git - sketchbook_andrea/blob - basic/buttons/button_state_3/button_state_3.ino
button state
[sketchbook_andrea] / basic / buttons / button_state_3 / button_state_3.ino
1 /*
2    Stato di un bottone
3  
4  Legge lo stato di un input
5  
6  */
7
8 int switchPin = 2;              // switch connesso al pin 2
9                                 // Nota: le prossime due variabili sono 
10                                 // solo "definite" e non "inizializzate"
11 int statoAttuale;               // Variabile per leggere lo stato del bottone
12 int ultimoStato;                // Variabile per registrare l'ultimo stato del bottone
13
14 void setup() {
15   pinMode(switchPin, INPUT);    // Set the switch pin as input
16
17   Serial.begin(9600);           // Set up serial communication at 9600bps
18   ultimoStato = digitalRead(switchPin);   // read the initial state
19 }
20
21
22 void loop(){
23   statoAttuale = digitalRead(switchPin);      // Legge lo stato del bottone e lo resistra in val
24    delay(20);                                 // riduce l'effetto bounce
25   if (statoAttuale != ultimoStato) { 
26       // verifica due condizioni che devono realizzarsi contemporaneamente
27     if (statoAttuale == HIGH) {               // il bottone e' stato premuto
28       Serial.println("Bottone premuto");
29     } 
30     else {                                    // il bottone non e' premuto...
31       Serial.println("Bottone rilasciato");
32     }
33   }
34
35   ultimoStato = statoAttuale;                 // Aggiorna lo stato finale al valore attuale
36 }
37
38 /* Domande:
39
40  1. Cosa succde se non uso un delay(20) alla lettura del bottone?
41  2. Implementare un LED che passa dallo stato acceso a spento quando viene premuto il bottone.
42  3. Quanti stati ha il LED?
43  4. Sarebbe possibile passare rapidamente da uno stato all'altro?
44  
45  */
46