#define PIN_TRIG 26
#define PIN_ECHO 25
#define green_lid 18
#define red_lamp 22
#define buzz_pickup 21
#define pir 27
#define ldr 13
int pirState = LOW;
void setup()
{
Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(green_lid, OUTPUT);
pinMode(red_lamp, OUTPUT);
pinMode(pir, INPUT);
pinMode(buzz_pickup, OUTPUT);
pinMode(ldr, INPUT);
}
void loop()
{
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int value1 = analogRead(ldr);
int value2 = digitalRead(pir);
int duration = pulseIn(PIN_ECHO, HIGH);
int distanceCM = duration / 58;
Serial.print("Distance in CM: ");
Serial.println(distanceCM);
Serial.print("Value ldr(photoresistor): ");
Serial.println(value1);
Serial.print("Value motion sensor: ");
Serial.println(value2);
if(distanceCM < 20 && (value2 == LOW || value2 == HIGH)&& value1 <400)
{
Serial.println("Notification send");
tone(buzz_pickup, 150);
delay(1000);
noTone(buzz_pickup);
delay(1000);
}
else if(distanceCM > 20 && value2 == HIGH && (value1 < 400 || value1 > 400) )
{
digitalWrite(green_lid, HIGH);
if (pirState == LOW)
{
Serial.println("Motion detected! Lid open");
pirState = HIGH;
}
}
else if((distanceCM < 20 || distanceCM > 20)&& value2 == HIGH && value1 > 400)
{
digitalWrite(red_lamp, HIGH);
Serial.println("LED lamp turned on");
if (pirState == LOW)
{
Serial.println("Motion detected!");
pirState = HIGH;
}
}
else
{
noTone(buzz_pickup);
digitalWrite(red_lamp, LOW);
digitalWrite(green_lid, LOW);
}
}