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().
/* Prof. Maffucci Michele Ver.1 - 22.12.21 Impianto semaforico con attraversamento pedonale a richiesta */ // pin a cui sono connessi i LED byte rossoAuto = 13; byte gialloAuto = 12; byte verdeAuto = 11; byte rossoPedone = 10; byte verdePedone = 9; // pin a cui è connesso il pulsante di richiesta byte pulsante = 8; // tempo massimo di attraversamento del pedone int tempoAttraversamento = 10000; // definizione della variabile per l'impostazione // del cambio stato del semaforo auto unsigned long tempoCambio; void setup() { // inizializzazione timer tempoCambio = millis(); // inizializzazione dei pin come OUTPUT pinMode(rossoAuto, OUTPUT); pinMode(gialloAuto, OUTPUT); pinMode(verdeAuto, OUTPUT); pinMode(rossoPedone, OUTPUT); pinMode(verdePedone, OUTPUT); // inizializzazione pin come INPUT pinMode(pulsante, INPUT); // accensione luci verdi // all'avvio le auto hanno il verde e i pedoni il rosso digitalWrite(verdeAuto, HIGH); digitalWrite(rossoPedone, HIGH); digitalWrite(rossoAuto, LOW); digitalWrite(gialloAuto, LOW); digitalWrite(verdePedone, LOW); // inizializzazione della Serial Monitor Serial.begin(9600); } void loop() { // la variabile state viene utilizzata per sapere se il // pulsante di attraversamento viene premuto int stato = digitalRead(pulsante); // lo stato del pulsante viene visualizzato sulla Serial Monitor Serial.println(stato); // Se viene premuto il pulsante e se sono // passati 5 secondi dall'ultima pressione del pulsante if (stato == HIGH && (millis() - tempoCambio) > 5000) { // chiama la funzione per il cambio luci cambioLuci(); } } void cambioLuci() { digitalWrite(verdeAuto, LOW); // il LED verde viene spento digitalWrite(gialloAuto, HIGH); // il LED giallo viene acceso per 2 secondi delay(2000); digitalWrite(gialloAuto, LOW); // il LED giallo viene spento digitalWrite(rossoAuto, HIGH); // il LED rosso viene acceso per 5 secondi digitalWrite(rossoPedone, LOW); // il LED rosso del pedone viene spento digitalWrite(verdePedone, HIGH); // il LED verde del pedone viene acceso delay(tempoAttraversamento); // lampeggio del LED verde dei pedoni for (int x = 0; x < 10; x++) { digitalWrite(verdePedone, LOW); delay(100); digitalWrite(verdePedone, HIGH); delay(100); } digitalWrite(verdePedone, LOW); digitalWrite(rossoAuto, LOW); digitalWrite(rossoPedone, HIGH); digitalWrite(verdeAuto, HIGH); 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.