Semaforo con Arduino
Il progetto che segue è pensato per il controllo del traffico e permette il passaggio di pedoni ogni volta che il primo semaforo abbia completato il suo ciclo verde-giallo-rosso.
Descrizione del progetto
[modifica]Il progetto esegue un ciclo di lavoro della durata di 16'' e viene creato tramite l'utilizzo di 6 led di cui 2 rossi, 2 gialli e infine 2 verdi. I led si accendono seguendo l'>ordine visibile nella seguente tabella.
Semaforo 1 | Semaforo 2 | Durata |
---|---|---|
Verde | Rosso | 3'' |
Giallo | Rosso | 2'' |
Rosso | Rosso | 3'' |
Rosso | Verde | 3'' |
Rosso | Giallo | 2'' |
Rosso | Rosso | 3'' |
Questo progetto ha poi la possibilità di essere utilizzato sia come semaforo pedonale sia come doppio semaforo per le automobili.
A destra, la mappa stradale a cui è ispirato il progetto.
Schema di montaggio
[modifica]Lo schema riportato mostra lo schema di montaggio di un semaforo controllato mediante l'uso di Arduino.
Lo schema mostra come posizionare i cavi e collegarli ad ogni singolo led; ogni gruppo di led è a sua volta collegato con una resistenza da 220Ω.
La tabella che segue mostra la tipologia e il numero di componenti utilizzati.
N. Componenti | Componenti |
---|---|
2 | Led verde |
2 | Led giallo |
2 | Led rosso |
2 | Resistenza da 220 Ohm |
Codice
[modifica]A seguire viene mostrato il codice che permette il funzionamento del semaforo pedonale.
// Qui vengono definite le costanti
int pinLedRed = 10;
int pinLedYellow = 9;
int pinLedGreen = 8;
int pinLedRed2 = 4;
int pinLedYellow2 = 3;
int pinLedGreen2 = 2;
//Qui vengono definiti quali pin siano in entrata o in uscita
void setup()
{
pinMode(pinLedGreen2, OUTPUT);
pinMode(pinLedYellow2, OUTPUT);
pinMode(pinLedRed2, OUTPUT);
pinMode(pinLedGreen, OUTPUT);
pinMode(pinLedYellow, OUTPUT);
pinMode(pinLedRed, OUTPUT);
}
// Qui viene definito il ciclo di lavoro e la rispettiva durata
void loop()
{
digitalWrite(pinLedGreen2, HIGH);
digitalWrite(pinLedRed, HIGH);
delay(3000); // Attendi per 3 secondi R | V
digitalWrite(pinLedGreen2, LOW);
digitalWrite(pinLedYellow2, HIGH);
delay(2000); // Attendi per 2 secondi R | G
digitalWrite(pinLedYellow2, LOW);
digitalWrite(pinLedRed2, HIGH);
delay(3000); // Attendi per 3 secondi R | R
digitalWrite(pinLedRed, LOW);
digitalWrite(pinLedGreen, HIGH);
delay(3000); // Attendi per 3 secondi V | R
digitalWrite(pinLedGreen, LOW);
digitalWrite(pinLedYellow, HIGH);
delay(2000); // Attendi per 2 secondi G | R
digitalWrite(pinLedYellow, LOW);
digitalWrite(pinLedRed, HIGH);
delay(3000); // Attendi per 3 secondi R | R
digitalWrite(pinLedRed2, LOW);
}
Espansioni suggerite
[modifica]Questo progetto è pensato per realizzare un semaforo pedonale comandato in maniera automatica tramite la scrittura di un programma eseguito da una scheda Arduino.
Il codice mostrato permette il corretto funzionamento del semaforo.
Il codice può essere espanso introducendo la chiamata per il semaforo.