Elettronica E Hardware

Il Semaforo

Dopo aver fatto lampeggiare un singolo LED, il passo successivo è gestire più uscite contemporaneamente. Creare un semaforo non è solo un esercizio divertente, ma insegna a gestire la sequenzialità temporale e il coordinamento dei segnali digitali.

Arduino Uno | Il Semaforo

1. La Logica del Semaforo: Sequenza e Tempi

Obiettivo: Coordinare tre LED (Rosso, Giallo, Verde) | Stati: Sequenza ciclica

Per simulare un semaforo reale, dobbiamo gestire tre pin digitali diversi. La sequenza corretta prevede che solo un LED alla volta sia acceso (nella versione semplificata):

  • 1 ROSSO acceso: Stop (es. 5 secondi)
  • 2 VERDE acceso: Via (es. 5 secondi)
  • 3 GIALLO acceso: Pre-avviso di stop (es. 2 secondi)

LABORATORIO

Realizzare un Semaforo Virtuale

Progettiamo il circuito su Tinkercad utilizzando tre LED e tre resistenze.

Componenti Necessari

  • 1 Scheda Arduino Uno
  • 1 Breadboard
  • 3 LED (Rosso, Giallo, Verde)
  • 3 Resistenze da 220 Ω
  • Cavi Jumper

1 Montaggio del Circuito

Sulla breadboard, posiziona i tre LED. Ricorda: l'Anodo (gamba lunga) va verso i pin di Arduino, il Catodo (gamba corta) va verso la massa (GND).

  • LED Rosso: Anodo al Pin 12 tramite resistenza.
  • LED Giallo: Anodo al Pin 11 tramite resistenza.
  • LED Verde: Anodo al Pin 10 tramite resistenza.
  • Tutti i Catodi: Collegali alla linea blu della breadboard, che a sua volta va al GND di Arduino.

2 Il Codice: Gestione dei Tempi

In questo sketch, useremo variabili per rendere il codice più leggibile. Copia questo testo nell'editor di Tinkercad:


// Definiamo i pin
int rosso = 7;
int giallo = 4;
int verde = 1;

void setup() {
  // Configuriamo i tre pin come uscite
  pinMode(rosso, OUTPUT);
  pinMode(giallo, OUTPUT);
  pinMode(verde, OUTPUT);
}

void loop() {
  // STATO 1: Rosso acceso
  digitalWrite(rosso, HIGH);
  digitalWrite(giallo, LOW);
  digitalWrite(verde, LOW);
  delay(5000); // 5 secondi

  // STATO 2: Verde acceso
  digitalWrite(rosso, LOW);
  digitalWrite(giallo, LOW);
  digitalWrite(verde, HIGH);
  delay(5000); // 5 secondi

  // STATO 3: Giallo acceso
  digitalWrite(rosso, LOW);
  digitalWrite(giallo, HIGH);
  digitalWrite(verde, LOW);
  delay(2000); // 2 secondi
}

3 Analisi della Sequenza

Nota bene: In ogni fase del loop(), dobbiamo spegnere esplicitamente i LED che non servono. Se accendi il Verde senza spegnere il Rosso, avrai entrambi accesi contemporaneamente!

4 Avvia la Simulazione

Clicca su "Avvia simulazione". Osserva i LED: la sequenza dovrebbe ripetersi all'infinito. Prova a modificare i valori nei delay() per cambiare la durata di ogni colore, proprio come farebbe un ingegnere del traffico!

Sfida Extra

Riesci a modificare il codice per far sì che il Giallo lampeggi invece di rimanere fisso? Dovrai aggiungere altri digitalWrite e delay più brevi all'interno della sezione dedicata al giallo.