Un semaforo con Arduino


Secondo appuntamento con arduino; questa volta parliamo di semafori (naturalmente per modellismo).
Ottenere il funzionamento di un semaforo usando componenti hardware, non è un'impresa semplicissima: occorrono un timer NE555, un Johnson counter 4017 e vari altri componenti (vedere ad esempio lo schema nell'ebook "Introduzione all'elettronica").
Usando un microcontrollore come arduino, tutto si realizza in un attimo, caricando due righe di codice e con una componentistica ridotta all'osso. Diventa tutto così semplice, che quasi mi vergogno di dedicarci questa paginetta!
Si tratta di ottenere la normale sequenza di accensione dei tre led colorati: il rosso, poi il verde, poi il giallo per un tempo più breve, e di nuovo il rosso. Come pin ho utilizzato in questo caso l'11, il 12 e il 13, dopo averli definiti come "output". I led vengono accesi in sequenza con l'istruzione digitalWrite(red, HIGH); e spenti con l'istruzione digitalWrite(red, LOW);

Per i vari collegamenti è opportuno usare una breadboard (basetta per montaggi sperimentali):

3 led su breadboard collegata alla scheda di arduino

Questo è il semplicissimo codice da caricare in memoria:

// semaforo

#define red 11             // il pin 11 viene definito col nome "red" perchè collegato al led rosso
#define yellow 12       // il pin 12 viene definito col nome "yellow" perchè collegato al led giallo
#define green 13        // il pin 13 viene definito col nome "green" perchè collegato al led verde

void setup() {
pinMode(11, OUTPUT);  // imposta i pin digitali 11, 12 e 13 come output
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(red, HIGH);             //accende il rosso
delay(10000);                              //attende 10 secondi
digitalWrite(red, LOW);                 //spegne il rosso
digitalWrite(green, HIGH);        //accende il verde
delay(10000);                              //attende 10 secondi
digitalWrite(green, LOW);             //spegne il verde
digitalWrite(yellow, HIGH);       //accende il giallo
delay(2000);                                //attende 2 secondi
digitalWrite(yellow, LOW);             //spegne il giallo
}

Ed ecco, di seguito, uno schema meglio leggibile dell'assemblaggio:

schema collegamento di tre led su breadboard alla scheda di arduino

Dai tre pin 11, 12 e 13, i cavetti arrivano a tre resistenze da 220 ohm (una per ciascun led), e quindi all'anodo dei led; il catodo di ogni led è inserito nella "ground rail" della basetta, cioè nella linea di alimentazione negativa (quella collegata al "ground").


ebook "Introduzione all'elettronica"


Ritorna all'indice generale