/*
// Matteo Lombardi 3I A.S. 2021-22
// Programma per la lettura e la visualizzazione della temperatura in °C, °F, umidità e indice di calore su un display lcd 16x2 I2C
*/
//Inclusione librerie
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
//Definizione pin e tipo sensore DHT
#define DHTPIN 2
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27,16,2);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Sensore DHT22 ");
lcd.setCursor(0,1);
lcd.print("Avvio... | ML");
}
void loop() {
delay(2000); //Delay tra le letture
//Lettura valori
float u = dht.readHumidity(); //Umidità
float t = dht.readTemperature(); //Temperatura in gradi Celsius
float f = dht.readTemperature(true); //Temperatura in gradi Fahrenheit
float ic = dht.computeHeatIndex(t, u, false); //Indice calore
if (isnan(u) || isnan(t) || isnan(ic)) {
Serial.println("Errore nella lettura, controlla i collegamenti!");
return;
}
//Stampa valori su monitor seriale
Serial.print("Umidità: " + String(u) + "% | ");
Serial.print("Temperatura: " + String(t) + "°C - " + String(f) + "°F | ");
Serial.print("Indice di calore: " + String(ic) + "°C\n");
//Stampa valori su LCD
lcd.setCursor(0,0);
lcd.print("TempC : " + String(t) + "C ");
lcd.setCursor(0,1);
lcd.print("TempF : " + String(f) +"F ");
delay(2000);
lcd.setCursor(0,0);
lcd.print("I.C. : " + String(ic) + "C ");
lcd.setCursor(0,1);
lcd.print("Umid : " + String(u) + "% ");
}