Cara Menggunakan Sensor Cahaya di ESP32

Cara Menggunakan Sensor Cahaya di ESP32

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_ldr dan mengaturnya ke A0, 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 pin A0 sebagai input. Sebenarnya tidak perlu memanggil pinMode() untuk pin analog, karena analogRead() 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() — bukan digitalRead().
  • analogRead() akan menghasilkan nilai antara 0 (gelap total) hingga 1023 (terang maksimal) tergantung pencahayaan.

untuk diskusi bisa kontak dibawah ini :

Sosial media :