#include <DHT.h>
#include <LiquidCrystal.h>
// Define pins for DHT22
#define DHTPIN 2
#define DHTTYPE DHT22
// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
// Define LED pins
const int redLedPin = 10;
const int greenLedPin = 11;
const int blueLedPin = 12;
// Define potentiometer pin
const int contrastPin = A0; // Connect potentiometer middle pin to A0
void setup() {
// Start serial communication
Serial.begin(9600);
// Initialize the LCD
lcd.begin(16, 2);
// Initialize DHT22 sensor
dht.begin();
// Set LED pins as outputs
pinMode(redLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(blueLedPin, OUTPUT);
// Set contrast pin (V0) as input
pinMode(contrastPin, INPUT);
}
void loop() {
// Read temperature as Celsius
float temperature = dht.readTemperature();
// Check if any reads failed
if (isnan(temperature)) {
lcd.clear();
lcd.print("Error reading");
lcd.setCursor(1, 0);
lcd.print("DHT sensor");
return;
}
// Display temperature on LCD
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(1,0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
// Read potentiometer value for LCD contrast adjustment
int contrastValue = analogRead(contrastPin);
// Adjust LCD contrast based on potentiometer value
lcd.setCursor(2, 1); // Set cursor to the second line
lcd.print("Contrast: ");
lcd.print(contrastValue); // Display potentiometer value
// Control LEDs based on temperature range
if (temperature > 30) {
digitalWrite(redLedPin, HIGH);
digitalWrite(greenLedPin, LOW);
digitalWrite(blueLedPin, LOW);
} else if (temperature >= 20 && temperature <= 30) {
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
digitalWrite(blueLedPin, LOW);
} else {
digitalWrite(redLedPin, LOW);
digitalWrite(greenLedPin, LOW);
digitalWrite(blueLedPin, HIGH);
}
// Wait a few seconds between measurements
delay(2000);
}