#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 3
#define DHTTYPE DHT22
#define PIR_PIN 3
#define RELAY_PIN 4
#define LED_PIN 5
#define BUZZER 6
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);
Adafruit_SSD1306 oled(128,64,&Wire,-1);
void setup()
{
Serial.begin(9600);
pinMode(PIR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();
}
void loop()
{
float temp = dht.readTemperature();
Serial.print("Temperature: ");
Serial.println(temp);
lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.print(temp);
lcd.print(" C");
oled.clearDisplay();
oled.setTextSize(2);
oled.setTextColor(WHITE);
oled.setCursor(0,0);
oled.print("Temp:");
oled.print(temp);
oled.display();
int motion = digitalRead(PIR_PIN);
if(motion == HIGH)
{
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
digitalWrite(BUZZER, HIGH);
lcd.setCursor(0,1);
lcd.print("Motion Detected ");
oled.setCursor(0,30);
oled.print("Motion!");
oled.display();
}
else
{
digitalWrite(RELAY_PIN, LOW);
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER, LOW);
lcd.setCursor(0,1);
lcd.print("No Motion ");
}
delay(1000);
}