Menampilkan Karakter pada LCD dengan Arduino (bag-2)
Pada tulisan sebelumnya sudah dijabarkan fungsi pin-pin pada LCD, cara penyambungannya dengan arduino menggunakan mode komunikasi 4-bit, serta menampilkan kalimat pada layar LCD. Kali ini akan membahas bagaimana menampilkan karakter spesial pada library LiquidCrystal. Setiap sel pada LCD resolusinya 5×8 pixel, sehingga bukan hanya alfabet saja yang dapat ditampilkan melainkan berbagai karakter yang sesuai dengan keinginan, asalkan sesuai dengan resolusinya. Karakter dapat dibuat sendiri, misalkan tanda rumput, jantung, kotak, dan lain sebagainya. Sebelumnya, perhatikan gambar berikut.
Jika dianalogikan dengan tabel, maka satu sel tersebut terdiri dari lima kolom delapan baris. Karena LCD ini aktif high, maka sel-sel yang aktif direpresentasikan dengan 1 dan sel-sel yang tidak aktif direpresentasikan dengan 0. Misal untuk membentuk karakter-karakter berikut ini.
Untuk menampilkan karakter-karakter diatas, perlu dibuatkan variabel array yang menyimpan konfigurasi biner sel yang membentuk karakter yang akan ditampilkan.
byte A[8]={B00000,B00000,B00001,B00010,B10100,B01000,B00000,B00000}; byte B[8]={B00000,B01010,B11111,B11111,B01110,B00100,B00000,B00000}; byte C[8]={B00100,B00100,B01110,B01110,B11111,B11111,B11111,B11111}; byte D[8]={B10001,B01010,B00100,B01110,B10101,B00100,B00100,B00100};
Array tersebut diubah menjadi karakter dengan menggunakan fungsi lcd.createChar(num,data). Sayangnya jumlah karakter spesial yang dapat ditampilkan terbatas sampai delapan karakter saja.
Berikut ini contoh kode program yang menampikan empat karakter di atas.
#include <LiquidCrystal.h> //menyertakan library LCD /*mengatur sambungan pin-pin LCD dengan arduino * parameternya rs, enable, d4,d5,d6,d7 */ LiquidCrystal lcd(7,6,2,3,4,5); /*array untuk karakter*/ byte A[8]={B00000,B00000,B00001,B00010,B10100,B01000,B00000,B00000}; byte B[8]={B00000,B01010,B11111,B11111,B01110,B00100,B00000,B00000}; byte C[8]={B00100,B00100,B01110,B01110,B11111,B11111,B11111,B11111}; byte D[8]={B10001,B01010,B00100,B01110,B10101,B00100,B00100,B00100}; void setup() { lcd.begin(16,2);//menggunakan LCD 16x2 //mengubah array menjadi karakter lcd.createChar(0,A); lcd.createChar(1,B); lcd.createChar(2,C); lcd.createChar(3,D); } void loop() { lcd.setCursor(0,0); //set posisi pada baris pertama kolom pertama lcd.print(" LCD Characters"); //menampilkan kalimat "LCD Characters" lcd.setCursor(1,1); //set posisi pada baris kedua kolom kedua lcd.write(byte(0)); //tampilkan karakter A lcd.setCursor(5,1); //set posisi pada baris kedua kolom keenam lcd.write(byte(1)); //tampilkan karakter B lcd.setCursor(9,1); //set posisi pada baris kedua kolom kesepuluh lcd.write(byte(2)); //tampilkan karakter C lcd.setCursor(14,1); //set posisi pada baris kedua kolom kelimabelas lcd.write(byte(3)); //tampilkan karakter D }
Jika dijalankan pada SimulIDE hasilnya seperti berikut ini.
Demikian, semoga bermanfaat.
Referensi:
- https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar