//* How to use the DHT-11 sensor with Arduino
// Temperature and humidity sensor and
// I2C LCD1602
// SDA --> A4
// SCL --> A5
//Libraries
#include <DHT.h>;
//I2C LCD:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
//Constants
#define DHTPIN 7 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 11
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
//Variables
//int chk;
int h; //Stores humidity value
int t; //Stores temperature value
// Pins for LEDs
#define LED_GREEN 2
#define LED_BLUE 3
#define LED_RED 4
void setup()
{
Serial.begin(9600);
// Set LED pins as OUTPUT
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_RED, OUTPUT);
Serial.println("Temperature and Humidity Sensor Test");
dht.begin();//begin dht
lcd.init(); //initialize the lcd
lcd.backlight(); //open the backlight
}
void loop()
{
//Read data and store it to variables h (humidity) and t (temperature)
// Reading temperature or humidity takes about 250 milliseconds!
readTempHum();
//Print temp and humidity values to serial monitor
printTempHum();
// set the cursor to (0,0):
// print from 0 to 9:
checkTemp();
displayTempHum();
delay(1000); //Delay 1 sec.
}
void readTempHum(){
//Read data and store it to variables h (humidity) and t (temperature)
// Reading temperature or humidity takes about 250 milliseconds!
h = dht.readHumidity();
t = dht.readTemperature();
}
void printTempHum(){
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %, Temp: ");
Serial.print(t);
Serial.println(" ° Celsius");
}
void displayTempHum(){
lcd.setCursor(0, 0);
lcd.println(" Now Temperature ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(t);
lcd.print("C");
lcd.setCursor(6, 1);
lcd.println("2024 ");
lcd.setCursor(11, 1);
lcd.print("H:");
lcd.print(h);
lcd.print("%");
}
void checkTemp(){
// Display temperature color indication
if (t >= 27 && t <= 31) {
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_RED, LOW);
} else if (t > 31 && t <= 36) {
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_RED, LOW);
} else if (t > 36) {
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_RED, HIGH);
}
}