#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Define pins
const int IR1 = 8, IR2 = 12, IR3 = 2, LDR = 7, led1 = 3, led2 = 5, led3 = 6;
// Define variables
int val1, val2, val3, val4;
int brit = 70; // Brightness
// LCD initialization: 16 columns and 2 rows, I2C address 0x27 and 0x26
LiquidCrystal_I2C lcd1(0x27, 16, 2);
LiquidCrystal_I2C lcd2(0x26, 16, 2);
// Initialize DHT sensor
#define DHTPIN A0 // Analog pin connected to the DHT sensor
#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Initialize pins
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(LDR, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
// Initialize serial communication
Serial.begin(9600);
// Initialize the first LCD
lcd1.init();
lcd1.backlight();
// Initialize the second LCD
lcd2.init();
lcd2.backlight();
// Print the maximum speed on the second LCD
lcd2.setCursor(0, 0);
lcd2.print("Max Speed:120KMh");
// Initialize DHT sensor
dht.begin();
}
void loop() {
// Read sensor values
val1 = digitalRead(IR1);
val2 = digitalRead(IR2);
val3 = digitalRead(IR3);
val4 = digitalRead(LDR);
// Read temperature and humidity sensor values
float temperatureC = dht.readTemperature();
// Print sensor values and temperature to serial monitor
Serial.print("IR1: "); Serial.print(val1);
Serial.print(" | IR2: "); Serial.print(val2);
Serial.print(" | IR3: "); Serial.print(val3);
Serial.print(" | LDR: "); Serial.print(val4);
Serial.print(" | Temp: "); Serial.print(temperatureC); Serial.println(" C");
// Display temperature on the first LCD
lcd1.clear();
lcd1.setCursor(0, 0);
lcd1.print("Temp: "); lcd1.print(temperatureC); lcd1.print(" C");
// Control LEDs based on sensor values
if (val1 == 0 && val2 == 0 && val3 == 0 && val4 == 0) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
} else if (val1 == 1 && val2 == 1 && val3 == 1 && val4 == 0) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
} else if (val1 == 0 && val2 == 0 && val3 == 0 && val4 == 1) {
analogWrite(led1, brit);
analogWrite(led2, brit);
analogWrite(led3, brit);
} else if (val1 == 1 && val2 == 0 && val3 == 0 && val4 == 1) {
analogWrite(led1, 255);
analogWrite(led2, brit);
analogWrite(led3, brit);
} else if (val1 == 0 && val2 == 1 && val3 == 0 && val4 == 1) {
analogWrite(led1, brit);
analogWrite(led2, 255);
analogWrite(led3, brit);
} else if (val1 == 0 && val2 == 0 && val3 == 1 && val4 == 1) {
analogWrite(led1, brit);
analogWrite(led2, brit);
analogWrite(led3, 200);
}
}