In questa lezione si imparerà ad utilizzare il bottone a pressione per accedere e spegnere un LED. Premendo un primo bottone si accenderà il LED, mentre premendo il secondo bottone il led verrà spento.
Componenti Richiesti:
- (1) x Elegoo UNO R3 (Arduino UNO)
- (1) x Breadboard con 830 punti di aggancio
- (1) x LED rosso da 5mm
- (1) x Resistenza da 220 ohm
- (2) x Interruttore a pressione (bottone)
- (7) x Connettori M-M (Connettori Maschio-Maschio)
Tutto il materiale necessario è presente in Elegoo Advanced Starter Kit.
In seguito il diagramma di collegamento:
In seguito lo schema elettrico:
Gli interruttori sono componenti molto semplici. Quando premi un bottone vengono connessi due contatti, in modo che l’elettricità possa fluire attraverso di essi. Il piccolo interruttore tattile che viene utilizzato in questa lezione ha quattro connessioni.
Nonostante il corpo dell’interruttore sia quadrato, i pin sporgono da due lati opposti dell’interruttore. Questo significa che i pin permettono l’inserimento dell’interruttore solamente in un verso sulla breadboard, questo è l’unico verso corretto per evitare cortocircuiti.
Ricordati che il LED deve avere il piedino più corto (negativo) collegato a sinistra.
Ecco il codice che permette di effettuare questi passaggi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
int ledPin = 5;//dichiaro la variabile ledPin e assegno il valore del pin digitale corrispondente int buttonApin = 9; //dichiaro la variabile buttonApin e assegno il valore del pin digitale corrispondente int buttonBpin = 8; //dichiaro la variabile buttonBpin e assegno il valore del pin digitale corrispondente byte leds = 0; void setup() { pinMode(ledPin, OUTPUT); //imposto ledPin come variabile Output pinMode(buttonApin, INPUT_PULLUP); //imposto buttonApin come variabile input pinMode(buttonBpin, INPUT_PULLUP);//imposto buttonBpin come variabile input } void loop() { if (digitalRead(buttonApin) == LOW) //se lo stato del bottone A è LOW allora... { digitalWrite(ledPin, HIGH); //accendo il LED } if (digitalRead(buttonBpin) == LOW) //se lo stato del bottone B è low allora... { digitalWrite(ledPin, LOW); //spengo il LED. } } |
Una volta caricato il codice sulla propria board di Arduino, premendo il bottone di sinistra il led si accenderà, premendo invece quello di destra il led verrà spento.
La prima parte del codice definisce tre variabili, una per ogni singolo dei tre pin che verranno usati.
Il “ledPin” è il pin di output, “buttonApin” è il primo dei due bottoni per accendere e spegnere il led, mentre “buttonBpin” è il secondo bottone dei due.
La funzione setup definisce ledPin come un OUTPUT normale, ma ora andiamo a vedere come comportarci con gli altri due input. In questo caso il pinMode dei due interruttori verrà settato così come vedi di seguito ad “INPUT_PULLUP”:
Impostare la modalità di input come INPUT_PULLUP significa che il pin verrà utilizzato come input, ma che se nient’altro è connesso al pin di output esso dovrà essere “pulled up” quindi in modalità HIGH. In altre parole, il valore di default dell’input sarà HIGH a meno che venga portato a LOW della pressione del bottone che ha l’altra coppia di piedini è connesso all’uscita GND.Quando un bottone viene premuto, connette il pin di input al pin GND perciò il primo non sarà più in modalità HIGH.
Dato che l’input è normalmente in HIGH, e viene portato a LOW solamente quando viene premuto il bottone, il senso del bottone è impostato al contrario. Ci occuperemo di questo in seguito, nella funzione “loop”.
Nella funzione di “loop” ci sono due istruzioni “if”. Una per ogni bottone. Ognuna di esse esegue una lettura “digitalRead” dell’opportuno input.
Ricorda che quando un bottone viene premuto il corrispondente input verrà impostato a LOW, se il bottone A è portato a LOW allora la funzione “digitalWrite” su ledPin verrà impostato ad HIGH, accendendo il led. Ugualmente, quando il bottone B viene premuto, viene impostato ledPin a LOW spegnendo il led.
Link Utili:
Arduino IDE: la struttura condizionale IF #4
Arduino IDE: operatori aritmetici, relazione e logici #3
Arduino IDE: variabili, costanti e macro #2
Arduino IDE: in che maniera si crea un programma? #1
Arduino IDE: che cos’è e come funziona #0