Tutorial #1 Arduino Uno Led e Bottone




Iniziamo subito con uno dei progetti base da realizzare con Arduino uno! Per aumentarne la difficoltà vogliamo che Arduino si comporti come un relay che mantiene lo stato una volta premuto il bottone. Significa che quando premo il bottone, se il led era spento si accenderà, e rimarrà acceso finchè non ripremerò il bottone. Tutto ciò che vi servirà si trova nel vostro starter kit di Arduino se lo avete acquistato, altrimenti questi elementi si trovano in qualsiasi negozio di elettronica. Tutto ciò di cui abbiamo bisogno sono:

  • un diodo led
  • una resistenza da 220 ohm
  • un bottone
  • tre cavi colorati

Andiamo a collegare il bottone in mezzo alla breadboard, in modo tale da poter poi cablare il circuito con molta semplicità e comodità. Il bottone di arduino è un bottone normalmente APERTO (significa che farà passare corrente soltanto quando verrà premuto), e per collegarlo bisogna connettere un pin a 5V e l'altro pin sempre sullo stesso lato ad un pin digitale di arduino. Noi abbiamo scelto il pin digitale 7. Per creare una differenza di potenziale ai capi del bottone, andiamo a posizionare una resistenza da circa 400 ohm tra l'uscita del bottone (sulla breadboard, nel pin a fianco al quale e collegato il cavo che va al pin D7) e il ground di arduino (GND). Infine colleghiamo l'anodo del diodo led al pin 13 digitale (dotato di una resistenza interna che evita che il diodo si danneggi) e il catodo dello stesso al GND adiacente.



Il software che dovremo scrivere è molto facile! definiamo una macro (nominiamo) #define button 7 per il bottone e #define led 13 per il led. inizializziamo due variabili boolean a false (quando accendo arduino voglio che il led sia spento), una che controlla lo stato del bottone e una che gestisce lo stato del led (acceso o spento). successivamente nel void setup scriviamo pinMode(led,OUTPUT) per dire ad arduino che il pin 13 si comporterà come un output, e pinMode(button,INPUT) per dire ad arduino che dal pin 7 riceveremo un segnale.

nel void loop basterà acquisire il segnale letto dal bottone tramite un digitalRead(button) e successivamente controllare lo stato del led tramite un if(buttonstate==HIGH). se la condizione verrà verificata allora dobbiamo invertire lo stato del led ( se era acceso lo spegniamo, se era spento lo accendiamo: se ledstate era 1 diventa 0, se era 0 diventa 1) tramite un ledstate=!ledstate (il punto esclamativo in programmazione significa negazione, negando lo stato precedente otteniamo quello attuale desiderato). infine andiamo a scrivere fuori dall'if un digitalRead(led, ledstate) per modificare lo stato del led. ci raccomandiamo di aggiungere un delay al termine: quando andate a premere il bottone evita di svolgere il ciclo successivo del void loop, e quindi di acquisire uno o più stati diversi da quello attuale desiderato.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define button 7
#define led 13
bool ledstate=0;
void setup(){
    pinMode(led,OUTPUT);
    pinMode(button,INPUT);
}

void loop(){
if(digitalRead(button)==HIGH) #controlliamo che il bottone sia premuto
    ledstate= !ledstate; #lo stato viene invertito (da 0 a 1 o viceversa)
digitalWrite(led,ledstate);
delay(150); #aggiungiamo un ritardo di 150ms
}



Commenti