Pembelajaran Cara Penyajian Informasi dengan LCD ini menjelaskan cara menghubungkan LCD dengan Arduino dan membahas beberapa fitur yang terkait dengan LCD, termasuk LCD grafik. Selain itu, dibahas pula aplikasi untuk memantau intensitas cahaya dengan menggunakan LDR.
5.1 Pengenalan LCD
Liquid Crystal Display (LCD) biasa dipakal untuk menamplkan teks.Salah satu bentukmya 5.1 menunjukkan fungsi keenam belas pin di LCD.
Gambar 5.1 LCD display 2 x16 karakter
Tabel 5.1 Pin-pin di LCD
No.pin
Nama Pin
Keterangan
1
VSS
Dihubungkan ke ground
2
VDD
Catu daya positif
3
VO
Pengatur kontras.Potensiometer 10KΩ bisa
digunakan untuk mengatur tingkat kontras
4
RS
Register Select:
RS=HIGH untuk mengirim data
RS=LOW untuk mengirim instruksi
5
R/W
Read/Write control bus
R/W=HIGH untuk membaca data di LCD
6
E
Data Enable
E=HIGH supaya LCD dapat diakses
7
DBO
Data
8
DB1
Data
9
DB2
Data
10
DB3
Data
11
DB4
Data
12
DB5
Data
13
DB6
Data
14
DB7
Data
15
BLA
Catu daya positif untuk layar
16
BLK
Catu daya negatif untuk la
pin header biasa digunakan untuk menghubungkan komponen ini dengan breadboard. Contoh pemasangan pin header dan LCD diperlihatkan di Gambar 5.2.
Gambar 5.2 Pin header dan pemasangan ke LCD display
untuk LCD yang berisi 2 baris dan 16 kolom,penomorannya diperlihatkan di Gambar 5.3, Sel paling kiri dan atas memiliki ID baris 0 dan kolom 0.
Gambar 5.3 Penomoran kolom dan baris di LCD
5.2 Percobaan Menampilkan Tulisan di LCD Display
Percobaan pertama untuk menampilkan tulisan di LCD display dilakukan dengan menggunakan rangkaian di Gambar 5.4.Contoh penyusunan rangkaian ditunjukkan di Gambar 5.5.Gambar 5.6 menunjukkan contoh penyusunan rangkaian secara aktual.
Gambar 5.6 Contoh aktual percobaan LCD display
Sketch yang digunakan untuk menguji rangkaian di Gambar 5.4 dapat dilihat berikut ini:
Sketch:lcd
// ——————————————–
// Contoh untuk menampilkan tulisan di lcd display
digunakan untuk menyertakan pustaka yang berkaitan dengan LCD.Pustaka yang tersedia menyediakan
bernama LiquidCrystal.
Pernyataan berikut dipakai untuk menciptakan objek berkelas LiquidCrystal:
LiquidCrystal lcd(PIN _RS,PIN_E, PIN_DB_4,
PIN_DB_5,PIN_DB_6,PIN_DB_7);
Dalam hal ini,objek yang dibentuk bernama lcd. Tiga argumen pertama menentukan pin RS dan Empat argumen berikutnya menyatakan empat pin untuk data.
Penentuan jumlah kolom dan baris di LCD ditentukan di setup() dengan memberikan pernyataan:
lcd.begin(16, 2);
Dalam hal ini, 16 menyatakan jumlah kolom dan 2 menyatakan jumlah baris.
Di loop(),lcd.clear;digunakan untuk menghapus konten di layar.Setelah layar dihapus, dengan sendirinya diletakkan di pojok kiri atas. Adapun
lcd.print(“Balonku ada lima”);
digunakan untuk menampilkan string “Balonku ada lima”.String ini akan diletakkan dimulai darip pojok kiri-atas.Selanjutnya,pernyataan
lcd.setCursor(0,1);
digunakan untuk mengatur kursor di kolom pertama baris kedua.Dengan demikian, pernyataan
lcd.print(“Beraneka warna”);
menampilkan string “Beraneka warna” di baris kedua.
Contoh hasil dua lcd,print() di depan ditunjukkan di Gambar 5.7,Adapun hasil perintah berikut
diperlihatkan di Gambar 5.8:
lcd.clear()
led.print(“Meletus satu”))
1ed.setCurser(0,1);
led,print(“Tinggal 4-1ah”)
Gambar 5.8 Contoh kedua hasil di layar LCD
5.3 Eksplorasi Pernyataan lcd.print()
Untuk mengatur peletakan teks di LCD, fungsi anggota setCursor() bisa digunakan. Bentuk pemakaiannya seperti berikut:
objekLCD.setCursor(kolom,baris);
Nomor kolom dimulai dari nol dan begitu pula untuk nomor baris.Contoh berikut memberikan hasil seperti terlihat di Gambar 5.9:
lcd.setCursor(5, 0);
lcd.print(“Tengah”);
lcd.setCursot(8,1);
led,print(“Di Kanan”):
Gambar 5.9 Hasil pengaturan dengan setCursor()
Fungsi anggota print() bisa digunakan untuk menampilkan bilangan,termasuk yang bertipe Contoh:
float bil=43.56789;
lcd.clear();
lcd.print(“bil = “);
lcd.print(bil);
Pernyataan-pernyataan di atas memberikan hasil seperti terlihat di Gambar 5.10.
Gambar 5.10 Secara bawaan bilangan bertipe float ditampilkan dengan dua digit pecahon Dengan memberikan argumen kedua, jumlah digit pecahan bisa ditentukan. Contoh:
float b11-43.56789;
lcd.clear();
lcd.print(“bil=”);
lcd.print(bi1,4);
memberikan hasil seperti terlihat di Gambar 5.11.
Gambar 5.11 Efek penampilan bilangan bertipe float melalui cd.print(bi1, 4);
Adapun contoh berikut memperlihatkan cara untuk membuang bagian pecahan:
float bil=43.56789;
lcd.clear();
lcd.print(“bil = “);
lcd.print(bil, 0);
Hasilnya diperlihatkan di Gambar 5.12. Argumen kedua pada print () yang berupa 0 membuat bilangan bertipe float ke bilangan bulat,dengan pembulatan.
Gambar 5.12 Hasil pembulatan float ke integer
Untuk bilangan bulat, argumen kedua pada fungsi anggota print() berguna untuk menentukan bilangan ditampilkan dalam bentuk biner,oktal,atau heksadesimal. Contoh:
int bil=145;
lcd.setCursor(0, 0);
lcd.print(“bil=”);
lcd.print(bil);
lcd.setCursor(0,1);
lcd.print(“Biner: “);
lcd.print(bil, BIN);
Hasilnya seperti berkut :
Gambar 5.13 Penyajian bilangan bulat ke biner melalui led,print(bil,BIN );
Perhatikan bahwa nilai BIN pada argumen kedua akan membuat bilangan bulat disajikan dalam bentuk biner
Contoh untuk menampilkan bilangan bulat ke dalam bentuk heksadesimal:
int bil=145;
lcd.setCursor(0, 0);
lcd.print(“bil = “);
lcd.print(bil);
lcd.setCursor(0, 1);
lcd.print(“Hex: “);
lcd.print(bil, HEX);
Hasilnya seperti berikut:
Gambar 5.14 Penyajian bilangan bulat ke biner melalui lcd.print(bil,HEX);
Contoh untuk menampilkan bilangan bulat ke dalam bentuk oktal:
int bi11=145:
lcd.setCursor(0,0);
lcd.print(“b1l=”);
lcd.print(bil):
lcd.setCursor(0,1);
Icd.print(“Oktal: “);
lcd.print(bil, OCT);
Gambar 5.14 Penyajian bilangan bulat ke biner melalui lcd.print(bil,OCT);
5.4 Efek Scrolling
Ada dua fungsi anggota di objek berkelas LiquidCrystal yang berguna untuk menggulirkan teks di layar pada arah kiri atau kanan. Kedua fungsi tersebut adalah scrollDisplayLeft() dan scrollDisplayRight().
1. scrollDisplayLeft() berguna untuk menggeser seluruh teks di layar ke kiri satu kolom;
2.scrollDisplayRight() berguna untuk menggeser seluruh teks di layar ke kanan satu kolom.
Sebagai contoh, terdapat teks seperti terlihat di Gambar 5.16.Efek pengenaan scrollDisplayLeft() satu kali hingga dua kali diperlihatkan di gambar tersebut. Adapun Gambar 5.17 memperlihatkan efek scrollDisplayLeft().
Gambar 5.16 Efek scrollDisplayLeft()
Gambar 5.17 Efek scrollDisplayRight()
Untuk melihat efek penggulungan teks ke kiri atau kanan, Anda bisa mencoba sketch berikut:
Sketch:scrolling
// ——————————————–
// Contoh untuk memperlihatkan penggeseran teks di layar
“Cobalah semua contoh di bab ini untuk memahaminya. ” +
“Kemudian, Arda bisa mengembangkannya sendiri ” +
“sesuai dengan ide Anda. Sekali lagi, selamat belajar “+
“dan sukses selalu!”;
}
void loop ()
{
char at(17); //string dengan makaimal 16 karakter
st(16)=0; // Akhir atring
//Bentuk string
for (int j =0; = j <16; j++)
if (indeks + j < teks.length())
st[j]=teks [indeks +j];
else
st[j]=32; // Spasi
// Tampilkan di baris kedua
lcd.setCursor(0, 1);
lcd.print(st);
// Peroleh indeks berikutnya
indeks++;
if (indeks ==teks.length()- 1)
indeks=0;
delay(600);
}
Teks pada baris kedua terlihat seperti tergeser. Contoh tampilan di dua saat berbeda ditunjukkan di 5.18.
Gambar 5.18 Teks panjang yang bergeser
Pinsip untuk menampikan di baris kedua dapat Anda ikuti pada paparan berikut. Pertama-tama,varabel
st dideklarasikan seperti berikut:
char st[17];
Dalam hal ini, st ditujukan untuk menyimpan string dengan panjang 16 karakter (karena ditujukan untuk menangani LCD yang mempunyai 16 kolom).Oleh karenaitu,st[16] perlu diisidengan o,yang menyatakan akhir string.Selanjutnya,pengisian string dilaksanakan kode:
for (int j = 0; j < 16; j++)
if (indeks + j < teks.length())
st[j]= teks[indeks + j];
else
st[j]=32;// Spasi
Kode di atas hanya mengambil maksimal 16 karakter yang ada di teks. Jika karakter tersisa di string yang akan diambil kurang dari 16, karakter spasi akan ditambahkan.Isi variabel indeks yang bersifat global, dengan nilai awal berupa 0, akan dinaikkan satu untuk setiap iterasi di loop ().
Penyajian string di st ke LCD dilakukan melalui:
lcd.setCursor(0,1);
lcd.print(st);
Setelah isi st ditampilkan, nilai indeks dinaikkan sebesar 1, dengan tujuan untuk melakukan penggeseran tampilan di LCD.Jika nilai indeks mencapai akhir string, isi indeks akan dinolkan.Hal ini dilakukan melalui kode:
if (indeks ==teks.length()- 1)
indeks=0;
Berikut adalah contoh urutan penampilan string di CD:
Cobalah semua co
obalah semua con
balah semua cont
Penyajian seperti itu akan memberikan efek tulisan yang bergerak.
5.6 Memantau Nilai Sensor Cahaya
Ada kalanya diperlukan untuk menampilkan informasi dari suatu sensor ke LCD sehingga nilai setiap saat dapat dipantau dengan mudah. Untuk mempraktikkan hal ini, sebuah sensor bernama LDR (Light Dependent Resistor)digunakan untuk memantau cahaya. Bentuk LDR diperlihatkan di Gambar 5.19.
Gambar 5.19 LDR
Informasi tentang LDR
Light Dependent Resistor (LDR) adalah salah satu jenis resistor yang nilai hambatannya bersi berubah-ubah.Perubahan hambatan tergantung pada cahaya yang diterima.Ketika mendapatkan cahaya terang, hambatan mengecil. Sebaliknya, hambatan membesar ketika dijumpai keadaan gelB LDR biasa digunakan dengan susunan seperti berikut:
Vout mempunyai hubungan dengan Vcc seperti berikut:
Vout =
Berdasarkan rumus tersebut,Vout membesar kalau R1 mengecil dan sebaliknya akan mengecil kalau Rangkaian yang diperlukan diperlihatkan di Gambar 5.20. Selain satu LDR,satu resistor 220Ω diperlukan.
Contoh penyusunan rangkaian diperlihatkan di Gambar 5.21.
Gambar 5.20 Rangkaian yang melibatkan LDR dan LCD
Gambar 5.20 Rangkaian yang melibatkan LDR dan LCD
Gambar 5.21 Contoh penyusunan rangkaian LCD an LDR
Sketch berikut digunakan untuk menguji rangkalan di atas : Sketch:ldr
Perhatikan bahwa setelah nilai dari sensor dibaca melalui
int nilai =analogRead(PIN_A0);
nilai tersebut dikirim ke LCD melalui
lcd.clear();
lcd.print(“Nilai: “);
lcd.print(nilai);
Tiga keadaan hasilnya diperlihatkan di Gambar 5.22 hingga 5.24. Pada Gambar 5.23, LDR ditutupi denga kertas tipis. Hasil simulasi pada Gambar 5.24 dapat diperoleh dengan menguji rangkaian pada ruang gelap.
Gambar 5.22 Hasil ketika LDR dalam keadaan normal (tidak ditutupi)
Gambar 5.23 Hasil ketika permukaan LDR ditutupi kertas tipis
Gambar 5.24 Hasil ketika LDR diselubungi plaster hitam
5·7 Menampilkan Kursor
LCD dapat digunakan untuk memerintahkan pemakai untuk melakukan sesuatu. Pada kondisi seperti ini, kursor di LCD dapat ditampilkan.Fungsi yang diperlukan adalah cursor () untuk menampilkan kursor dan blink() untuk membuat kursor berkedip. Untuk menghilangkan kedip adalah noBlink() perlu dipanggil. Adapun untuk menyembunyikan kembali kursor, panggillah noCursor().
Contoh penggunaan kedua fungsi tersebut dapat dilihat di sketch kedip. Untuk mempraktikkannya,Anda bisa Menggunakan rangkaian di Gambar 5.4 atau Gambar 5.20. : Sketch:kedip
LCD sebenarnya tidak hanya menyimpan karakter seperti A, z, +, ataupun 9. Namun, juga mendukung beberapa simbol seperti Ω dan π secara internal. Untuk mengeksplorasi karakter-karakter yang tersimpan di5 CD, fungsi anggota bernama write() bisa digunakan.Bentuk penggunaannya:
objekLCD.write(satuByteData);
eberapa contoh nilai argumen untuk write ():
✓65→A
66→B
97→a
B11110111 atau 0xF7 atau .. → π
Beberapa contoh simbol khusus dan kodenya dalam bentuk biner ditunjukkan di Tabel 5.2.
Tabel 5.2 Sejumlah simbol khusus di LCD
Simbol
Kode Biner
Derajat
B11011111
Sigma
B11110110
Omega
B11110100
Panah kiri
B01111111
Panah kanan
B01111110
Contoh penggunaan write() dapat dilihat di sketch simbol. Untuk mempraktikkannya, Anda bisa menggunakan rangkaian di Gambar 5.4 atau Gambar 5.20. Sketch:simbol
digunakan untuk menyatakan kode biner untuk simbol derajat. Nilai yang terdapat di derajat sebenarnya adalah nilai ASCII. Selanjutnya,simbol tersebut ditampilkan melalui:
lcd.write(DERAJAT);
Untuk mengeksplorasi simbol-simbol yang nilai ASCII-nya berada di antara 200 dan 215, perintah berikut bisa digunakan:
for (int nilai = 0; nilai <16;nilai++)
lcd.write(200 + nilai);
Berikut adalah contoh hasil sketch simbol:
Gambar 5.26 Hasil penyajian simbol-simbol khusus
5.9 Penciptaan Sendiri Simbol-simbol Khusus
Setiap karakter di CD tersusun atas piksel-piksel berukuran 8×5, Artinya,setiap karakter dibuat dengan 8baris dan 5kolom.Dengan mengetahui sifat ini, dimungkinkan untuk membuat sendiri simbol-simbol khusa Sebagai contoh,perhatikan Gambar 5.27.Angka yang berada di kanan menyatakan kode biner untuk set pola simbol untuk baris masing-masing. Namun, perlu diketahui bahwa hanya 8 karakter yang bisa dibuat dari kode 0 sampai 7.
Gambar 5.27 Contoh pembentukan huruf A
Contoh lima simbol yang berupa huruf A, B, D, U, dan L dapat dilihat di sketch berikut: Sketch:font
Definisi kelima simbol dapat dilihat di huruf_a, huruf_b, huruf d, huruf u, dan huruf 1.
Penciptaan simbol untuk kode 0 dilakukan melalui:
lcd.createChar(0, huruf_a);
Argumen pertamalah yang menyatakan kode yang dapat berupa 0 hingga 7. Adapun kedua menyatakan array bertipe byte yang berisi data simbol.
Hasil sketch font diperlihatkan di Gambar 5.28.
Gambar 5.28 Contoh hasil pembuatan simbol
5.10 Penggunaan LCD dengan Dua Kabel Data
Gambar 5.29 menunjulkan contoh LCD yang menggunakan teknologi Inter-Integrated Circuit(12C). menggunakan LCD jenis ini,cukup dua pin yang digunakan untuk mengirimkan data, Dua pin lagi yang dihubungkan ke Arduino adalah untuk memasok tegangan. Jadi, hanya empat pin yang perlu dihububungkan ke Arduino, dengan rincian seperti berikut:
GND:dihubungkan ke ground;
VCC:dihubungkan ke sumber tegangan 5V;
SDA:merupakan 12C data dan dihubungkan ke pin analog A4 pada Arduino;
SCL:merupakan 12C clock dan dihubungkan ke pin analog A5 pada Arduino;
Gambar 5.30 memperlihatkan rangkaian yang diperlukan untuk menguji LCD berteknologi 12C.
Gambar 5.29 LCD dengan 2 kabel data(Modul T2C/TAT)CD16021
Gambar 5.30 Rangkaian yang menghubungkan Arduino dan LCD1602
Instalasi Pustaka LiquidCrystal_I2C
uoakmemudahkan dalam menggunakan CD berbass 2,diperlukan untuk menginstal pustaka benama LiquidCrystal_I2C.Pustaka ini dapat diunduh di situs:
ssthub.com/fdebrabander/Arduino-LiquidCrystal-|2C-library/blob/master/. Untuk memudahkan Anda,pustaka tersebut disediakan di CD.Nama filenya adalah:
Arduino-LiquidCrystal-12C-library-master.zip
Instalasipustaka dilakukan dengan cara seperti berikut:
Dekompresilah file Arduino-LiquidCrystal-12C-library-master.zip. Akan terbentuk folder bernama Arduino-LiquidCrystal-12C-library-master.
Sederhanakan nama folder tersebut menjadi LiquidCrystall2C.
Pindahkan subfolder LyquidCrystal_12c ke C:\Program Files (x86)\Arduino\libraries (dengan asumsi, program Arduino IDE terinstal di C:\Program Files(x86)\Arduino).
Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.
Sketch:lcdi2c
// ——————————————–
// Contoh pengendalian LCD berbasis I2C
// ——————————————–
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //Alamat LCD adalah 0x27
// Mengandung 16 kolom dan 2 //baris
void setup() {
lcd.begin();
//Tampilan pesan ke LCD
lcd.print(“Tes..tes..123!”);
lcd.setCursor(0,1);
lcd.print(“OK tampaknya”);
}
void loop ()
{
}
Sketch di atas melibatkan pustaka Arduino bernama Wire,Pustaka ini digunakan untuk menangan komunikasi 12C,yang memungkinkan pertukaran informasi antar-iC.Itulah sebabnya,terdapat perintah:
#include <Wire.h>
Penyertaan pernyataan tersebut diperlukan karena kode di pustaka LiquidCrystal_I2C menggunakan pustaka Wire.
Kode
#include <LiquidCrystal_I2C.h>
dimaksudkan untuk menyertakan header file pustaka LiquidCrystal_I2C. Hal ini diperlukan kalau Anda bermaksud menggunakan kelas yang disediakan di pustaka tersebut untuk menangani LCD.
Pernyataan
LiquidCrystal_I2C lcd(0x27,16,2);
ditujukan untuk membuat objek berkelas LiquidCrystal_I2C, dengan nama objek berupa lcd.Kelas inilah yang digunakan untuk mengontrol LCD. Ketiga argumen yang disertakan adalah:
argumen pertama, yakni 0x27, menyatakan alamat untuk peranti LCD. Setiap peranti berbasis C pasti mempunyai alamat unik;
argumen kedua menyatakan jumlah kolom dalam LCD;
argumen ketiga menyatakan jumlah baris dalam LCD.
Di dalam setup(),LCD perlu diinisialisasi dengan memanggil:
namA0bjekLCD.begin();
Pada contoh,hal itu dilakukan oleh:
lcd.begin():
Pernyataan-pernyataan berikutnya,yaitu
lcd.print(“Tes..tes.,1231”);
lcd.setCursor(0,1):
lcd.print(“OK tampaknya!”);
secara prinsip sama seperti pada pustaka LiquidCrystal. Hasil ditunjukkan di Gambar 5.31.
Gambar 5.31 Hasil di LCD
5.11 Penggunaan LCD Grafis
Gambar 5.32 memperlihatkan contoh LCD grafis dengan kode QC12864B. LCD ini memungkinkan pembuatan gambar seperti garis ataupun lingkaran.Resolusinya 128×64 d0t.
Tabel 5.3 Pin-pin di LCD
No PIN
Nama PIN
Keterangan
1
VSS
Dihubungkan ke +5V
2
VDD
Dihubungkan ke ground
3
VO
Pengatur kontras. Potensiometer 10KΩ bisa digunakan untuk
mengatur tingkat kontras
4
RS atau D/I
Register Select:
RS=HIGH untuk mengirim data
RS=LOW untuk mengirim instruksi
5
R/W
Read/Write control bus
R/W=HIGH untuk membaca data di LCD
6
E
Data Enable
E=HIGH supaya LCD dapat diakses
7
DBO
Data
8
DB1
Data
9
DB2
Data
10
DB3
Data
11
DB4
Data
12
DB5
Data
13
DB6
Data
14
DB7
Data
15
PSB
16
NC
Not connected
17
RST
Connect to reset
18
Vout
Contrast out
19
A
Anode,dihubungkan ke catu daya +5V.Perlu resistor se
Instalasi pustaka dilakukan dengan cara seperti berikut:
Dekompresilah file jasonweiyi-robots-9ea4a75cbf67.zip. Akan terbentuk folder bernama jasonweiyi-robots-9ea4a75cbf67.
Di bawah folder tersebut terdapat subfolder arduino\libraries\LCD12864R. Nah, di dalam subfolder tersebut terdapat subfolder bernama SPI.
Pindahkan subfolder SPI ke C:\Program Files (x86)\Arduino\libraries (dengan asumsi,program Arduino IDE terinstal di C:\Program Files (x86)\Arduino).
Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.
Pelepasan Resistor R9
Ada kemungkinan Anda perlu melepas resistor R9 di modul QC12864B.Hal ini perlu dilakukan agar LCD grafis dapat diprogram secara serial atau paralel.Sebagai contoh,pada papan LCD yang digunakan pada percobaan ini R9,terpasang secara bawaan,yang menghubungkan pin PSB ke sumber tegangan positif. Akibatnya,LCD grafik hanya dapat digunakan untuk pengiriman data secara paralel saja. Namun, ternyata ada pula LCD grafiki QC12864B yang tidak mengandung R9. Gambar 5.33 memperlihatkan keadaan setelah R9 dilepas dengan menggunakan solder.
Gambar 5.33 Resistor R9 perlu dilepas agar pengiriman data ke LCD grafik dapat dilakukan secara serial
Pengiriman data secara serial ke LCD grafik berdampak pada pengurangan jumlah pin di Arduino yang perlu dihubungkan ke LCD. Dengan demikian, penghematan pin ini membuat pin-pin lain di Arduino dapat digunakan untuk keperluan lain.
Pengujian LCD Grafis dengan Menggunakan Pengiriman Data Secara Serial
Rangkaian yang perlu disusun untuk menghubungkan LCD grafik dan Arduino dengan menggunakan mode pengiman data secara serial seperti terlihat di Tabel 5.2.Contoh penyusunannya diperlihatkan di Gambar 34 perlu diketahui, agar peseriman data secara serial ke LCD grafik dapat dilaksanakan, pin PB harus berniai 0.Itulah sebabnya,pin tersebut perlu dihubungkan ke ground.
Tabel 5.4 Hubungan LCD grafik dan Arduino untuk pengiriman data secara serial
LCD
Arduino
Pin 1 (VSS)
GND
Pin 2 (VDD)
+5V
Pin 4 (RS atau D/I)
Pin 8
Pin 5 (R/W)
Pin 9
Pin 6(E)
Pin 3
Pin 15(PSB atau CS1)
GND
Gambar 5.34 Contoh penyusunan rangkaian yang menghubungkan LCD grafik dan Arduino
Sketch berikut dapat dipakai untuk menguji rangkaian di atas :
Sketch:lcdspi
// ——————————————–
// Contoh pengujian LCD grafik QC12864B
// menggunakan pustaka LCD12864RSPI
//
// Resistor R9 di LCD grafik harus dilepas!
// ——————————————–
// Rangkaian yang diperlukan
// LCD <——> Arduino
PIN 1(VSS) GND
PIN 2 (VDD) 5V //
PIN 4 (RS)
Pin 8 PIN 5 (R/W)
Pin 9 1PIN 6 (E)
Pin 3 PIN 15 (PSB) GND
include “LCD12864RSPI.h”
int pencacah=1;
void setup()
{
LCDA.initialise();
delay(100);
}
void loop()
{
LCDA.clear();
delay(10);
LCDA.print(0,0);
“Nilai pencacah ditampilkan untuk yang ke-%-4d kali.”,
pencacah);
delay(1000);
pencacah++;// Naikkan pencacah
}
Penjelasan untuk sketch di atas seperti berikut:
Kode
#include “LCD12864RSPI.h”
digunakan untuk menyertakan header file pustaka LCD1286R4SPI.
Kode berikut mendeklarasikan variabel pencacah dan diinisialisasi dengan 1:
int pencacah=1;
Variabel tersebut dipakai untuk menampilkan angka yang menyatakan cacah teks di LCD telah ditampilkan.
Di dalam setup(), kode berikut digunakan untuk melakukan tindakan inisialisasi terhadap LCD:
LCDA.initialise();
Pemanggilan initialize() harus dilakukan di awal. Dalam hal ini, objek LCDA disediakan oleh pustaka.Jadi,tidak perlu untuk mendeklarasikannya di dalam sketch yang Anda tulis.
Setelah pemanggilan initialize(),diperlukan untuk menunggu LCD menyelesaikan tindakan. Hal ini dilakukan melalui delay(100);.e
Kode
LCDA.clear();
berguna untuk menghapus layar. Waktu sekitar 10 milidetik diperlukan untuk menunggu sampai LCD selesai menghapus layar.
Pernyataan
LCDA.printf(0, 0,
“Nilai pencacah ditampilkan untuk yang ke-8-4d kali.”,
pencacah);
ditujukan untuk menampilkan tulisan di LCD. Argumen pertama pada printf() menentukan letak kolom (kolom dimulai dari 0) dan argumen kedua menyatakan letak baris (dimulai dari 0) tempat untuk menampilkan informasi. Informasi yang ditampilkan di LCD diambil dari string yang merupakan argumen ketiga. Di dalam string tersebut boleh terdapat simbol khusus seperti %d,yang merupakan tanda pemformat untuk bilangan bulat. Bilangan yang berhubungan dengan %d diatur muai argumen keempat.Pada contoh di depan, nilai pencacah akan digunakan untuk disubstitusikan ke %d.
Nilai pencacah dinaikkan sebesar satu melalui:
pencacah++;
Gambar 5.35 memperlihatkan hasil setelah sketch di atas diunggah ke Arduino.
Gambar 5.35 Hasil pengujian sketch lcdspi
5.12 LCD Grafik dan Pustaka U8glib
Selain menggunakan pustaka LCD12864RSPI, Anda bisa memakai pustaka bernama U8glib untuk mengontrol LCD grafik. Hal yang menarik, pustaka ini dapat digunakan pada pelbagai tipe LCD grafik. Selain itu, pengiriman data dapat dilakukan dengan menggunakan mode serial maupun paralel.
Pemasangan Pustaka U8glib
Pustaka U8glib dapat diunduh di https://code.google.com/p/u8glib.Namun,untuk kemudahan Anda,file u8glib_arduino_v1.16.zip disediakan di CD yang disertakan bersama buku ini.
Instalasi pustaka dilakukan dengan cara seperti berikut:
1.Dekompresilah file u8glib_arduino_v1.16.zip. Akan terbentuk folder bernama u8glib_arduino_v1.16.
2.Sederhanakan nama folder tersebut menjadi u8glib.
3.Pindahkan subfolder u8glib ke c:\Program Files (x86)\Arduino\libraries (dengan asumsi,program Arduino IDE terinstal di c:\Program Files (x86)\Arduino).
4.Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
5.Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.
Pengujian pada Modul QC12864B Secara Serial
Untuk kepentingan pengujian terhadap LCD,susunlah rangkaian seperti terlihat di Gambar 5.36.Dalam hal ini,hubungan antara LCD dan Arduino seperti berikut:
pin E LCD dihubungkan ke pin 13 Arduino;
pin R/W LCD dihubungkan ke pin 11 Arduino;
pin RS LCD dihubungkan ke pin 10 Arduino;
pin VDD LCD dihubungkan ke pin 5V Arduino;
pin VSS LCD dihubungkan ke pin GND Arduino.
Setelah itu,Anda bisa menggunakan sketch lcdg untuk mengujinya.
Gambar 5.36 Contoh penyusunan rangkaian untuk menguji LCD grafik dan Arduino secara serial :
Sketch:lcdg
// ——————————————–
// Contoh pertama untuk menampilkan tulisan
// menggunakan pustaka U8glib
#include “U8glib.h”
U8GLIB_ST7920_128X64_4X u8g(10);
void setup()
{
pinMode(13, OUTPUT) ;
digitalWrite(13, HIGH);
}
void loop()
{
u8g.firstPage();
d0
{
buatGambar();
} while (u8g.nextPage());
delay(1000);
}
void buatGambar()
{
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,10,”Tes..tes..123!”);
u8g.drawStr(0, 22, “Berhasil, ya?”);
u8g.drawStr(0, 50, “Syukurlah!”);
}
Gambar 5.37 Hasil sketch lcdg untuk menguji pustaka u8glib
enggunaan pustaka u8glib dimulai dengan penyertaan pernyataan berikut:
#include “U8glib.h”
Selanjutnya, objek berkelas U8GLIB_ST7920_128X64_4X perlu dibentuk terlebih dahulu. Pernyataannya berupa:
U8GLIB_ST7920_128X64_4X u8g(10);
Di dalam setup(),hal berikut perlu dilakukan:
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
Tujuannya adalah untuk membuat HIGH pada pin Enable milik LCD.
Bentuk khas kode di loop() yang perlu ditulis seperti berikut:
u8g.firstpage();
d0
{
buatGambar();
}while (u8g.nextPage());
Dalam hal ini,kegunaan masing-masing seperti berikut:
Pernyataan u8g.firstPage(); digunakan untuk menandai awal pembuatan gambar.
Pemanggilan u8g.nextPage(); digunakan untuk menandai akhir kalang pembuatan gambar.Nilai balik berupa O sekiranya kalang pembuatan gambar telah berakhir atau 1 jika penggambaran ulang perlu dilakukan.
Penyataan d0..while memungkinkan penggambaran ulang terhadap instruksi-instruksi di dala fungsi buatGambar().
Pembuatan gambar dipusatkan di satu fungsi saja. Pada contoh, fungsi yang dimaksud adala buatGambar().
Kode yang sesungguhnya untuk melakukan pembuatan gambar dilakukan di buatGambar().Pada sket di depan,kodenya adalah:
void buatGambar()
{
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0, 10, “Tes..tes..123!”);
u8g.drawStr(0, 22, “Berhasil, ya?”);
u8g.drawStr(0, 50, “Syukurlah!”);
}
Pernyataan
u8g.setFont(u8g_font_unifont);
dipakai untuk mengatur font. Adapun fungsi anggota drawstr() digunakan untuk menampilkan sti Dalam hal ini,
argumen pertama menyatakan letak kolom;
argumen kedua menyatakan letak baris;
argumen ketiga menyatakan string yang akan ditampilkan.Jenis dan Ukuran Font
Ukuran dan jenis font ditentukan oleh fungsi anggota bernama setFont ().Bentuk pemakaiannya:
objekU8glib.setFont (nama_font);
Contoh nama font ditunjukkan di Tabel 5.5. Adapun detail nama font dapat diperoleh di:
Contoh berikut menunjukkan pengaturan font untuk tiga jenis font:
Sketch:lcdfont
// ——————————————–
// Contoh pengaturan font
#include “U8glib.h”
U8GLIB_ST7920_128X64_4X u8g(10);
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
}
void loop()
{
u8g.firstPage();
d0 { buatGambar();
} while (u8g.nextPage());
}
delay(1000);
}
void buatGambar()
{
u8g.setFont(u8g_font_unifont);
u8g.drawStr(0,10, “Tes..tes..123!”);
u8g.setFont(u8g_font_u8glib_4);
u8g.drawStr(0, 22, “Berhasil, ya?”);
u8g.setFont(u8g_font_gdb17r);
u8g.drawstr(0, 50, “Syukurlah!”);}
}
Nama Fungsi Anggota
Keterangan
drawRBox(x,y,w,h,r)
Untuk membuat kotak yang diarsir dengan
pojoknya melengkung.Pojok kiri atasnya adalah (x,
y) dengan lebar w dan tinggi h serta jari-jari
lengkungan tepi adalah r
drawCircle(x,y,r)
Untuk membuat lingkaran dengan pusat lingkaran
adalah (x,y) dan jari-jari sebesar r
drawDisc(x,y,r)
Untuk membuat lingkaran dengan pusat lingkaran
adalah (x,y) dan jari-jari sebesar r dan bagian
tengah akan diwarnai
drawEllipse(x,y,rx,ry)
Untuk membuat elips dengan pusat lingkaran
adalah (x,y) dan jari-jari mendatar adalah sebesar
rx dan jari-jari tegak adalah ry
drawFilledEllipse(x, y,rx,ry)
Serupa dengan DrawEllipse() dengan bagian
dalam akan diwarnai
drawTriangle(xo,yo,x1,y1,x2,y2)
Untuk membuat segitiga dengan titik pojoknya
berupa(xo,yo),(x1,y1),(x2,y2).
Sketch:lcdbentuk
// ——————————————–
// Contoh berbagai fungsi membentuk gambar
#include “U8glib.h”
U8GLIB_ST7920_128X64_4X u8g(10);
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
}
void loop()
{
u8g.firstPage();
d0 { buatGambar();
} while (u8g.nextPage());
}
delay(1000);
}
void buatGambar()
{
// Buat garis
u8g.drawHLine(0,0, 30);
u8g.drawVLine (0, 0, 30);
u8g.drawLine(0,0, 30,30):
// Buat Segitiga
u8g.drawTriangle(0,35,30,50,25,63);
// Buat lingkaran dan elips
u8g.drawE11ipse(84,32,30,10):
u8g.drawCircle(84,32,18):
u8g.drawDisc(84,32,10);
// Buat kotak
u8g.drawBox(40,55,80,8);
delay(1000):
}
Hasilnya seperti berikut:
Gambar 5.40 Hasil sketch Icdbentuk
Penyajian Bitmap
Anda bisa menampilkan bitmap di LCD dengan memanfaatkan drawBitmap ().Bentuk penggunaannya seperti berikut:
objectu8glib.drawBitmap(x, y, n,h,bitmap)
Dalam hal ini, bitmap akan ditempatkan dengan ujung kiri atas di (x,y). Adapun n menyatakan jumlah byte di bitmap pada arah horizontal dan h menyatakan tinggi bitmap.