#include <ESP32Servo.h>
#define LED_Merah 33 // Pin untuk lampu LED merah
#define LED_Hijau 21 // Pin untuk lampu LED hijau
#define LED_Biru 13 // Pin untuk lampu LED hijau
#define PIR_Merah 35 // Pin untuk sensor PIR merah
#define PIR_Hijau 18 // Pin untuk sensor PIR hijau
#define SERVO 27 // Pin untuk servo motor merah
#define ECHO_PIN 4
#define TRIG_PIN 5
Servo servo; // Membuat Objek Servo
void setup() {
pinMode(LED_Merah, OUTPUT);
pinMode(LED_Hijau, OUTPUT);
pinMode(LED_Biru, OUTPUT);
pinMode(PIR_Merah, INPUT);
pinMode(PIR_Hijau, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo.attach(SERVO);
servo.write(90); // Posisi awal servo (90 derajat)
Serial.begin(9600);
Serial.println("Hello, ESP32!");
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
int pirValue1 = digitalRead(PIR_Merah);
int pirValue2 = digitalRead(PIR_Hijau);
if (pirValue1 == HIGH) {
digitalWrite(LED_Merah, HIGH); // Menghidupkan lampu merah
servo.write(0); // Menggerakkan servo ke posisi 180 derajat
delay(1000); // Tahan selama 1 detik
servo.write(90); // Mengembalikan servo ke posisi awal (90 derajat)
} else {
digitalWrite(LED_Merah, LOW); // Mematikan lampu merah
servo.write(90);
}
if (pirValue2 == HIGH) {
digitalWrite(LED_Hijau, HIGH); // Menghidupkan lampu LED hijau
servo.write(0); // Menggerakkan servo ke posisi 180 derajat
delay(1000); // Tahan selama 1 detik
servo.write(90); // Mengembalikan servo ke posisi awal (90 derajat)
} else {
digitalWrite(LED_Hijau, LOW); // Mematikan lampu LED hijau
servo.write(90);
}
float distance = readDistanceCM();
if (bool isNearby = distance >= 100){
digitalWrite(LED_Biru, isNearby);
digitalWrite(LED_Biru, HIGH); // Menghidupkan lampu merah
servo.write(0); // Menggerakkan servo ke posisi 180 derajat
delay(1000);
servo.write(90);
Serial.print("Tempat Sampah Penuh ");
Serial.println(readDistanceCM());
} else {
digitalWrite(LED_Biru, LOW);
}
}