#include <Servo.h>
#include <DHT.h>
Servo servo1;
Servo servo2;
int ldrPin = A0;
int pirPin = 10;
int led1 = 8;
int led2 = 7;
int trigPin = 12;
int echoPin = 11;
DHT dht(13, DHT22);
void setup() {
servo1.attach(9);
servo2.attach(6);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
dht.begin();
}
void loop() {
int ldrValue = analogRead(ldrPin);
int tempValue = dht.readTemperature();
int distanceValue = calculateDistance();
int ldrPin = analogRead(ldrPin);
if (ldrValue < 300) {
servo1.write(0);
delay(1000);
Serial.println("Servo 1: 0 derajat");
Serial.println(ldrPin);
} else if (ldrValue >= 300 && ldrValue <= 600) {
servo1.write(90);
delay(1000);
Serial.println("Servo 1: 90 derajat");
Serial.println(ldrPin);
} else if (ldrValue > 600) {
servo1.write(180);
delay(1000);
Serial.println("Servo 1: 180 derajat");
Serial.println(ldrPin);
}
int DHT22 = dht.readTemperature();
if (digitalRead(pirPin) == HIGH && tempValue < 30) {
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led2, LOW);
Serial.println("LED 1: Menyala");
Serial.print(F("Temperature: "));
Serial.print(F("°C "));
} else if (digitalRead(pirPin) == HIGH && tempValue >= 30) {
digitalWrite(led1, LOW);
delay(1000);
digitalWrite(led2, HIGH);
Serial.println("LED 2: Menyala");
Serial.print(F("Temperature: "));
Serial.print(F("°C "));
} else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
int trigPin = analogRead(trigPin);
if (distanceValue < 100) {
servo2.write(0);
delay(1000);
Serial.println("Servo 2: 0 derajat");
Serial.print("Jarak: ");
Serial.print(trigPin);
Serial.println(" cm");
} else if (distanceValue >= 100 && distanceValue <= 200) {
servo2.write(90);
delay(1000);
Serial.println("Servo 2: 90 derajat");
Serial.print("Jarak: ");
Serial.print(trigPin);
Serial.println(" cm");
} else if (distanceValue > 200) {
servo2.write(180);
delay(1000);
Serial.println("Servo 2: 180 derajat");
Serial.print("Jarak: ");
Serial.print(trigPin);
Serial.println(" cm");
}
}
int calculateDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(1000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(2000);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) * 0.034 / 2;
}