Sensore di temperatura e umidità DHT22 + Arduino + Display LCD
-1x Resistenza da 10 kΩ
-1x Bredboard
-1x Display LCD
-1x Potenziometro da 10 kΩ
-Cavetti vari
Il circuito da realizzare è il seguente:
La parte che riguarda solo il display LCD:
Il potenziometro R5 collegato al pin V0 serve a regolare il contrasto del display, quindi possiamo impostarlo come vogliamo. Se colleghiamo il pin V0 direttamente a massa, avremo il contrasto massimo. Il pin LED+ invece, serve a regolare la luminosità, quindi si può mettere anche li un potenziometro oppure collegarlo direttamente a 5v per avere la luminosità massima. Nel nostro caso invece useremo un segnalo PWM mandato da Arduino per gestire la luminosità.
Lo sketch da caricare su Arduino:
//Creato da Mohamed Fadiga momodesine@hotmail.it #include "LiquidCrystal.h" #include "DHT.h" DHT dht(2, DHT22); //Imposta il modello di sensore e il pin di Arduino a cui è collegato LiquidCrystal lcd(3,4, 5,6,7,8); //Imposta i pin di Arduino a quali sono collegati in pin del display (Rs,E,DB4,DB5,DB6,DB7) int lum_pin=9; //il pin al quale è collegato LED+ byte lum_val=127; // il valore della luminosità. Può essere impostato da 0 (retroilluminazione spenata) a 255 (retroilluminazione massima) void setup() { pinMode(lum_pin,OUTPUT); analogWrite(lum_pin,lum_val); dht.begin(); lcd.begin(16, 2);// imposto il numer di righe e colonne del display //creo il carattere ‘°’ per poter scrivere °C dopo il valore della temperatura byte deg[8] = { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; lcd.createChar(4,deg); } void loop() { float h = dht.readHumidity(); //leggi il valore di temperatura float t = dht.readTemperature(); //leggi il valore di umidità lcd.setCursor(0,0);//metti il cursore sulla prima riga lcd.print("Temp: "); if(isnan(t))lcd.print("Errore!");//se il valore di temperatura è NaN (Not a Number) else //altrimenti { lcd.print(t); lcd.write(4); //scrivi il carattere ‘°’ lcd.print("C"); } lcd.setCursor(0,1);//metti il cursore sulla seconda riga lcd.print("Umid: "); if(isnan(h))lcd.print("Errore!");//se il valore di umidità è NaN (Not a Number) else { lcd.print(h); lcd.print(" %"); } }