]> git.piffa.net Git - sketchbook_andrea/blob - basic/buttons/button_state_4_final/button_state_4_final.ino
26dcbf834d6838f7097d241a5580cb15ceb9a538
[sketchbook_andrea] / basic / buttons / button_state_4_final / button_state_4_final.ino
1 /*
2    Stato di un bottone
3  
4  Legge lo stato di un input
5  
6  */
7 const int led = 13;
8 const int buttonPin = 2;              
9 boolean  statoAttuale;          // Variabile per leggere lo stato del bottone
10 boolean ultimoStato;           // Variabile per registrare l'ultimo stato del bottone
11
12 void setup() {
13   pinMode(buttonPin, INPUT);          // Set the switch pin as input
14   pinMode(led, OUTPUT);    
15   ultimoStato = digitalRead(buttonPin);   // Prima lettura del bottone 
16 }
17
18 void loop(){
19   statoAttuale = digitalRead(buttonPin);      // Legge lo stato del bottone e lo resistra in val
20   delay(20);                                  // riduce l'effetto bounce
21   if (statoAttuale != ultimoStato && statoAttuale == HIGH) { // due condizione contemporanee
22     // lo stato del bottone e' camabiato AND lo stato attuale e' HIGH
23       digitalWrite(led, !(digitalRead(led)));      // Il processore setta lo stato di un led
24       // impostando il relativo PIN: possiamo leggere il relativo registro allo stesso modo di un bottone.
25   }
26
27   ultimoStato = statoAttuale;        // Aggiorna lo stato finale al valore attuale
28 }
29
30
31
32 /* Domande:
33
34  1. La variabile ledstatus serve per tenere traccia dello stato del LED: 
35     si potrebbe fare a meno di questa? 
36     Cosa fa Arduino quando deve accendere o spegnere un LED?
37     Come funziona DigiralRead() ?
38
39  .
40  .
41  .
42  .
43  .
44  .
45  .
46  .
47  .
48  .
49  .
50  .
51  .
52  .
53  .
54  Soluzione:
55
56  1. Per accendere o spegnere un LED Arduino imposta il valore del registro corrispondente
57     al PIN: se questo e' 0 il circuito e' aperto mentre se e' 1 il circuito e' chiuso.
58     Allo stesso modo con DigitalRead() e' possibile leggere lo stato di quel regustro
59     e conoscere se il LED e' acceso o spento.    
60  */