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.

laboratorio
laboratorio
Semaforo con Arduino
Tipo di risorsa Tipo: laboratorio
Materia di appartenenza Materia: Sistemi automatici per le superiori 1
Avanzamento Avanzamento: laboratorio completa al 100%
Semaforo pedonale

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.

Ciclo di lavoro
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Ω.

 
Semaforo con arduino

La tabella che segue mostra la tipologia e il numero di componenti utilizzati.

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.