📺 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
- Tambahkan countdown angka (5..1) pada setiap lampu.
- Ubah tampilan OLED agar menampilkan teks + simbol 🚗 saat hijau, ⚠️ saat kuning, ⛔ saat merah.
- Gunakan fungsi
millis()untuk menghindari penggunaandelay()agar sistem tetap responsif.
No comments:
Post a Comment