]> git.piffa.net Git - sketchbook_andrea/blob - oggi/button_state_4_final/button_state_4_final.ino
State and loops, array
[sketchbook_andrea] / oggi / 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)));      
24       // Il processore setta lo stato di un led
25       // impostando il relativo PIN: possiamo leggere il relativo registro 
26       // allo stesso modo di un bottone.
27   }
28
29   ultimoStato = statoAttuale;    // Aggiorna lo stato finale al valore attuale
30 }
31
32
33
34 /* Domande:
35
36  1. La variabile ledstatus serve per tenere traccia dello stato del LED: 
37     si potrebbe fare a meno di questa? 
38     Cosa fa Arduino quando deve accendere o spegnere un LED?
39     Come funziona DigiralRead() ?
40
41  .
42  .
43  .
44  .
45  .
46  .
47  .
48  .
49  .
50  .
51  .
52  .
53  .
54  .
55  .
56  Soluzione:
57
58  1. Per accendere o spegnere un LED Arduino imposta il valore del registro corrispondente
59     al PIN: se questo e' 0 il circuito e' aperto mentre se e' 1 il circuito e' chiuso.
60     Allo stesso modo con DigitalRead() e' possibile leggere lo stato di quel regustro
61     e conoscere se il LED e' acceso o spento.    
62  */