Termometro Arduino con LM35 e indicatore a LED
Misura la temperatura con il sensore LM35 e visualizza immediatamente tre fasce termiche tramite LED verde, giallo e rosso.
🌡️ Introduzione
In questo progetto realizzeremo un termometro con indicazione a LED utilizzando Arduino UNO e il sensore analogico LM35. Arduino leggerà la temperatura e accenderà un LED diverso in base alla fascia rilevata.
Il sistema originale prevede tre livelli: verde sotto 25 °C, giallo tra 25 °C e 30 °C e rosso da 30 °C in su. In questo modo la temperatura può essere interpretata a colpo d’occhio senza utilizzare un display.
🎯 Cosa imparerai
- collegare e utilizzare un sensore LM35;
- leggere un ingresso analogico con analogRead();
- comprendere la conversione analogico-digitale di Arduino UNO;
- convertire il valore ADC in tensione;
- ricavare la temperatura in gradi Celsius;
- gestire più soglie con if / else if / else;
- controllare tre LED in base a una misura reale;
- visualizzare i valori tramite Monitor Seriale.
🧰 Materiale necessario
🛒 Non hai ancora i componenti?
Un kit Arduino per principianti contiene molti dei componenti utilizzati nei progetti del sito, come LED, resistenze, breadboard e sensori.
Kit Arduino consigliato →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.📘 Vuoi imparare Arduino passo dopo passo?
Nei miei libri dedicati ad Arduino trovi spiegazioni progressive, schemi e numerosi progetti pratici.
Scopri i miei libri Arduino →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.🔌 Schema di collegamento
Sensore LM35
Guardando il sensore frontalmente, con la parte piatta rivolta verso di te:
| Pin LM35 | Arduino |
|---|---|
| Sinistro | 5 V |
| Centrale — uscita | A0 |
| Destro | GND |
LED
| LED | Collegamento |
|---|---|
| 🟢 Verde | Pin 8 → 220 Ω → anodo; catodo → GND |
| 🟡 Giallo | Pin 9 → 220 Ω → anodo; catodo → GND |
| 🔴 Rosso | Pin 10 → 220 Ω → anodo; catodo → GND |

🧪 Come funziona il sensore LM35
L’LM35 è un sensore analogico la cui tensione di uscita varia in funzione della temperatura. Nel normale utilizzo del sensore, la scala è di circa 10 mV per ogni grado Celsius: 250 mV corrispondono quindi indicativamente a 25 °C.
Arduino UNO non misura direttamente i gradi Celsius. Il pin A0 misura la tensione proveniente dal sensore attraverso il convertitore analogico-digitale (ADC), producendo un valore che il programma deve successivamente convertire.
🔢 Dalla lettura ADC alla temperatura
Nel codice originale la lettura viene effettuata con:
int sensorValue = analogRead(sensorPin);Con il riferimento usato dal progetto, il valore viene trasformato in tensione:
float voltage = sensorValue * (5.0 / 1023.0);Poiché l’LM35 fornisce circa 10 mV/°C, la temperatura viene ricavata moltiplicando la tensione espressa in volt per 100:
float temperature = voltage * 100;💻 Codice Arduino
// ============================================
// Progetto 20 - Termometro con LED
// I LED indicano il livello di temperatura
// ============================================
// Pin sensore
int sensorPin = A0;
// Pin LED
int greenLed = 8;
int yellowLed = 9;
int redLed = 10;
void setup() {
pinMode(greenLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(redLed, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Legge valore sensore
int sensorValue = analogRead(sensorPin);
// Converte in tensione
float voltage = sensorValue * (5.0 / 1023.0);
// Converte in temperatura
float temperature = voltage * 100;
Serial.print("Temperatura: ");
Serial.println(temperature);
// Controllo LED
if(temperature < 25){
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, LOW);
}
else if(temperature >= 25 && temperature < 30){
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, HIGH);
digitalWrite(redLed, LOW);
}
else{
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, HIGH);
}
delay(1000);
}🚦 Le tre soglie di temperatura
| Temperatura | LED acceso | Indicazione |
|---|---|---|
| < 25 °C | 🟢 Verde | Temperatura bassa |
| 25 °C – < 30 °C | 🟡 Giallo | Temperatura intermedia |
| ≥ 30 °C | 🔴 Rosso | Temperatura alta |
Le soglie sono valori di esempio e possono essere modificate nel programma in base all’applicazione.
⚙️ Come funziona il programma
Arduino campiona la tensione dell’LM35 sul pin A0.
Il valore ADC viene convertito prima in volt e poi in °C.
La temperatura viene confrontata con le soglie 25 °C e 30 °C.
Arduino accende un solo LED alla volta.
La temperatura calcolata viene inviata alla porta seriale a 9600 baud.
La misura viene ripetuta circa una volta al secondo.
🖥️ Controllare la temperatura dal Monitor Seriale
Il comando Serial.begin(9600) inizializza la comunicazione seriale. Aprendo il Monitor Seriale dell’Arduino IDE e impostandolo a 9600 baud, puoi osservare il valore numerico calcolato dal programma.
Questo è molto utile anche durante il collaudo: puoi confrontare la temperatura visualizzata con l’accensione dei tre LED e modificare le soglie se necessario.
🔧 Problemi comuni
Controlla soprattutto orientamento e collegamenti del sensore LM35.
Verifica i collegamenti, l’alimentazione e la qualità dei contatti sulla breadboard.
Controlla polarità, resistenza e pin digitale corrispondente.
Osserva il valore sul Monitor Seriale e verifica la lettura del sensore.
La conversione usa 5,0 V come riferimento teorico; alimentazione e tolleranze influenzano il risultato.
Imposta il Monitor Seriale alla stessa velocità del codice: 9600 baud.
🧠 Perché questo progetto è importante
Qui Arduino non esegue più soltanto una sequenza predefinita: misura una grandezza fisica e prende una decisione in base al risultato. È lo stesso schema logico alla base di termostati, sistemi di raffreddamento, allarmi e molte automazioni.
Questa catena ritornerà continuamente nei progetti Arduino più avanzati.
🧠 Cosa devi ricordare
- l’LM35 produce un segnale analogico legato alla temperatura;
- il pin A0 legge questo segnale tramite l’ADC;
- analogRead() restituisce il valore usato per calcolare la tensione;
- nel codice la tensione viene trasformata in gradi Celsius;
- le strutture condizionali permettono di creare diverse fasce di temperatura;
- un solo LED viene acceso per indicare la fascia corrente;
- le soglie possono essere personalizzate;
- il Monitor Seriale è prezioso per verificare e calibrare il progetto.
🔄 Varianti possibili
Aggiungi altri LED per ottenere una scala termica più dettagliata.
Superata una soglia, Arduino può comandare opportunamente una ventola tramite uno stadio di potenza adatto.
Mostra direttamente la temperatura numerica.
Aggiungi un buzzer quando viene superato un limite.
Registra le misure nel tempo per analizzare l’andamento termico.
Con una scheda dotata di connettività puoi inviare i valori sulla rete.

