Arduino per tutti parte settima: apri e chiudi

Ed eccoci di nuovo qui, con la nostra puntata sull’uso di Arduino. Aumentiamo il grado di “interattività” del nostro progetto, inserendo due pulsanti per accendere e spegnere il nostro led.

Innanzitutto, vediamo quali componenti ci servono:
1) la scheda Arduino o similari (in questo caso, una Elegoo UNO R3)
2) 1 Breadboard
3) 1 LED rosso 5mm
4) 1 resistore da 220 ohm
5) 2 interruttori a pulsante
6) 6 cavi connettori maschio-maschio

View post on imgur.com

E ora qualche nota sull’hardware del progetto.
Gli interruttori sono componenti molto semplici. Quando si preme un pulsante, si collegano due contatti in modo che l’elettricità possa scorrere attraverso di loro.
I piccoli interruttori tattili utilizzati in questo nostro esperimento hanno quattro connessioni, il che può creare un po’ di confusione.
In realtà, gli interruttori hanno solo due connessioni elettriche. All’interno dell’interruttore, i perni B e C sono collegati tra loro, così come lo sono i perni A e D.
Tuttavia, non esiste problema nel montaggio, perché i perni sporgono da lati opposti del commutatore, quindi saranno inseribili nella breadboard solo se correttamente posizionati.
Inoltre, il LED deve avere il cavo negativo (quello più breve) verso destra.

Lo schema elettrico

View post on imgur.com

La struttura del progetto

View post on imgur.com

Ed ora passiamo al lato software.
Lo sketch non è particolarmente difficile da analizzare. Vediamolo nella sua totalità, poi analizzeremo le parti più interessanti.

Lo sketch

View post on imgur.com


int ledPin = 5;
int buttonApin = 9;
int buttonBpin = 8;

byte leds = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
}

void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
}

La prima parte dello sketch definisce le tre variabili corrispondenti ai tre perni da utilizzare. Le tre variabili sono tutti int perché sono numeri interi (int=integer). Con ‘ledPin’ ci si riferisce al pin di uscita, mentre ‘buttonApin’ e ‘buttonBpin’ faranno riferimento rispettivamente allo switch più vicino alla parte superiore della basetta per l’altro interruttore.
La funzione ‘setup’ definisce il ledPin come un’uscita (OUTPUT), come negli sketch precedenti. Le novità stanno tutte nella gestione dei due ingressi costituiti dagli interruttori. In questo caso, si pone pinMode come ‘INPUT_PULLUP’ in questo modo:
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);

In questo modo, informiamo la scheda che l’interruttore deve essere utilizzato come ingresso, e quindi il suo valore dovrebbe essere HIGH. Il valore standard per l’ingresso è HIGH, tranne quando viene attivato l’interruttore dall’azione della pressione del tasto. In questo caso, il valore di input diventa LOW (e quindi il led si spegne).
I due cicli if stabiliscono, per il primo bottone (quello di accensione) che se è il led è spento, occorre accenderlo (se è buttonApin LOW, cioè premuto, allora LedPin deve diventare HIGH, cioè deve accendersi), per il secondo quando il led deve essere spento (se buttonBpin è LOW, cioè premuto, allora LedPin deve diventare LOW,cioè spento).
Il tutto con due funzioni di tipo “if then”
void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
}

Ed ecco il risultato del nostro progetto:

View post on imgur.com

View post on imgur.com

View post on imgur.com

View post on imgur.com

E per stavolta è tutto. Alla prossima…

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *