Otomatisasi Kondisional

Membuat sistem yang merespons kondisi sensor secara otomatis menggunakan logika if-else.

90 Menit
Modul 5: Pemrograman Arduino Dasar
Pertemuan 13

TPTujuan Pembelajaran

  1. Peserta didik dapat membuat sistem yang merespons kondisi sensor secara otomatis
  2. Peserta didik dapat menggunakan if-else dengan kondisi sensor analog
  3. Peserta didik dapat membangun sistem auto-lamp yang menyala saat cahaya redup (LDR sensor)
  4. Peserta didik dapat mengintegrasikan multiple I/O dalam satu sistem yang bermakna

Apa itu Otomatisasi?

Pernahkah kalian memperhatikan lampu jalan yang tiba-tiba menyala sendiri saat hari mulai gelap? Atau AC di ruang guru yang otomatis mengecilkan suhunya saat ruangan terasa panas? Itulah yang disebut Otomatisasi.

Otomatisasi berarti membuat sistem yang bisa mengambil keputusan dan bertindak sendiri tanpa perlu bantuan manusia secara terus-menerus. Sistem ini layaknya tubuh kita: punya mata atau kulit (sensor) untuk merasakan keadaan sekitar, otak (Arduino) untuk memikirkan kondisi tersebut, dan otot (aktuator/output) untuk bertindak.

Sensor LDR: Mata Arduino

Untuk membuat sistem kita bisa melihat cahaya, kita butuh komponen khusus bernama LDR (Light Dependent Resistor). Sesuai namanya, LDR adalah resistor (penghambat arus listrik) yang nilai hambatannya berubah-ubah tergantung seberapa terang cahaya yang diterimanya.

LDR bersifat analog, artinya ia tidak hanya merespons "terang" atau "gelap" (1 atau 0) saja, melainkan bisa mengukur gradasi cahaya—misalnya agak terang, redup, mendung, dsb. Karena itu, LDR dibaca menggunakan pin analog (A0-A5) dengan fungsi analogRead().

Logika Threshold: Batas Keputusan

Ketika Arduino membaca sensor LDR menggunakan analogRead(), nilai yang masuk adalah rentang angka antara 0 hingga 1023. Masalahnya, darimana Arduino tahu bahwa nilai 400 itu "gelap" dan nilai 800 itu "terang"?

Jawabannya adalah: Kita harus mengajarinya!

Kita perlu menentukan sebuah nilai batas atau Threshold. Nilai ini menjadi titik pemisah antara satu kondisi dengan kondisi lainnya.

Project: Lampu Otomatis Berbasis Cahaya

Mari kita mulai dengan sistem dasar: sebuah lampu otomatis. Jika kondisi ruangan di atas nilai threshold (terang), lampu mati. Jika di bawah threshold (gelap), lampu menyala.

auto_lamp_basic.ino
cpp
const int LDR_PIN = A0;
const int LED_PIN = 13;

int nilaiAmbang = 500; // Threshold untuk batas gelap/terang

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int cahaya = analogRead(LDR_PIN);
  Serial.print("Nilai sensor: ");
  Serial.println(cahaya);
  
  if (cahaya < nilaiAmbang) {
    // Jika sensor mendeteksi gelap
    digitalWrite(LED_PIN, HIGH);
    Serial.println("Kondisi Gelap -> Lampu ON");
  } else {
    // Jika sensor mendeteksi terang
    digitalWrite(LED_PIN, LOW);
    Serial.println("Kondisi Terang -> Lampu OFF");
  }
  
  delay(500);
}

Sistem Multi-Kondisi: Lebih dari Sekedar ON/OFF

Sistem yang cerdas seringkali butuh perlakuan berbeda, tak sekadar mati atau menyala penuh. Bagaimana kalau kita tambahkan tingkat "redup"?

Kita akan menggunakan PWM (Pulse Width Modulation) pada pin 9 untuk mengatur kecerahan LED berdasarkan 3 tingkat kondisi yang dibaca oleh LDR.

Alur Logika If-Else Multi-Kondisi
smart_auto_lamp.ino
cpp
const int LDR_PIN = A0;
const int LED_PIN = 9;   // Pin PWM

// Threshold dikalibrasi berdasarkan lingkungan
const int GELAP    = 300;  // Di bawah ini = gelap total
const int REDUP    = 600;  // Di bawah ini = redup
// Di atas REDUP = terang cukup

void setup() {
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Lampu Otomatis - Mode 3 Level");
}

void loop() {
  int cahaya = analogRead(LDR_PIN);
  
  if (cahaya < GELAP) {
    analogWrite(LED_PIN, 255);  // Terang maksimal
    Serial.println("Mode: GELAP  | LED: 100%");
  } else if (cahaya < REDUP) {
    analogWrite(LED_PIN, 128);  // Setengah terang
    Serial.println("Mode: REDUP  | LED: 50%");
  } else {
    analogWrite(LED_PIN, 0);    // Mati
    Serial.println("Mode: TERANG | LED: OFF");
  }
  
  Serial.print("Nilai LDR: ");
  Serial.println(cahaya);
  delay(500);
}
Serial Monitor Output
Lampu Otomatis - Mode 3 Level Mode: TERANG | LED: OFF Nilai LDR: 720 Mode: TERANG | LED: OFF Nilai LDR: 685 Mode: REDUP | LED: 50% Nilai LDR: 450 Mode: GELAP | LED: 100% Nilai LDR: 120

Troubleshooting

Masalah:Lampu berkedip cepat tidak jelas

Solusi:Gunakan delay() agar nilai yang terbaca stabil, dan pastikan perkabelan sensor LDR tidak kendor.


Masalah:LDR nilainya selalu 0 atau 1023

Solusi:Cek konfigurasi pembagi tegangan (voltage divider) dengan resistor 10k Ohm. Pastikan satu kaki LDR ke 5V dan satu lagi ke A0 yang juga ditarik ke GND melalui resistor 10k.


Masalah:analogWrite() tidak bekerja mengatur kecerahan

Solusi:Pastikan LED terhubung ke pin PWM (pin dengan tanda ~, seperti 3, 5, 6, 9, 10, 11). Pin 13 bukan PWM di board Uno biasa.

Cek Pemahaman

Mengapa kita sebaiknya tidak langsung menggunakan nilai pasti (hardcoded) seperti 500 untuk threshold LDR di program yang akan dipasang di berbagai tempat?

Sedang

Apa hasil eksekusi program jika sensor LDR membaca nilai 450 (mengacu pada program Smart Auto Lamp di atas)?

Mudah

Tantangan: Smart Classroom Light

Skenario: Smart Classroom

Kepala Sekolah meminta kalian membuat sistem pencahayaan hemat energi untuk ruang kelas.

Tugas:

  • Modifikasi program 3-Level sebelumnya.
  • Tambahkan sebuah Buzzer (misal di pin 8).
  • Saat kondisi GELAP (sangat gelap/malam hari), selain lampu menyala penuh (100%), Buzzer harus berbunyi singkat "Bip Bip" setiap kali masuk ke mode GELAP sebagai alarm peringatan.

Rangkuman & Refleksi

Kesimpulan Pertemuan 13
  • Otomatisasi menggunakan logika bersyarat (If-Else) memungkinkan alat bertindak berdasarkan masukan sensor (LDR).
  • Threshold (Nilai Ambang) adalah batas nilai penentu yang memisahkan antara suatu kondisi (misal terang vs gelap).
  • Pembacaan analogRead() pada LDR memungkinkan pengambilan banyak variasi keadaan (multi-kondisi), tidak hanya 1 dan 0.
  • Dengan PWM (analogWrite()), lampu dapat memberikan respons yang lebih adaptif, seperti meredup di kondisi cahaya setengah terang.

RRefleksi Belajar

Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Inspirasi proyek apa yang terlintas di pikiranmu setelah belajar otomatisasi dengan sensor LDR?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Bagian manakah dari menentukan nilai 'threshold' yang paling membingungkan saat kalian coba sendiri?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Hal baru apa yang ingin kalian tambahkan ke sistem lampu cerdas ini di masa depan?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.