Ciao a tutti
Avendo a disposizione un display 1602 e un sensore di temperatura LM35 ,ho provato leggere sul display la temperatura di casa confrontandola con alcuni termometri digitali in mio possesso. Tutti i termometri rilevano la stessa temperatura con uno scarto di due decimi di grado,purtroppo il mio LM35 mi fornisce una temperatura superiore di tre gradi e tre decimi , non riesco capire. Il sensore l’ho collegato così:guardandolo dal lato piatto il pin di sinistra al +5v,il centrale al pin analogico arduino A0 il destro al GND,grazie a tutti in anticipo
/*
Questo sketch stampa sul display LCD il valore di temperatura misurata dal sensore LM35
The circuit:
* LCD pin 1 GND
* LCD pin 2 +5v
* LCD pin 3 potenziometro 10k
* LCD RS pin 4 pin 12 arduino
* LCD R/W pin 5 GND
* LCD Enable pin 6 pin 11 arduino
* LCD D4 pin 11 pin 5 arduino
* LCD D5 pin 12 pin 4 arduino
* LCD D6 pin 13 pin 3 arduino
* LCD D7 pin 14 pin 2 arduino
* LCD pin 15 220 homm +5v
* LCD pin 16 GND
*/
int sensore = A0; // sensore LM35 collegato al pin analogico A0
int sensorValue = 0; // variabile per lettura sensore
float celsius = 0; // temperatura variabile
float millivolt = 0; // dichiarazione di variabile tensione (float è per i numeri con la virgola)
#include <LiquidCrystal.h> // Includo il codice della libreria :
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inizializzo la libreria con i numeri dei pin dell'interfaccia
void setup() {
lcd.begin(16, 2); // Imposto il numero del display LCD di colonne e righe :
lcd.print("TEMPERATURA"); // visualizzo il messaggio TEMPERATURA sul display
}
void loop() {
sensorValue=analogRead(sensore); // lettura valore del sensore LM35 messo sull'ingresso analogico A0
millivolt=(sensorValue/1023.0)*5000; //formula per ottenere la tensione di uscita dell'LM35 in millivolts
celsius = millivolt/10; // valore espresso in gradi Celsius (l'out del sensore è 10mv per grado)
lcd.setCursor(0,1); // Imposto il cursore sulla colonna 0 , linea 1
lcd.print("C."); // stampa sul display C.
lcd.setCursor(2,1); // Imposto il cursore sulla colonna 2 , linea 1
lcd.print(celsius); // stampa sul display il valore di temperatura in gradi Celsius
delay(1000);
}