Semaforo con Arduino - guida pratica per montarlo bene

Componenti per un semaforo fai da te: un corpo con luci rosse e verdi, schede Arduino, un modulo relè e cavi.

Scritto da

Ippolito Vitali

Pubblicato il

24 apr 2026

Indice

Un piccolo semaforo costruito con Arduino è uno di quei progetti che sembrano semplici solo in superficie: in realtà ti fanno toccare con mano LED, resistenze, uscite digitali e logica di temporizzazione in modo molto concreto. Io lo trovo perfetto per capire come ragiona un microcontrollore, perché il risultato si vede subito e ogni errore emerge in pochi secondi.

In questa guida trovi tutto quello che serve per realizzarlo bene: materiali, collegamenti, sketch base, varianti più utili e gli sbagli che fanno perdere tempo ai principianti. L’obiettivo è ottenere un modello ordinato, affidabile e facile da estendere, non solo tre luci che lampeggiano a caso.

Le informazioni essenziali da tenere a mente prima di iniziare

  • Per il modello base bastano una scheda Arduino, 3 LED, 3 resistenze, una breadboard e alcuni cavetti jumper.
  • Le resistenze da 220 Ω o 330 Ω sono la scelta più pratica per limitare la corrente sui LED.
  • Il cablaggio corretto prevede un LED per ogni uscita digitale e un collegamento comune a massa.
  • Lo sketch iniziale può usare delay(), ma per pulsanti e versioni più evolute conviene passare a millis().
  • Il budget tipico per partire, se non hai già la scheda, è spesso tra 10 e 25 euro.

Un semaforo fai da te su breadboard con Arduino, LED rossi, gialli e verdi, e un pulsante.

Materiali e budget per partire bene

Per il primo prototipo io partirei da componenti semplici, facili da trovare e poco costosi. La regola che seguo sempre è questa: meglio pochi pezzi chiari che un modulo più “furbo” ma opaco, soprattutto se il progetto serve per imparare come si muove davvero un Arduino.

Componente Quantità Perché serve Costo indicativo
Arduino Uno o Nano 1 Esegue lo sketch e gestisce i pin 8-20 €
Breadboard 1 Permette il montaggio senza saldature 3-5 €
LED rosso, giallo e verde 3 Simulano le tre fasi del semaforo 0,20-1 € cad.
Resistenze da 220 Ω o 330 Ω 3 Limitano la corrente e proteggono i LED Pochi centesimi
Cavetti jumper 6-10 Servono per i collegamenti rapidi 2-4 €
Pulsante e resistenza da 10 kΩ 1 + 1 Utili per la versione con chiamata pedonale 1-3 €

Se hai già una scheda compatibile in casa, il costo reale del progetto si abbassa parecchio: spesso resti sotto i 5 euro di spesa aggiuntiva. Io consiglio Arduino Uno se vuoi lavorare con calma e vedere bene i collegamenti; Nano se preferisci un montaggio più compatto. In entrambi i casi il microcontrollore fa la stessa cosa: esegue il programma e comanda le uscite digitali. Una volta scelti i pezzi, il passo decisivo è il cablaggio, perché lì si gioca la riuscita del progetto.

Come collegare i componenti senza sbagliare

Il punto delicato non è accendere un LED, ma capire il verso giusto dei componenti e il ruolo della resistenza in serie. Io consiglio sempre di cablare prima il rosso, poi il giallo e infine il verde: lavorare in ordine riduce gli errori e rende il debug molto più semplice.

  • Collega il catodo di ogni LED a GND.
  • Metti una resistenza in serie a ciascun anodo: non è un dettaglio, è la protezione che evita di stressare il LED.
  • Usa tre pin digitali liberi, per esempio 8, 9 e 10.
  • Evita i pin 0 e 1 se vuoi caricare lo sketch senza complicazioni con la seriale.
  • Tieni la breadboard ordinata: un cavo corto in più vale più di una spiegazione teorica quando devi correggere un errore.
  • Se i binari di alimentazione della breadboard sono interrotti a metà, mettili in comune con un ponticello.

Con i LED discreti, il circuito più pulito è sempre lo stesso: pin Arduino, resistenza, anodo del LED, catodo a massa. Se usi resistenze da 220 Ω o 330 Ω sei in una zona sicura e molto comune nei progetti didattici. A questo punto il circuito è pronto per lo sketch, e lì conviene restare essenziali.

Lo sketch base che fa accendere il ciclo

Per una prima prova non serve nessuna libreria esterna: Arduino gestisce tutto con le sue funzioni di base. Io preferisco partire con un ciclo semplice e leggibile, così capisci subito come si comporta ogni fase e puoi cambiare i tempi senza toccare la logica.

const int rosso = 8;
const int giallo = 9;
const int verde = 10;

void setLuci(bool r, bool g, bool v) {
  digitalWrite(rosso, r ? HIGH : LOW);
  digitalWrite(giallo, g ? HIGH : LOW);
  digitalWrite(verde, v ? HIGH : LOW);
}

void setup() {
  pinMode(rosso, OUTPUT);
  pinMode(giallo, OUTPUT);
  pinMode(verde, OUTPUT);
}

void loop() {
  setLuci(true, false, false);
  delay(5000);

  setLuci(true, true, false);
  delay(1000);

  setLuci(false, false, true);
  delay(5000);

  setLuci(false, true, false);
  delay(2000);
}

La sequenza è volutamente lineare: rosso, rosso più giallo, verde, giallo. Se vuoi adattare il ritmo, modifica solo i valori di delay(): 5000 significa 5 secondi, 1000 significa 1 secondo. Io uso questa base per fare i primi test su breadboard, poi passo a una logica più robusta quando aggiungo pulsanti o altri semafori. Ed è proprio lì che il progetto smette di essere solo un esercizio e diventa una piccola simulazione credibile.

Come farlo diventare un progetto davvero utile

Una volta che il ciclo base funziona, il passo successivo non è complicarlo a caso ma aggiungere solo ciò che ha uno scopo didattico o pratico. Qui Arduino mostra il suo lato migliore: puoi partire da un modello minimale e arrivare a una simulazione di incrocio molto più convincente senza cambiare piattaforma.

Versione con pulsante pedonale

È la variante che consiglio più spesso in ambito scolastico o per chi vuole imparare a leggere un ingresso digitale. Il pulsante ti costringe a ragionare in termini di stato: il semaforo non cambia solo perché il tempo è scaduto, ma perché qualcuno ha chiesto l’attraversamento. In questa versione la differenza tra INPUT e INPUT_PULLUP diventa subito concreta, e vale la pena capirla bene.

Due semafori sincronizzati

Se vuoi alzare il livello, il secondo passo sensato è gestire due semafori opposti. È qui che la logica a stati torna davvero utile, perché devi evitare che entrambe le direzioni risultino verdi nello stesso momento. Io considero questa versione molto istruttiva perché ti obbliga a separare il codice in funzioni chiare, invece di accumulare istruzioni una dietro l’altra.

Leggi anche: Arduino non è un chip - ecco cosa indica davvero

Simulazione prima del montaggio reale

Quando il progetto cresce, io lo provo prima in simulazione. Un ambiente come Tinkercad ti permette di verificare tempi, collegamenti e logica senza rischiare di perdere mezz’ora su un errore banale di cablaggio. Per una demo da tavolo o per una presentazione, puoi anche pensare a un piccolo contenitore in cartone, legno leggero o stampa 3D: il progetto guadagna subito in pulizia visiva.
Approccio Quando usarlo Limite principale
delay() Primo test e dimostrazione rapida Blocca il resto del programma
millis() Pulsanti, più semafori, logica estesa Richiede più attenzione nella programmazione

Se il tuo obiettivo è imparare, delay() va benissimo all’inizio. Se invece vuoi costruire un sistema che reagisce a un pulsante o coordina più luci, conviene passare presto a una macchina a stati basata su millis(). Da qui in poi il margine di crescita è alto, ma anche gli errori diventano più facili da commettere se non tieni il codice ordinato.

Gli errori che vedo più spesso nei primi montaggi

Qui di solito si perde più tempo che nel codice. Io controllo sempre questi punti prima ancora di sospettare un bug nello sketch: orientamento del LED, resistenza mancante, massa comune, pin sbagliato o alimentazione confusa. Nella pratica, il 90% dei problemi di un primo prototipo nasce da uno di questi dettagli.

  • LED montato al contrario: se il verso è invertito, non si accende e sembra che il problema sia nel programma.
  • Resistenza dimenticata o messa nel punto sbagliato: il LED può sembrare funzionare, ma non è un uso corretto del componente.
  • Pin 0 e 1 usati per le luci: spesso creano conflitti con l’upload dello sketch.
  • Massa non comune: senza un GND condiviso, il circuito non ha un riferimento coerente.
  • Tempi gestiti con delay() mentre cerchi di leggere un pulsante: il programma resta bloccato e il bottone “non risponde”.
  • Breadboard cablata in modo disordinato: più fili hai, più serve una logica visiva pulita per capire cosa stai facendo.

Io aggiungo sempre un’ultima distinzione importante: questo è un modello didattico, non un dispositivo di sicurezza. Serve a capire logiche e tempi, non a comandare un impianto reale. Se lo tieni a mente, il progetto resta chiaro e non ti aspetti da lui più di quello che può offrire. A questo punto l’unica domanda sensata è quanto vuoi spingerti oltre la versione base.

Le estensioni che fanno davvero salire di livello il progetto

Se il ciclo a tre luci funziona, il miglior upgrade non è aggiungere LED a caso ma riscrivere la logica in modo più elegante. Io farei tre passi: prima una macchina a stati, poi un pulsante pedonale, infine un contenitore più curato. È una progressione semplice, ma molto più solida di un progetto gonfiato in fretta.

  • Usa enum o costanti chiare per nominare gli stati del semaforo.
  • Passa a millis() quando vuoi evitare blocchi e gestire più eventi.
  • Aggiungi un buzzer solo se ti serve davvero, per esempio in una versione pensata per studenti più piccoli o per segnalazioni sonore.
  • Se costruisci la parte fisica, disegna subito la disposizione dei LED: un progetto bello da vedere è anche più facile da usare.

Per me questa è la soglia in cui un semplice modello diventa un progetto ben fatto: pochi componenti, logica pulita e margine per crescere senza rifare tutto da capo. Se resti su questa linea, il risultato finale sarà molto più utile di una copia approssimativa di un semaforo reale, perché ti avrà insegnato davvero come ragiona un sistema controllato da microcontrollore.

Domande frequenti

Per la versione base bastano una scheda Arduino Uno o Nano, 3 LED, 3 resistenze da 220 o 330 ohm, una breadboard e alcuni cavetti jumper. Se vuoi aggiungere la chiamata pedonale, servono anche un pulsante e una resistenza da 10 k ohm. Se hai già la scheda, spesso resti sotto i 5 euro di spesa aggiuntiva; altrimenti il budget tipico iniziale è circa 10-25 euro.

Ogni LED va collegato con il catodo a massa comune e una resistenza in serie sul lato dell'anodo. Nell'articolo vengono indicati tre pin digitali liberi, per esempio 8, 9 e 10, mentre i pin 0 e 1 sono da evitare perché possono creare problemi con l'upload dello sketch. Se la breadboard ha i binari di alimentazione interrotti a metà, conviene unirli con un ponticello.

Delay va bene per il primo test e per una dimostrazione rapida, perché rende lo sketch molto semplice. Però blocca il programma, quindi appena aggiungi pulsanti o più semafori conviene passare a millis e a una logica a stati. In questo modo il sistema resta reattivo e il codice diventa più adatto a estensioni future.

La progressione più utile è prima il pulsante pedonale, poi due semafori sincronizzati. Il pulsante ti fa lavorare sugli ingressi digitali e sulla differenza tra INPUT e INPUT_PULLUP, mentre i due semafori obbligano a evitare che entrambe le direzioni siano verdi insieme. Se vuoi verificare il progetto prima del montaggio finale, simulazione e contenitore curato sono i passi successivi più sensati.

LED al contrario, resistenza mancante o nel punto sbagliato, massa non comune, pin 0 e 1 usati per le luci e cablaggio disordinato sono gli errori più frequenti. Anche lo sketch può sembrare rotto quando in realtà il problema è uno di questi dettagli hardware. Controllarli prima del codice fa risparmiare molto tempo.

Valuta l'articolo

Valutazione: 0.00 Numero di voti: 0

Tag:

led breadboard semaforo resistenze pulsante

Condividi post

Ippolito Vitali

Ippolito Vitali

Mi chiamo Ippolito Vitali e ho accumulato 8 anni di esperienza nel campo della tecnologia, dei hobby e del tempo libero. La mia passione per questi argomenti è nata da un interesse personale che si è trasformato in una vera e propria missione: aiutare gli altri a esplorare e comprendere le meraviglie del mondo tecnologico. Scrivo di tutto, dalle ultime innovazioni alle tecniche per ottimizzare il tempo libero, cercando sempre di semplificare concetti complessi e rendere le informazioni accessibili. Nel mio lavoro, mi impegno a controllare le fonti e a confrontare le informazioni per garantire contenuti utili, accurati e aggiornati. Seguo le tendenze del settore con attenzione, organizzando le mie conoscenze in modo chiaro e comprensibile. Credo che la tecnologia e il tempo libero possano migliorare la qualità della vita, e mi piace condividere queste idee con i lettori, offrendo spunti pratici e riflessioni stimolanti.

Scrivi un commento