Cara membaca sensor LDR di Arduino berarti mengubah resistansi cahaya menjadi angka yang bisa diolah program. Rangkai LDR dengan satu resistor sebagai pembagi tegangan, sambungkan ke pin analog, lalu baca nilainya lewat analogRead(). Setelah itu tentukan ambang batas sesuai kondisi ruangan.
Bagian yang sering bikin macet justru memilih resistor dan menetapkan angka ambang, bukan kodenya. Dua hal itu saya bahas di sini.
Bahan yang perlu disiapkan
- Arduino Uno atau board sejenis
- Modul LDR atau LDR telanjang plus resistor 10k ohm
- Breadboard dan beberapa kabel jumper
- Kabel USB untuk upload program
- Multimeter (opsional, membantu saat cek tegangan)
Kalau komponenmu masih sedikit, lihat dulu daftar modul sensor Arduino untuk pemula supaya belanja komponennya lebih terarah.
Merangkai pembagi tegangan dengan LDR
Resistansi LDR berubah tergantung cahaya. Saat terang, resistansinya turun; saat gelap, nilainya naik. Arduino tidak bisa membaca resistansi langsung, jadi kita ubah jadi tegangan lewat pembagi tegangan.
Susunannya sederhana: pin 5V ke salah satu kaki LDR, kaki LDR lainnya ke pin A0 sekaligus ke resistor 10k ohm, lalu ujung resistor ke GND. Titik pertemuan LDR dan resistor itulah yang dibaca Arduino.
5V ---- LDR ----+---- resistor 10k ---- GND
|
A0
Dengan susunan ini, saat ruangan gelap tegangan di A0 naik mendekati 5V. Saat terang, tegangannya turun mendekati 0V. Kalau posisi LDR dan resistor ditukar, hasilnya terbalik. Keduanya sah, hanya perlu konsisten saat menulis logika program.
Program pertama: melihat angka mentah sensor
Sebelum membuat lampu otomatis, pastikan sensornya terbaca. Upload sketch berikut dan buka Serial Monitor pada 9600 baud.
const int pinLDR = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int nilai = analogRead(pinLDR);
Serial.print("Nilai LDR: ");
Serial.println(nilai);
delay(500);
}
Arduino Uno punya ADC 10 bit, jadi hasil analogRead() berkisar 0 sampai 1023. Tutup sensor dengan telapak tangan, angkanya harus bergerak ke salah satu ujung. Sorot dengan lampu HP, angkanya bergerak ke ujung lainnya.
Kalau angka tidak berubah sama sekali, cek tiga hal: kabel A0 benar-benar masuk pin analog, resistor tidak longgar di breadboard, dan ground Arduino tersambung ke jalur GND yang sama.
Menentukan nilai ambang untuk lampu otomatis
Nilai ambang tidak bisa disalin dari tutorial orang lain karena bergantung pada jenis LDR, nilai resistor, dan cahaya ruanganmu. Catat angka saat ruangan normal, lalu catat angka saat lampu dimatikan.
| Kondisi | Contoh pembacaan |
|---|---|
| Ruangan terang | 180 |
| Sore hari | 450 |
| Lampu dimatikan | 780 |
Angka di tabel hanya ilustrasi supaya kelihatan polanya. Ambil nilai tengah antara kondisi terang dan gelap, misalnya 600, lalu jadikan batas nyala lampu.
Tambahkan jeda histeresis supaya lampu tidak berkedip saat cahaya di batas ambang naik-turun tipis. Pakai dua ambang: nyalakan lampu di bawah 580, matikan di atas 640.
Mengendalikan relay dari hasil pembacaan
Untuk menyalakan lampu 220V, gunakan modul relay. Jangan menyambung beban listrik langsung ke pin Arduino karena pin digital hanya mengeluarkan arus kecil dan bisa rusak.
const int pinLDR = A0;
const int pinRelay = 7;
const int batasNyala = 580;
const int batasMati = 640;
bool lampuNyala = false;
void setup() {
pinMode(pinRelay, OUTPUT);
digitalWrite(pinRelay, HIGH);
Serial.begin(9600);
}
void loop() {
int nilai = analogRead(pinLDR);
if (!lampuNyala && nilai < batasNyala) {
digitalWrite(pinRelay, LOW);
lampuNyala = true;
} else if (lampuNyala && nilai > batasMati) {
digitalWrite(pinRelay, HIGH);
lampuNyala = false;
}
delay(200);
}
Banyak modul relay aktif rendah, jadi pin diberi LOW untuk menyalakan. Cek label pada modulmu karena sebagian modul aktif tinggi.
Kalibrasi ulang setelah dipasang permanen
Angka yang kamu catat di meja kerja akan berubah setelah sensor dipasang di posisi sebenarnya. Posisi menghadap jendela, pantulan dinding, dan lampu ruangan semuanya memengaruhi pembacaan.
Setelah terpasang, buka Serial Monitor lagi selama satu hari penuh. Perhatikan nilai pada pagi, siang, dan malam. Sesuaikan kedua ambang berdasarkan data itu, bukan berdasarkan tebakan.
Kalau kamu ingin memantau perangkat yang sudah online, misalnya board ESP32 di proyek lain, cara memantau uptime situs dengan layanan gratis bisa jadi gambaran sederhana tentang pengecekan berkala. Untuk proyek yang mencatat data sensor ke layanan awan, kebiasaan merapikan akses dan kredensial juga perlu, seperti dijelaskan di panduan cara menghapus jejak digital dengan aman.
Kesalahan yang paling sering terjadi
- Memakai resistor 1k ohm sehingga rentang pembacaan terlalu sempit. 10k ohm lebih aman untuk banyak jenis LDR.
- Menaruh LDR di dalam kotak yang terkena cahaya lampu indikator board, bukan cahaya ruangan.
- Lupa menyamakan ground antara modul relay dan Arduino saat memakai catu daya terpisah.
- Menyalakan beban besar tanpa relay atau driver, lalu heran kenapa board mati sendiri.
Sebagian ide pengembangan proyek bisa kamu temukan di kumpulan proyek Arduino sederhana untuk pemula, termasuk yang memakai sensor cahaya sebagai pemicu.
Ringkasan
LDR bekerja lewat pembagi tegangan dengan satu resistor, hasilnya dibaca di pin analog sebagai angka 0 sampai 1023. Dua hal menentukan keberhasilannya: resistor 10k ohm sebagai pasangan, dan ambang batas yang dikalibrasi di lokasi pemasangan sebenarnya. Setelah itu relay bisa mengatur lampu tanpa perlu kamu sentuh lagi.
Pertanyaan yang Sering Diajukan
Apakah LDR bisa dipakai tanpa resistor tambahan?
Tidak bisa untuk pembacaan analog. Tanpa resistor, tidak ada jalur yang membentuk pembagi tegangan sehingga pin analog membaca nilai yang tidak berarti. Resistor itu yang mengubah perubahan resistansi LDR menjadi perubahan tegangan.
Kenapa nilai sensor saya tidak pernah sampai 0 atau 1023?
Itu normal. LDR punya resistansi sisa saat terang dan batas atas saat gelap, jadi tegangan di titik baca tidak pernah menyentuh 0V atau 5V sepenuhnya. Yang penting rentangnya cukup lebar untuk membedakan kondisi terang dan gelap.
Berapa nilai ambang yang tepat untuk lampu otomatis?
Tidak ada angka tunggal. Ukur sendiri di ruangan tempat sensor dipasang, lalu ambil nilai tengah antara kondisi terang dan gelap. Tambahkan selisih kecil antara ambang nyala dan mati agar lampu tidak berkedip.