Sensor cahaya LDR (Light Dependent Resistor), atau sering juga disebut photoresistor, adalah komponen elektronik yang resistansinya berubah tergantung intensitas cahaya yang mengenainya.
Berikut adalah cara memprogram sensor cahaya di esp 32 dengan mudah :
Untuk kode bisa gunakan di bawah ini :
#include <Arduino.h>
int port_sensor_ldr = A0;
void setup()
{
Serial.begin(9600);
pinMode(port_sensor_ldr, INPUT);
}
void loop(){
int sensor_ldr = digitalRead(port_sensor_ldr);
Serial.println("LDR : " + (String)sensor_ldr);
}
🔍 Tujuan Program
Program ini mencoba membaca nilai dari sensor LDR (Light Dependent Resistor) yang terhubung ke pin analog A0, lalu mencetak hasil pembacaannya ke Serial Monitor.
Namun, ada kesalahan logika penting dalam kode ini: pembacaan menggunakan digitalRead() padahal pin A0 adalah pin analog, dan LDR memberikan output analog. Jadi seharusnya menggunakan analogRead().
Tapi mari kita bahas seluruh kode terlebih dahulu.
📦 Kode Lengkap dan Penjelasannya
1. Import Pustaka Arduino
#include <Arduino.h>
- Ini adalah pustaka dasar dari Arduino, biasanya otomatis disertakan oleh IDE Arduino.
2. Inisialisasi Pin Sensor
int port_sensor_ldr = A0;
- Mendeklarasikan variabel
port_sensor_ldrdan mengaturnya keA0, yaitu pin analog input 0 di board Arduino. - Sensor LDR biasanya dihubungkan ke pin analog karena output-nya berupa tegangan bervariasi tergantung cahaya.
3. Fungsi setup()
void setup() {
Serial.begin(9600);
pinMode(port_sensor_ldr, INPUT);
}
Serial.begin(9600): Memulai komunikasi serial dengan baudrate 9600, agar bisa menampilkan data di Serial Monitor.pinMode(..., INPUT): Mengatur pinA0sebagai input. Sebenarnya tidak perlu memanggilpinMode()untuk pin analog, karenaanalogRead()sudah otomatis mengaturnya sebagai input.
4. Fungsi loop()
void loop() {
int sensor_ldr = digitalRead(port_sensor_ldr);
Serial.println("LDR : " + (String)sensor_ldr);
}
- Ini bagian yang salah: ⚠️
digitalRead()hanya membaca nilai HIGH atau LOW (1 atau 0), padahal sensor LDR menghasilkan nilai analog (0–1023). ✅ Seharusnya menggunakan:int sensor_ldr = analogRead(port_sensor_ldr); Serial.println(...): Menampilkan nilai sensor ke Serial Monitor dalam format:LDR : 587
✅ Versi Perbaikan Kode
Agar program berjalan sesuai fungsinya (membaca intensitas cahaya dari LDR), kamu bisa ubah digitalRead() menjadi analogRead():
#include <Arduino.h>
int port_sensor_ldr = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensor_ldr = analogRead(port_sensor_ldr);
Serial.println("LDR : " + String(sensor_ldr));
delay(500); // agar tidak terlalu cepat
}
📌 Kesimpulan
- LDR menghasilkan sinyal analog, bukan digital.
- Untuk membacanya, gunakan
analogRead()— bukandigitalRead(). analogRead()akan menghasilkan nilai antara 0 (gelap total) hingga 1023 (terang maksimal) tergantung pencahayaan.
untuk diskusi bisa kontak dibawah ini :

Sosial media :





