#include <IRremote.h>
#define ledPin 33 // choose the pin for the LED
#define PIR 32 // PIR sensor pin
#define LDR 25 // LDR pin
#define IRreceiver 26 // IRreceiver pin
#define relayPin 27 // relay pin
IRrecv receiver(IRreceiver);
decode_results results;
String mode="Motion";
String LightState="OFF";
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(relayPin, OUTPUT); // declare relayPin as output
pinMode(PIR, INPUT); // declare PIR sensor as input
pinMode(LDR, INPUT); //declare LDR sensor as input
pinMode(IRreceiver, INPUT); //declare IRreceiver sensor as input
Serial.begin(9600);
Serial.println("Hello, ESP32!");
receiver.enableIRIn();
}
void loop(){
long statePIR = digitalRead(PIR);
long stateLDR = digitalRead(LDR);
if (receiver.decode(&results)) {
Serial.println(results.value,HEX);
if (results.value==0xF0DB1AE0){
mode="Remote";
LightState="ON";
digitalWrite (ledPin, HIGH);
digitalWrite (relayPin, HIGH);
Serial.println("Remote ON");
}
else if (results.value==0x298E8724){
mode="Motion";
LightState="OFF";
digitalWrite (ledPin, LOW);
digitalWrite (relayPin, LOW);
Serial.println("Remote OFF");
}
receiver.resume();
}
else if (mode=="Motion"){
if (statePIR == HIGH && stateLDR==HIGH){
LightState="ON";
digitalWrite (ledPin, HIGH);
digitalWrite (relayPin, HIGH);
Serial.println("Motion detected in dark!");
delay(1000);
}
else {
LightState="OFF";
digitalWrite (ledPin, LOW);
digitalWrite (relayPin, LOW);
Serial.println("Light OFF");
delay(1000);
}
}
}