📺 Monitoring Sistem dengan LCD & OLED

Menampilkan status lampu lalu lintas atau kondisi sensor pada layar LCD 16x2 (I2C) dan OLED SSD1306.

🎯 Tujuan: Siswa mampu menampilkan data sensor atau status sistem ke layar LCD/OLED secara real-time.

🔧 Komponen yang Dibutuhkan

  • Arduino Uno / Nano
  • LCD 16x2 dengan modul I2C (alamat default: 0x27)
  • OLED SSD1306 (128x64, I2C, alamat 0x3C)
  • Resistor, jumper, dan breadboard
  • Kabel USB untuk upload program

1️⃣ Monitoring dengan LCD 16x2 (I2C)

LCD 16x2 dapat menampilkan teks sederhana seperti status lampu (HIJAU – KUNING – MERAH) atau informasi sensor.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

int merah = 2, kuning = 3, hijau = 4;

void setup() {
  lcd.init();           // Inisialisasi LCD
  lcd.backlight();      // Menyalakan lampu LCD
  pinMode(merah, OUTPUT);
  pinMode(kuning, OUTPUT);
  pinMode(hijau, OUTPUT);
}

void loop() {
  // Lampu Hijau
  digitalWrite(hijau, HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Lampu: HIJAU");
  delay(5000);
  digitalWrite(hijau, LOW);

  // Lampu Kuning
  digitalWrite(kuning, HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Lampu: KUNING");
  lcd.setCursor(0,1);
  lcd.print("Hati-hati!");
  delay(2000);
  digitalWrite(kuning, LOW);

  // Lampu Merah
  digitalWrite(merah, HIGH);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Lampu: MERAH");
  lcd.setCursor(0,1);
  lcd.print("Berhenti!");
  delay(5000);
  digitalWrite(merah, LOW);
}

2️⃣ Monitoring dengan OLED SSD1306

OLED lebih fleksibel: dapat menampilkan teks, angka, grafik, bahkan ikon 🚦. Cocok untuk membuat dashboard mini.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

int merah = 2, kuning = 3, hijau = 4;

void setup() {
  pinMode(merah, OUTPUT);
  pinMode(kuning, OUTPUT);
  pinMode(hijau, OUTPUT);

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    for(;;); // berhenti jika OLED tidak terdeteksi
  }
  display.clearDisplay();
  display.display();
}

void loop() {
  // Hijau
  digitalWrite(hijau, HIGH);
  tampilkan("🚦 HIJAU", 5000);
  digitalWrite(hijau, LOW);

  // Kuning
  digitalWrite(kuning, HIGH);
  tampilkan("🚦 KUNING\nHati-hati!", 2000);
  digitalWrite(kuning, LOW);

  // Merah
  digitalWrite(merah, HIGH);
  tampilkan("🚦 MERAH\nSTOP!", 5000);
  digitalWrite(merah, LOW);
}

void tampilkan(String teks, int waktu) {
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 20);
  display.println(teks);
  display.display();
  delay(waktu);
}

📘 Penjelasan

  • LiquidCrystal_I2C → Library untuk mengontrol LCD berbasis I2C.
  • Adafruit SSD1306 & Adafruit GFX → Library resmi untuk OLED.
  • Fungsi lcd.setCursor(x,y) → Menentukan posisi teks (kolom, baris).
  • Pada OLED, kita bisa menambahkan ikon atau gambar sederhana.

📝 Aktivitas Siswa

  1. Tambahkan countdown angka (5..1) pada setiap lampu.
  2. Ubah tampilan OLED agar menampilkan teks + simbol 🚗 saat hijau, ⚠️ saat kuning, ⛔ saat merah.
  3. Gunakan fungsi millis() untuk menghindari penggunaan delay() agar sistem tetap responsif.

No comments:

Post a Comment