Project ini membuat lampu yang menyala otomatis saat kondisi sekitar gelap, dan mati sendiri saat terang — mirip lampu taman atau lampu jalan otomatis. Menggunakan sensor cahaya LDR untuk membaca kondisi lingkungan.
| Komponen | Pin Arduino | Fungsi |
|---|---|---|
| Sensor LDR (kaki 1) | Pin A0 | Membaca tingkat cahaya |
| Sensor LDR (kaki 2) | 5V (lewat resistor pembagi tegangan 10K) | Sumber tegangan sensor |
| Anoda LED (kaki panjang) | Pin 8 | Menyala saat kondisi gelap |
| Katoda LED (kaki pendek) | GND (lewat resistor 220Ω) | Jalur kembali arus |
Sensor LDR perlu dirangkai sebagai pembagi tegangan: satu kaki LDR ke 5V, kaki lainnya ke pin A0 sekaligus ke GND lewat resistor 10K. Untuk LED, hubungkan kaki panjang (anoda) ke pin 8 melalui resistor 220Ω, lalu kaki pendek (katoda) ke GND.
Sambungkan Arduino ke laptop pakai kabel USB, pastikan board dan port sudah dipilih dengan benar di menu Tools.


Salin kode di bawah ini ke Arduino IDE, klik tombol Upload, lalu buka Serial Monitor untuk melihat nilai cahaya yang terus diperbarui.
// Menentukan pin untuk sensor dan lampu
int pinSensor = A0; // Sensor LDR dihubungkan ke Analog A0
int pinLampu = 8; // LED dihubungkan ke Digital 8
// Menentukan batas nilai gelap/terang
// Semakin kecil angka, semakin gelap
int batasGelap = 500;
void setup() {
// Memulai komunikasi ke layar Serial Monitor
Serial.begin(9600);
// Mengatur pin lampu sebagai OUTPUT
// Pin Analog (A0) otomatis menjadi INPUT, jadi tidak wajib ditulis
pinMode(pinLampu, OUTPUT);
}
void loop() {
// 1. Membaca nilai cahaya dari sensor (0 sampai 1023)
int nilaiCahaya = analogRead(pinSensor);
// 2. Menampilkan nilai tersebut di Serial Monitor
Serial.print("Tingkat Cahaya: ");
Serial.println(nilaiCahaya);
// 3. Logika Lampu Otomatis
if (nilaiCahaya < batasGelap) {
// JIKA nilai cahaya di bawah 500 (Kondisi Gelap)
digitalWrite(pinLampu, HIGH); // Nyalakan Lampu
} else {
// JIKA nilai cahaya di atas 500 (Kondisi Terang)
digitalWrite(pinLampu, LOW); // Matikan Lampu
}
// Jeda sebentar sebelum membaca ulang
delay(200);
}
Sensor LDR punya nilai resistansi yang berubah tergantung cahaya yang mengenainya — semakin gelap, semakin besar resistansinya. Lewat rangkaian pembagi tegangan, perubahan ini terbaca Arduino sebagai angka 0-1023 lewat analogRead(). Program membandingkan angka itu dengan batasGelap (500): di bawah itu dianggap gelap, di atas itu dianggap terang.
Angka 500 di variabel batasGelap bukan angka mutlak — nilai ini sangat tergantung kondisi pencahayaan ruangan dan jenis LDR yang dipakai. Coba lihat angka di Serial Monitor saat ruangan terang dan gelap, lalu sesuaikan batasGelap ke nilai tengah di antara keduanya.
🔒 Simulasi ini dikunci. Minta passcode ke gurumu untuk membuka.