Questa esercitazione è dedicata ai miei studenti di 3′ (Automazione ed Elettronica Biomedicale) che come compito per le vacanze natalizie dovranno, partendo dall’esempio svolto, realizzare le 4 varianti richieste al fondo di questa lezione.
Introduzione
- In questo progetto bisognerà realizzare l’impianto semaforico per automobili e modificarlo secondo le specifiche indicate al fondo di questo post
- vengono utilizzati 3 LED: verde, giallo e rosso per simulare un semaforo reale
- vengono utilizzati 2 LED : verde e rosso per simulare il semaforo per i pedoni
- è presente un pulsante di richiesta attraversamento per i pedoni
Lista componenti
- 1 Breadboard
- 1 Arduino UNO
- 3 LED da 5mm (rosso, giallo, verde)
- 2 LEd da 5mm LED (rosso, verde)
- 5 resistori da 220 Ohm
- 1 resistore da 10 kOhm
- 1 pulsante normalmente aperto
- jumper
Collegamenti

Sketch
Per la realizzazione di questo progetto non avrete necessità di nessuna libreria da aggiungere all’IDE di Arduino.
L’automazione del semaforo sarà la seguente:
- Il semaforo per le automobili è sempre verde e la luce pedonale risulta sempre rossa a meno che qualcuno preme il pulsante.
- Quando viene premuto il pulsante dal pedone:
- il semaforo auto cambia da giallo e successivamente si spegne il giallo e si accende il rosso;
- sul semaforo pedonale si spegne il rosso e si accende il verde;
- le luci del semaforo pedonale rimangono in questo stato per un tempo pari a tempoAttraversamento
- successivamente il verde del semaforo pedonale lampeggia, terminata la sequenza di lampeggio si spegne e si accende il rosso;
- il semaforo delle auto passa da rosso a verde
Tutte queste funzioni sono svolte dalla funzione cambiabentoLuci().
19 | int tempoAttraversamento = 10000; |
23 | unsigned long tempoCambio; |
27 | tempoCambio = millis(); |
31 | pinMode(rossoAuto, OUTPUT); |
32 | pinMode(gialloAuto, OUTPUT); |
33 | pinMode(verdeAuto, OUTPUT); |
34 | pinMode(rossoPedone, OUTPUT); |
35 | pinMode(verdePedone, OUTPUT); |
38 | pinMode(pulsante, INPUT); |
42 | digitalWrite(verdeAuto, HIGH); |
43 | digitalWrite(rossoPedone, HIGH); |
44 | digitalWrite(rossoAuto, LOW); |
45 | digitalWrite(gialloAuto, LOW); |
46 | digitalWrite(verdePedone, LOW); |
55 | int stato = digitalRead(pulsante); |
58 | Serial.println(stato); |
63 | if (stato == HIGH && (millis() - tempoCambio) > 5000) { |
70 | digitalWrite(verdeAuto, LOW); |
71 | digitalWrite(gialloAuto, HIGH); |
74 | digitalWrite(gialloAuto, LOW); |
75 | digitalWrite(rossoAuto, HIGH); |
77 | digitalWrite(rossoPedone, LOW); |
78 | digitalWrite(verdePedone, HIGH); |
79 | delay(tempoAttraversamento); |
82 | for ( int x = 0; x < 10; x++) { |
83 | digitalWrite(verdePedone, LOW); |
85 | digitalWrite(verdePedone, HIGH); |
88 | digitalWrite(verdePedone, LOW); |
89 | digitalWrite(rossoAuto, LOW); |
90 | digitalWrite(rossoPedone, HIGH); |
91 | digitalWrite(verdeAuto, HIGH); |
93 | tempoCambio = millis(); |
Esercizio 1
Aggiungere un sensore ad ultrasuoni che rileva la presenza del pedone in fase di attraversamento, fino a quando viene rilevato il pedone viene mantenuto il verde per il pedone ed il rosso per le auto. E’ presente sempre il pulsante di richiesta attraversamento.
Esercizio 2
Ampliare l’esercizio 1 aggiungendo un display a 7 segmenti utilizzato come conto alla rovescia (da 9 a 0) per i pedoni quando attraversano.
Esercizio 3
Ampliare l’esercizio 1 aggiungendo un buzzer che con un segnale pulsante variabile, indica l’approssimarsi del rosso.
Esercizio 4
Ampliare l’esercizio proposto in questa lezione trasformando l’impianto semaforico da 1 via a 4 vie con rispettivi attraversamenti pedonali sulle 4 strade.
Per coloro che non sono miei studenti, sul mio Patreon nei prossimi giorni verrà proposta:
- La soluzione a tutti gli esercizi proposti con schemi di collegamento e codice
- Video di spiegazione
- Sorgenti STL per la stampa 3D di un semaforo da poter essere inseriti all’interno di un plastico
- Proposta progettuale per la realizzazione di un kit didattico per lo sviluppo di questa tipologia di esercizi.
Buon Making a tutti.