#include <WiFi.h>
// WiFi credentials for Wokwi Guest
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Pin definitions
#define trigPin 14 // Pin Trigger untuk ultrasonik
#define echoPin 27 // Pin Echo untuk ultrasonik
#define cahaya 34 // Pin untuk LDR
#define blue 18 // LED Biru
#define green 17 // LED Hijau
int ldrValue = 0; // Variabel untuk membaca nilai LDR
int threshold = 1000; // Batas terang-gelap (atur sesuai pembacaan LDR)
float distance = 0; // Variabel untuk jarak ultrasonik
float distanceThreshold = 200.0; // Batas jarak dalam cm (atur sesuai kebutuhan)
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// Initialize pins
pinMode(trigPin, OUTPUT); // Set pin Trigger sebagai output
pinMode(echoPin, INPUT); // Set pin Echo sebagai input
pinMode(blue, OUTPUT); // Set pin LED biru sebagai output
pinMode(green, OUTPUT); // Set pin LED hijau sebagai output
pinMode(cahaya, INPUT); // Set pin LDR sebagai input
// Connect to WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConnected to WiFi!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP()); // Print IP address
}
void loop() {
// Membaca nilai dari sensor ultrasonik
distance = getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Membaca nilai dari LDR
ldrValue = analogRead(cahaya);
Serial.print("LDR Value: ");
Serial.println(ldrValue);
if (distance < distanceThreshold) { // Jika ada objek dalam jarak threshold
digitalWrite(green, LOW); // Matikan LED hijau
digitalWrite(blue, HIGH); // Nyalakan LED biru
Serial.println("Object detected within range!");
} else { // Jika tidak ada objek dalam jarak threshold
// Logika LDR
if (ldrValue > threshold) { // Jika gelap (nilai LDR kecil)
digitalWrite(green, HIGH); // Nyalakan LED hijau
digitalWrite(blue, LOW); // Matikan LED biru
} else { // Jika terang (nilai LDR besar)
digitalWrite(green, LOW); // Matikan LED hijau
digitalWrite(blue, LOW); // Matikan LED biru
}
}
delay(1000); // Delay untuk stabilisasi
}
// Fungsi untuk menghitung jarak menggunakan sensor ultrasonik
float getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = (duration * 0.034) / 2; // Hitung jarak dalam cm
return distance;
}