Antarmuka Grafis & Karakter

Membangun dashboard cerdas menggunakan layar LCD 16x2 I2C untuk menampilkan teks dan sensor.

90 Menit
Modul 3: Aktuator & Antarmuka Display
Pertemuan 8

TPTujuan Pembelajaran

  1. Peserta didik dapat menggunakan LCD 16x2 dengan I2C untuk menampilkan teks
  2. Peserta didik dapat mengatur posisi kursor dan membuat tampilan multi-baris
  3. Peserta didik dapat membuat karakter custom pada LCD
  4. Peserta didik dapat membangun dashboard mini: tampilkan data sensor di LCD

Mengenal LCD 16x2 dan I2C

Bayangkan jika alat yang kamu buat bisa "berbicara" langsung dengan penggunanya. Di sinilah peran layar! LCD (Liquid Crystal Display) 16x2 bisa menampilkan teks hingga 16 karakter di dua baris yang berbeda.

Instalasi Library

Agar Arduino kita bisa berkomunikasi dengan LCD melalui modul I2C, kita butuh "buku kamus" tambahan, yaitu sebuah Library bernama LiquidCrystal_I2C.

Perintah Dasar LCD

Mengendalikan LCD sangat mudah. Seperti mengetik di komputer, kita tentukan di mana kita mau mengetik (setCursor), lalu kita tulis (print).

Alur Perintah Dasar LCD

Membuat Karakter Custom

Layar LCD tidak hanya untuk huruf dan angka. Kita bisa menggambar ikon kita sendiri! Setiap kotak huruf di LCD berukuran 5x8 piksel. Kita bisa mengubahnya dengan memberi perintah biner 1 (nyala) atau 0 (mati).

icon.ino
cpp
// Ikon Hati / Love
byte heart[] = {
  B00000,
  B01010,
  B11111,
  B11111,
  B01110,
  B00100,
  B00000,
  B00000
};

Proyek: Smart Dashboard

Sekarang, mari satukan sensor yang pernah kita pelajari dengan layar LCD untuk membuat Smart Climate Monitor.

smart_dashboard.ino
cpp
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(2, DHT11);

// Custom character: thermometer icon
byte termometer[] = { B00100, B01010, B01010, B01110, B01110, B11111, B11111, B01110 };
// Custom character: droplet icon
byte tetes[] = { B00100, B00100, B01010, B01010, B10001, B10001, B10001, B01110 };

void setup() {
  lcd.init();
  lcd.backlight();
  dht.begin();
  
  lcd.createChar(0, termometer);
  lcd.createChar(1, tetes);
  
  lcd.setCursor(0, 0);
  lcd.print("Smart Climate");
  lcd.setCursor(0, 1);
  lcd.print("Monitor v1.0");
  delay(2000);
}

void loop() {
  float suhu = dht.readTemperature();
  float kelembaban = dht.readHumidity();
  
  lcd.clear();
  
  // Baris 1: Suhu dengan icon
  lcd.setCursor(0, 0);
  lcd.write(0); // icon termometer
  lcd.print(" Suhu: ");
  lcd.print(suhu, 1);
  lcd.print((char)223); // degree symbol
  lcd.print("C");
  
  // Baris 2: Kelembaban dengan icon
  lcd.setCursor(0, 1);
  lcd.write(1); // icon tetes
  lcd.print(" RH: ");
  lcd.print(kelembaban, 1);
  lcd.print("%");
  
  delay(2000);
}

Troubleshooting

Masalah:Layar hanya menampilkan kotak-kotak hitam

Solusi:Putar potensiometer biru yang ada di modul I2C di belakang LCD menggunakan obeng untuk mengatur kontras (kecerahan kotak).


Masalah:Layar tidak menampilkan apapun (kosong)

Solusi:Cek kembali alamat I2C. Coba ganti dari 0x27 ke 0x3F.


Masalah:Tulisan acak / aneh

Solusi:Pastikan kabel SDA dan SCL terpasang dengan kuat dan tidak tertukar, atau kencangkan solderannya.

Kuis

Berapa banyak kabel yang dibutuhkan untuk menghubungkan LCD 16x2 dengan modul I2C ke Arduino?

Sedang

Apa fungsi perintah lcd.setCursor(0, 1) pada LCD 16x2?

Tantangan

Latihan Praktik

Running Text Sederhana

Tantangan: Buatlah tulisan "SMANSA ROBOTIKA" berjalan dari kanan ke kiri pada baris pertama LCD, menggunakan perulangan for dan kombinasi lcd.clear() dan lcd.setCursor().

Ringkasan

Kesimpulan Pertemuan 8
  • LCD mempermudah kita menampilkan informasi atau pesan ke pengguna.
  • Modul I2C menghemat pin Arduino, menjadikannya sangat efisien.
  • Kita bisa membuat desain grafis (ikon) kita sendiri pada LCD.
  • Menggabungkan sensor dan LCD memungkinkan kita membuat dashboard monitoring profesional.

RRefleksi

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

Kejutan & Penemuan

Apa yang paling mengejutkan atau menarik hari ini?

Seberapa seru bisa menggambar ikonmu sendiri dengan susunan angka biner (1 dan 0)?

Masih Membingungkan

Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?

Apakah penggunaan kolom dan baris pada LCD sempat membuatmu bingung?

Rencana Selanjutnya

Apa yang ingin kamu coba atau pelajari minggu depan?

Alat monitoring apa yang ingin kamu ciptakan dengan tampilan LCD ini?

Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.