#include <LiquidCrystal_I2C.h>
#define BUZZER_PIN 17
#define BUZZER_CHANNEL 0
#define pirpin 5
int val =0;
bool motionState = false;
int trigPin = 18;
int echoPin = 19;
int LedPinR = 8;
int LedPinG = 5;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(LedPinR, OUTPUT);
pinMode(LedPinG, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(17, OUTPUT);
pinMode(12, OUTPUT);
pinMode(27, OUTPUT);
pinMode(5, OUTPUT);
ledcSetup(BUZZER_CHANNEL, 500, 8);
ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL);
lcd.init();
lcd.backlight();
Serial.begin(9600);
Serial.print("Distance from the object :\n");
}
void loop()
{
int distance;
int duration;
val = digitalRead(5);
if(val==HIGH)
{
digitalWrite(27, HIGH);
digitalWrite(12, LOW);
ledcWriteTone(BUZZER_CHANNEL,900);
delay(100);
ledcWriteTone(BUZZER_CHANNEL,300);
delay(100);
if (motionState == false)
{
Serial.println("Motion Sensor Detected!");
motionState = true ;
}
digitalWrite(trigPin, LOW);
delayMicroseconds(10);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin,HIGH);
distance = duration * 0.0344/2;
Serial.print("DISTANCE : ");
Serial.println(distance);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ROOM NUMBER...");
lcd.setCursor(0,1);
lcd.print(distance);
}
else
{
digitalWrite(27, LOW);
digitalWrite(12, HIGH);
ledcWriteTone(BUZZER_CHANNEL,0);
delay(100);
if (motionState == true)
{
Serial.println("Motion Ended!");
motionState = false;
}
}
}