Nell’articolo di oggi vedremo come iniziare a collegare e programmare i vari moduli e sensori presenti sulla Smart Home di keyestudio simulando l’accensione della luce di una stanza utilizzando un bottone e un led.
In questo progetto, controlleremo l’accensione e lo spegnimento del LED tramite il modulo contente il bottone. Quando premeremo il pulsante accenderemo il led e una volta rilasciato sarà spento.
Vedremo anche come accedenere e spegnere il led senza tenere premuto il pulsante.
Arriviamo subito al sodo.
I materiali da utilizzare sono i seguenti:
- Board e shiled collegati
- Led
- bottone
- cavo usb fornito dal kit
- 2 cavi dotato di 3 pin F-F
Diagramma di collegamento
Non è necessario seguire in modo rigoroso questo diagramma di collegamento, puoi collegare il led in modo indistinto dal PIN 0 al pin 13, basta che si rispettino il collegamento dei pin G (Ground), V (Vcc) e S. Come riportato nel precedente articolo introduttivo collegate nella fase di assemblaggio i cavi in modo tale che il filo nero corrisponda a G, quello rosso corrisponda a R e quello dell’altro colore corrisponda a S. In questo modo potrai collegare in modo sicuro e rapido il modulo/sensore sulla shiled. Inoltre puoi anche collegarli “a caso” su una qualsiasi terna di pin dal n.0 al 13 e poi quando vuoi utilizzare quel sensore/modulo verifichi dove è stato collegato. Io personalmente farei una tabella a cui associo a ogni sensore/modulo alla terna dei pin a cui è stata collegato.
Codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int ledpin = 5; // Define the led light in D5 int inpin = 4; // Define the button in D4 int val; // Define variable val void setup () { pinMode (ledpin, OUTPUT); // The LED light interface is defined as output pinMode (inpin, INPUT); // Define the button interface as input } void loop () { val = digitalRead (inpin); // Read the digital 4 level value and assign it to val if (val == LOW) // Whether the key is pressed, the light will be on when pressed {digitalWrite (ledpin, HIGH);} else {digitalWrite (ledpin, LOW);} } |
Apri arduino IDE e scrivi il seguente codice, una volta fatto sei pronto per caricare il codice sulla board arduino.
La differenza rispetto ai due progetti precedenti consiste nell’utilizzo della struttura condizionale if.
Se la condizione dell’if è verificata (ossia bottone premut) allora accendo il LED; altrimenti (quando togliamo il dito dal pulsante) il led si spegnerò.
Prova
Ora avrai modo ti tenere premuto il bottone e vedere che il led si accende, appena toglieremo il dito il led si spegnerà.
Ora tocca a te
Prova a far si che quando il led rimanga accesso o spento anche quando togli il dito.
Versione 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
int pinLed = 5; int pinButton = 4; int valButtonOld = LOW; // Memorizza lo stato passato del pulsante (evita letture multiple) int ledState = LOW; // Memorizza lo stato del led (Acceso o spento) void setup() { pinMode(pinLed, OUTPUT); pinMode(pinButton, INPUT); } void loop() { int valButton = digitalRead(pinButton); if(valButton==HIGH && valButtonOld==LOW) ledState = !ledState; // Inverte lo stato (da ON a OFF, da OFF a ON) digitalWrite(pinLed, ledState); valButtonOld = valButton; } |
Se vuoi premere velocemente il bottone e non far “impazzire” la scheda inserisci un delay.
Descriviamo le aggiunte rispetto al codice precedente,
La variabile valButtonOld memorizza la lettura precedente del pulsante. Evitiamo letture multiple. Anche se non semrbra nel fragente in cui premiamo il bottone per arduino ci sono vari stati HIGH nel mezzo e per questo motivo si aggiunge questa variabile. Il discorso è più complesso non voglio qui tediarvi con questo.
ledState: Memorizza lo stato del led (se acceso o spento). Premuto il pulsante, nel caso in cui il led sia acceso questo viene spento viceversa nel caso in cui il led sia spento questo viene acceso.
Iscriviti ai nostri gruppi Telegram
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano