Progetto #20 • Sensori Arduino

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.

Difficoltà★★☆☆☆ Facile
Tempo20–30 minuti
ConcettiLM35 • ADC • soglie

🌡️ 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.

Concetto chiave: il sensore trasforma la temperatura in una tensione analogica; Arduino converte questa tensione in un valore numerico e decide quale uscita attivare.

🎯 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

1× Arduino UNO o compatibile
1× sensore LM35
3× LED: verde, giallo e rosso
3× resistenze da 220 Ω
1× breadboard
Cavetti jumper + cavo USB

🛒 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 LM35Arduino
Sinistro5 V
Centrale — uscitaA0
DestroGND

LED

LEDCollegamento
🟢 VerdePin 8 → 220 Ω → anodo; catodo → GND
🟡 GialloPin 9 → 220 Ω → anodo; catodo → GND
🔴 RossoPin 10 → 220 Ω → anodo; catodo → GND
Attenzione: verifica sempre il pinout del modello di LM35 che possiedi prima di alimentarlo. Un collegamento errato dei terminali di alimentazione può danneggiare il sensore.
Schema termometro Arduino con sensore LM35 e tre LED

🧪 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:

Lettura analogica
int sensorValue = analogRead(sensorPin);

Con il riferimento usato dal progetto, il valore viene trasformato in tensione:

Conversione in volt
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:

Conversione in °C
float temperature = voltage * 100;
Nota sulla precisione: la formula assume un riferimento ADC di 5,0 V. La tensione reale di alimentazione può differire leggermente, quindi questo progetto è ideale per imparare il principio di misura; per misure più accurate è utile considerare riferimento, tolleranze e calibrazione.

💻 Codice Arduino

Progetto #20 — Termometro con LED
// ============================================
// 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

TemperaturaLED accesoIndicazione
< 25 °C🟢 VerdeTemperatura bassa
25 °C – < 30 °C🟡 GialloTemperatura intermedia
≥ 30 °C🔴 RossoTemperatura alta

Le soglie sono valori di esempio e possono essere modificate nel programma in base all’applicazione.

⚙️ Come funziona il programma

1. Lettura
Arduino campiona la tensione dell’LM35 sul pin A0.
2. Conversione
Il valore ADC viene convertito prima in volt e poi in °C.
3. Confronto
La temperatura viene confrontata con le soglie 25 °C e 30 °C.
4. Indicazione
Arduino accende un solo LED alla volta.
5. Monitor Seriale
La temperatura calcolata viene inviata alla porta seriale a 9600 baud.
6. Aggiornamento
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

Temperatura impossibile
Controlla soprattutto orientamento e collegamenti del sensore LM35.
Valore instabile
Verifica i collegamenti, l’alimentazione e la qualità dei contatti sulla breadboard.
LED non acceso
Controlla polarità, resistenza e pin digitale corrispondente.
LED sempre rosso
Osserva il valore sul Monitor Seriale e verifica la lettura del sensore.
Temperatura leggermente errata
La conversione usa 5,0 V come riferimento teorico; alimentazione e tolleranze influenzano il risultato.
Nessun dato seriale
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.

Sensore → misura → elaborazione → confronto con una soglia → azione.
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

🌈 Più livelli
Aggiungi altri LED per ottenere una scala termica più dettagliata.
🌀 Ventola automatica
Superata una soglia, Arduino può comandare opportunamente una ventola tramite uno stadio di potenza adatto.
📟 Display LCD/OLED
Mostra direttamente la temperatura numerica.
🚨 Allarme temperatura
Aggiungi un buzzer quando viene superato un limite.
📊 Data logger
Registra le misure nel tempo per analizzare l’andamento termico.
📡 Monitoraggio remoto
Con una scheda dotata di connettività puoi inviare i valori sulla rete.