#include <WiFi.h>
// Definisi pin
#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
// batas
int NilaiCahaya = 0; // Variabel untuk membaca nilai LDR
int threshold = 1000; // Batas terang-gelap (atur sesuai pembacaan LDR)
float distance = 0; // Variabel untuk jarak ultrasonik
float jarak = 200.0; // Batas jarak dalam cm (atur sesuai kebutuhan)
// Wi-Fi credentials (khusus untuk Wokwi)
const char* ssid = "Wokwi-GUEST"; // Nama Wi-Fi Wokwi
const char* password = ""; // Password kosong untuk Wokwi
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// Inisialisasi Wi-Fi
connectToWiFi();
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
}
void loop() {
// Membaca nilai dari LDR
NilaiCahaya = analogRead(cahaya);
Serial.print("Nilai Cahaya: ");
Serial.println(NilaiCahaya);
// Selalu menghitung jarak
distance = getDistance();
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (NilaiCahaya < threshold) { // Jika terang (nilai LDR besar)
digitalWrite(green, LOW); // Matikan LED hijau
digitalWrite(blue, LOW); // Matikan LED biru
Serial.println("Terang: Semua lampu mati");
} else { // Jika gelap (nilai LDR kecil)
if (distance < jarak) { // Jika ada objek dalam jarak threshold
digitalWrite(green, HIGH); // Nyalakan LED hijau
digitalWrite(blue, HIGH); // Nyalakan LED biru
Serial.println("Gelap: Object detected within range!");
} else { // Jika tidak ada objek dalam jarak threshold
digitalWrite(green, HIGH); // Nyalakan LED hijau
digitalWrite(blue, LOW); // Matikan LED biru
Serial.println("Gelap: No object detected");
}
}
delay(5000); // 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;
}
// Fungsi untuk menghubungkan ke Wi-Fi
void connectToWiFi() {
Serial.print("Connecting to Wi-Fi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}