Bekerja dengan I2C LCD dan Arduino

Yang dimaksud dengan I2C LCD adalah modul LCD yang dikendalikan secara serial sinkron dengan protokol I2C/IIC (Inter Integrated Circuit) atau TWI (Two Wire Interface). Normalnya, modul LCD dikendalikan secara parallel baik untuk jalur data maupun kontrolnya. Namun, jalur parallel akan memakan banyak pin di sisi kontroller (misal Arduino, Android, komputer, dll). Setidaknya Anda akan membutuhkan 6 atau 7 pin untuk mengendalikan sebuah modul LCD. Dengan demikian untuk sebuah kontroller yang ‘sibuk’ dan harus mengendalikan banyak I/O, menggunakan jalur parallel adalah solusi yang kurang tepat.

Sebagai contoh, sebuah Arduino Uno memiliki pin digital sebanyak 13 buah. Jika Anda gunakan separuhnya untuk mengendalikan LCD berarti Anda hanya punya alternatif sekitar 6 atau 7 pin untuk mengendalikan perangkat yang lain, misalnya motor DC, sensor cahaya, keypad, dan I/O devices lainnya. Nah, sekarang tergantung pada sistem Anda, cukup atau tidak jika harus menggunakan 6/7 pin khusus untuk bekerja dengan LCD saja. Jika tidak cukup, Anda dengan mengubah jalur kendali LCD dari parallel ke serial (I2C) menggunakan modul I2C converter, sehingga Anda hanya akan membutuhkan 2 jalur kabel saja (plus satu kabel ground) untuk menghubungi sang LCD.

Arduino sendiri sudah mendukung protokol I2C/IIC. Di papan Arduino Uno, port I2C terletak pada pin A4 untuk jalur SDA (Serial Data) dan pin A5 untuk jalur SCL (Serial Clock). Jangan lupa untuk menghubungkan jalur kabel Ground antara Arduino dengan perangkat I2C client. Untuk sisi software, Arduino sudah cukup membantu kita bekerja dengan protokol ini melalui library ‘Wire.h’. Berikutnya, library ini akan dimanfaatkan untuk mengkonversi jalur parallel LCD menjadi jalur serial I2C. Anda dapat secara manual melakukannya, tapi jika tidak ingin repot, Anda dapat dengan mudah melakukannya menggunakan library LiquidCrystal_I2C.h (bersama dengan library LCD.h). Anda dapat mengunduh  LiquidCrystal_I2C secara gratis di sini dan library LCD.h di sini Untuk menambahkan library baru ke Arduino IDE dapat Anda baca caranya di sini.

Perlu saya sampaikan bahwa tidak ada (setidaknya belum saya temukan) hardware modul LCD yang mendukung/memiliki port I2C. Dengan demikian, kita akan tetap menggunakan modul LCD biasa (dengan komunikasi data secara parallel), namun akan kita konversi menggunakan modul I2C converter seperti tampak pada gambar di bawah.

modul I2C converter

Modul I2C converter ini menggunakan chip IC PCF8574 produk dari NXP sebagai kontrollernya. IC ini adalah sebuah  8 bit I/O expander for I2C bus yang pada dasarnya adalah sebuah shift register.

Untuk alur komunikasi datanya, ditunjukkan dengan  pada gambar di bawah

alur kerja modul I2C LCD Arduino

Sedangkan wiring kabel antara Arduino, modul konverter I2C dan modul LCD dapat mengikuti gambar di bawah.

bekerja dengan I2C LCD dan Arduino

Untuk sisi software-nya, Anda cukup mendefinisikan library LiquidCrystal_I2C.h di bagian atas sketch Anda. Selanjutnya, seluruh function yang termaktub dalam library ini dapat Anda maksimalkan. Berikut ini adalah contoh sketch Arduino untuk menampilkan tulisan ke dalam LCD dengan perantara modul I2C converter PCF8574.

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

LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7); // 0x27 = alamat I2C modul

void setup()
{
  lcd.begin (16,2); // LCD 16x2
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
}

void loop()
{
lcd.clear();
lcd.home (); // set cursor to 0,0
lcd.print("Hello World");
lcd.setCursor (0,1);
lcd.print("Saptaji.com");
delay(1000);
lcd.setBacklight(LOW);      // Backlight off
delay(250);
lcd.setBacklight(HIGH);     // Backlight on
delay(1000);
}

Perlu Anda perhatikan pada baris [1 – 3] digunakan untuk mendefinisikan library Wire, LCD dan LiquidCrystal_I2C. Ketiga library ini wajib ada jika akan bekerja dengan I2C LCD. Selanjutnya perlu kita buat sebuah instance ‘lcd’ pada class ‘LiquidCrystal_I2C’ (baris [5]). Perhatikan elemen/parameter dari class ini yang menunjukkan alamat modul I2C, pinout control dan pinout data LCD. Pada kesempatan lain akan saya jelaskan mengapa menggunakan angka default 27H (0x27) untuk mengalamati modul konverter I2C ini dan bagaimana mengubahnya jika menggunakan lebih dari satu modul I2C converter.

Berikutnya kita perlu menginisialisasi modul LCD dalam blok void setup. Perhatikan dalam blok ini, kita definisikan LCD yang kita pakai adalah tipe 16×2 (baris [9]) dan kita set kecerahan/pencahayaan LCD  (baris [10-11]). Berturut-turut pada baris berikutnya kita akan membersihkan tampilan LCD (baris [16]), menuju koordinat LCD kolom 0, baris 0 (baris [17]), menuliskan tampilan ‘Hello Word’ ke LCD (baris [18]), mengeset kursor ke koordinat (0,1) yang artinya kolom 0, baris 1 (baris kedua LCD), menampilkan tulisan ‘Saptaji.com’ (baris [19-20]), dan sedikit meberikan efek animasi dengan menyalakan dan mematikan pencahayaan LCD pada baris [ 21-25 ].

Demikian tutorial penggunaan I2C LCD dengan modul konverter I2C dan Arduino, semoga ada manfaatnya. Tutorial berikutnya akan coba kita implementasikan I2C LCD ini untuk menampilkan pengukuran jarak bersama dengan sensor ultrasonik.

0 0 votes
Article Rating
Tags:, ,

Leave a Reply

35 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Aliebi

Mas Saptaji, bisa minta header LCD.h gak?

taufik

mas kenapa ya lcd ane cma blank kedapkedip doank ga ada tulisannya

Alex

Dah ngantuk mungkin mas :v

Serenity

Makasih banyak mz infonya
sukses selalu

ananda

Mas sapta aji, di LCD 20×4 kok ga mau running ya ?
Malah LCD nya jadi mati, gak hidup. Mohon bantuannya mas …

Triyono

kalau nggak ada tulisannya di lcd nya itu knp ya mas ?

Boy

mas kalau program ini saya aplikasi kan ke lcd grafik dan kode 16, 2 aq ganti dg 128, 64 kira2 bisa jalan gak mas? saya udah coba sih tapi gak nampil, mohon solusinya

Arya Kumara

selamat malam mas…
kalo misalnya yang mau kita tampilin counter dari detik gimana caranya ya..??
soalnya saya sudah coba perhitungan detiknya gak sesuai..
mohon pencerahannya…
heheee

Andrei

mas, saya mau nampilin tulisan di lcd tp ngga keluar. bagaimana ya?

Andrei

mas, untuk coding 2,1,0,4,5,6,7,3 itu fungsinya apa ya?

fatur

download library lcd dimana ya? Mohon pencerahannya ^_^

Carda ramdani

Berapa panjang maksimal kabel untuk i2c arduino menggunakan sda scl yg ada d arduino? Saya belum mengerti akan hal ini mohon bantu jawab ya teman’

Carda ramdani

Berti 1km pun gk msalah y om
Asal d psang resistor pullup gtu

Gilang

bang kok disuruh cari library wire.h? udah googling katanya udah ada di IDE tapi gak ada

Wahyu

Maaf mas mau nanya, untuk pin SCL dan SDA apakah bisa digunakan untuk mengoperasikan RTC dan I2C pada satu arduino uno?

Wahyu

Alamat librarynya ya mas atau gmn, bisa tolong kirim contoh programnya mas?

suyanto ea

suyanto ea

arsya

mas maaf, boleh minta tolong buat tutorial io expander kontrol relay …

samid

saya mau tanya mas. data yang di tampilkan di lcd 16×2 yang ada di gambar diatas apakah bisa di ambil menggunakan arduino uno menggunakan komunikasi i2c atau komunikasi lain?

WhatsApp Image 2020-11-27 at 21.31.30.jpeg
35
0
Would love your thoughts, please comment.x
()
x