const int trig_pin = 13;
const int echo_pin = 12;
const int ldr_pin = A0;
const int pir_pin = 7;
const int relay_pin = 6;
const int pot_pin = A1;
int ldr_threshold = 500;
int distance_threshold = 200;
int ldr_value;
int pir_value;
int distance;
long duration;
bool relay_state = LOW;
int pot_value;
void setup() {
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
pinMode(pir_pin, INPUT);
pinMode(relay_pin, OUTPUT);
Serial.begin(9600);
}
void loop() {
readUltrasonic();
readLDR();
readPIR();
readPot();
printSensorValuesPC();
if (ldr_value > ldr_threshold) {
if (distance < distance_threshold || pir_value == 1) {
relay_state = HIGH;
} else {
relay_state = LOW;
}
}
digitalWrite(relay_pin, relay_state);
}
void printSensorValuesPC() {
Serial.print("\tdistance =");
Serial.print(distance );
Serial.print("\tldr_value =");
Serial.print(ldr_value );
Serial.print("\tldr_threshold =");
Serial.println(ldr_threshold);
}
void readPot() {
ldr_threshold = analogRead(pot_pin);
}
void readPIR() {
pir_value = digitalRead(pir_pin);
}
void readLDR() {
ldr_value = analogRead(ldr_pin);
}
void readUltrasonic(){
digitalWrite(trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
distance = 0.017 * duration;
}