Guide lengkap Coding LCD untuk Arduino dan juga NodeMCU.
LCD Screen merupakan module termudah untuk membuat Paparan Huruf-berAbjad seperti memaparkan bacaan sensor, memberi notifikasi pada pengguna, dan juga pelbagai paparan kreatif yang mampu difikirkan.
Jika anda baru bermula dengan Arduino dan mahu membeli Screen LCD,
kami ada 2 saranan untuk anda :
- Jangan beli LCD Screen yang TIDAK mempunyai module I2C
- Teruskan membaca artikel ini sehingga habis, sebelum meneruskan pembelian.
Terdapat 2 jenis LCD Screen yang memerlukan penggunaan pin-pin berlainan pada Arduino:
- LCD Module TANPA I2C
- LCD Module bersama I2C.
Dalam blog entry ini, kami akan focus pada module LCD yang menggunakan I2C, kerana ia dapat menjimatkan banyak pin Digital untuk kegunaan lain dan juga memudahkan wiring projek.
JENIS-JENIS LCD SCREEN
PILIHAN WARNA:
Terdapat 2 pilihan warna untuk LCD screen yang biasa terdapat di pasaran:
- Warna Hijau dengan tulisan berwarna Hitam
- Warna Biru dengan tulisan berwarna Putih
(Klik di sini untuk mendapatkan module LCD 16X2 dari website kami)

PILIHAN JENIS KOMUNIKASI/PIN DENGAN ARDUINO:
Terdapat juga 2 pilihan kaedah komunikasi LCD dengan Arduino.
1) LCD Screen Yang menggunakan Pin Output Digital Arduino untuk berfungsi
(Lihat kaedah wiring berikut untuk pin digital)

LCD ini memerlukan 6 pin Digital Pin Output dari Arduino untuk komunikasi data selain dari pin 5V dan Gnd.
Dalam masa yang sama, terdapat beberapa komponen lain seperti potentiometer dan resistor yang perlu disambungkan.
Bagi kami, kaedah seperti ini akan membazirkan banyak masa dan membazirkan pin digital Arduino, yang mana boleh digunakan untuk sensor-sensor dan butang-butang lain.
2) LCD Screen yang menggunakan Komunikasi I2C
(Lihat kaedah wiring berikut untuk I2C)

Module berwarna hitam ini adalah Module I2C yang boleh digunakan untuk berbagai jenis Size Screen LCD (16X2, 16X4, 20X4…). Ia bersifat hampir universal.
Dengan module ini, anda hanya perlu sambungkan pin SDA dan pin SCL Module I2C ini pada pin A4 dan pin A5 Arduino UNO/NANO yang merupakan Port I2C.
(Arduino MEGA mempunyai port I2C di pin yang berlainan)
Dalam masa yang sama, kebanyakan projek Arduino, jarang menggunakan pin Analog yang banyak sehingga perlu menggunakan pin A4 dan A5.
Dengan ini, sebanyak 6 pin Digital Arduino dapat di selamatkan untuk kegunaan lain projek.
INSTALL LIBRARY LCD (I2C)
NOTA UPDATE:
Library Library LiquidCrystal I2C by Frank de Brabander dalam Library Manager Arduino IDE sudah obsolete.
Ikuti langkah-langkah berikut untuk meng-Install Library ini:
LANGKAH #1:
Download Library I2C dari Frank de Brabander yang latest dari link kami di bawah:
Library LiquidCrystal I2C Updated dari Frank de Brabander
atau dari GitHub:
LANGKAH #2:
Dari Arduino IDE, Navigasi ke
Sketch > Include Library > Add .Zip libraries…
LANGKAH #3:
Pilih Folder atau .Zip file yang telah anda download, dan kemudian tekan “Open”.
Setelah selesai, Library sudah ready untuk digunakan.
SAMBUNGAN WIRING LCD I2C PADA ARDUINO

Perhatikan module I2C ini, terdapat potentiometer berwarna biru, dan putarkan potentiometer ini untuk mengubah kadar kontras screen LCD sehingga anda nampak paparan, selepas mengupload coding.
MENGGUNAKAN LIBRARY LCD (I2C)
Bagi memulakan pemahaman mengenai coding Library LCD ini, gunakan rajah pembahagian coding dalam Arduino IDE seperti berikut sebagai panduan:

DEFINING AREA
Dalam Defining Area, ada 3 komponen yang perlu dimasukkan:
1) Library Wire.h
Library sedia ada dalam Arduino IDE
2) Library LiquidCrystal_I2C.h
Library yang baru di download
3) Declare nama “Objek” untuk digunakan oleh LiquidCrystal_I2C Library.
Dalam contoh coding di bawah, nama objek “lcd” digunakan.
Oleh itu, kesemua coding yang berkenaan dengan LCD akan mempunyai kata kunci “lcd”
#include <Wire.h> // includekan library I2C. (Library ini sedia ada dalam IDE) #include <LiquidCrystal_I2C.h> // includekan library LiquidCrystal_I2C LiquidCrystal_I2C lcd(0x3F,16,2); // berikannama objek "lcd" untuk dikaitkan dengan library // set-kan address I2c dan nyatakan jenis/size LCD 16X2 seperti sebelah
Dalam bahagian ini juga, terdapat lagi 3 perkara yang perlu di declare mengikut turutan dari kiri ke kanan:
1) I2C Address bagi Module LCD anda
Mengikut coding di atas, address I2C Module LCD kami adalah “0x3F” .
Anda boleh mendapatkan I2C Address Module LCD anda dengan menggunakan I2C Address Scanner.
Ikuti URL berikut untuk menggunakan I2C Address Scanner .
(I2C Address Scanner – MatGyver Guide)
2) Size LCD
Selepas Address, terdapat nombor “16” dan “2” . Ini adalah size Screen LCD.
Jika menggunakan size LCD yang berlainan, contohnya size 20X4 atau 16X4,
boleh menulis, seperti berikut:
#include <Wire.h> // includekan library I2C. (Library ini sedia ada dalam IDE) #include <LiquidCrystal_I2C.h> // includekan library LiquidCrystal_I2C LiquidCrystal_I2C lcd(0x3F,20,4); // berikannama objek "lcd" untuk dikaitkan dengan library // set-kan address I2c dan nyatakan jenis/size LCD 20X4 seperti sebelah
VOID SETUP AREA
Dalam Void Setup Area, terdapat 2 line coding yang wajib ditulis untuk memulakan module LCD I2C. Rujuk berikut:
Untuk Arduino UNO/NANO/MEGA
void setup() { // put your main code here, to run repeatedly: Wire.begin(); // mulakan I2C lcd.begin(); // mulakan LCD lcd.backlight(); // pasangkan BackLight Hijau/Biru bergantung pada jenis LCD anda }
Untuk NodeMCU
Jika anda menggunakan Board NodeMCU, tambahkan line Wire.Begin(D2, D1) seperti di bawah:
void setup() { // put your main code here, to run repeatedly: Wire.begin(D2,D1); //D2 = SDA ; D1 = SCL lcd.begin(); // mulakan LCD lcd.backlight(); // pasangkan BackLight Hijau/Biru bergantung pada jenis LCD anda }
VOID LOOP AREA
Di sini, kami akan menerangkan bagaimana menggunakan coding-coding dalam Library LCD, untuk mengawal paparan LCD.
Ikuti panduan coding-coding seperti berikut:
.Clear()
Coding .Clear() ini berfungsi memadamkan ke-SEMUA paparan dalam LCD Screen.
ARAHAN PRINT PADA LCD
Bagi memberi arahan untuk print pada lcd, terdapat 2 coding yang perlu di tulis sebelah menyebelah iaitu:
1) .setCursor
2) .print
.setCursor(R,C)
Coding .setCursor(R,C) ini berfungsi meletakkan cursor untuk permulaan print sesuatu perkataan.
C : bermaksud nombor Column
R : bermaksud nombor Row
Koordinat dan jumlah Row/Column berbeza mengikut jenis LCD yang anda ada.
Ikuti rajah dibawah untuk lebih memahami, Column dan Row:


.print(“cubaan”)
Coding .print(“cubaan”) ini berfungsi untuk print apa sahaja yang perlu di print, sama seperti Serial Monitor. Contoh seperti berikut:
.print(digitalRead(5))
LCD akan print data input pada pin digital 5
.print(analogRead(A1))
LCD akan print data analog input pada pin analog A1
.print(“cubaan”)
LCD akan print perkataan “cubaan” .
CODING PENUH UNTUK PRINT SUATU PERKATAAN
Dalam contoh di bawah,
perkataan “CUBAAN” akan di print bermula pada koordinat (10 ,0)
dan perkataan “MATGYVER” akan di print bermula pada koordinat (4 ,1)
void loop(){//permulaan Void Loop lcd.setCursor(10,0); // setkan Cursor print LCD pada koordinat 10,0 lcd.print("CUBAAN"); // printkan message untuk di paparkan lcd.setCursor(4,1); // setkan Cursor print LCD pada koordinat 4,1 lcd.print("MATGYVER"); // printkan message untuk di paparkan }//PENUTUP VOID LOOP

PERHATIAN:
Perhatikan perkataan “CUBAAN” . Huruf “N” telah sampai di hujung LCD. Jika ia ditukar kepada “CUBAANNYA”, bermakna 3 huruf “NYA” tidak muat, dan coding akan meletakkan 3 huruf “NYA” di perenggan baru pada Row#1 bermula dengan Column 1.
KAEDAH MEMADAMKAN PAPARAN LCD
Terdapat 2 kaedah untuk memadamkan paparan LCD:
KAEDAH #1 : Menggunakan .Clear()
Dengan .Clear() , kesemua paparan pada screen LCD akan di padamkan.
Apa yang tidak bagus adalah, dalam sesuatu projek, kita jarang perlu update ke-semua paparan pada screen lcd. Kebiasaannya, kita hanya akan update data sensor sahaja.
PERHATIAN:
Setiap satu huruf yang di print kan oleh LCD, mengambil masa 1 ms untuk di print.
Jika setiap kali LCD refresh, semua paparan screen perlu di prnt, bermakna paparan LCD sahaja boleh mengambil masa 16 huruf X 2 bersamaan 32 huruf, yang juga bersamaan dengan 32ms.
Bagi projek memerlukan kitaran Void Loop yang laju, memang tidak sesuai menggunakan .Clear() bagi memadamkan paparan screen.
KAEDAH #2 : Menggunakan .print(” “)
Kaedah ini, membuatkan LCD print Space-Kosong pada koordinat yang ditetapkan.
Ini juga bermaksud, ia memadamkan paparan hanya pada bilangan Space yang di tulis.
Anda boleh lihat, bagaimana kaedah ini digunakan dalam contoh terakhir di bawah untuk Paparan Bacaan Analog Input (A1).
CONTOH CODING LENGKAP UNTUK SATU PROJEK
Anda boleh cuba copy dan paste code di bawah untuk lihat hasil keluaran LCD.
Pastikan anda kenal pasti setiap komponen coding yang menjadikan output LCD itu. Pastikan anda gantikan I2C Address dengan Addres LCD anda.
//Project : LCD Display 1602 //Perinci : Bagaimana menggunakan LCD Display I2C dengan Arduino //Code disediakan oleh MatGyver.my #include <Wire.h> // includekan library I2C. (Library ini sedia ada dalam IDE) #include <LiquidCrystal_I2C.h> // includekan library LiquidCrystal_I2Cvoid setup() { LiquidCrystal_I2C lcd(0x3F,16,2); // berikannama objek "lcd" untuk dikaitkan dengan library // set-kan address I2c dan nyatakan jenis/size LCD 16X2 seperti sebelah void setup(){//permulaan Void Setup lcd.begin(); // mulakan LCD lcd.backlight(); // pasangkan BackLight Hijau/Biru bergantung pada jenis LCD anda // Berikan Message Paparan ketika Arduino Start-Up (Optional) lcd.setCursor(0,0); // setkan Cursor print LCD pada koordinat 0,0 lcd.print("Selamat Pagi!"); // printkan message untuk di paparkan lcd.setCursor(4,1); // setkan Cursor print LCD pada koordinat 4,1 lcd.print("MatGyver"); // printkan message untuk di paparkan delay(2000); // berikan sedikit delay untuk paparan permulaan (optional) lcd.clear(); // clearkan/padamkan paparan Screen LCD }//PENUTUP VOID SETUP void loop(){//permulaan Void Loop lcd.clear(); // clearkan/padamkan paparan Screen LCD delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(0,0); // setkan Cursor print LCD pada koordinat 0,0 lcd.print("Nak"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(4,0); // setkan Cursor print LCD pada koordinat 4,0 lcd.print("DIY"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(8,0); // setkan Cursor print LCD pada koordinat 8,0 lcd.print("Apa"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(0,1); // setkan Cursor print LCD pada koordinat 0,1 lcd.print("Hari"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(5,1); // setkan Cursor print LCD pada koordinat 5,1 lcd.print("Ini"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan lcd.setCursor(9,1); // setkan Cursor print LCD pada koordinat 9,1 lcd.print("Ya"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan for(int x = 12; x < 16; x++){ // gunakan for loop untuk untuk print berulanga pada koordinat tambahan lcd.setCursor(x,1); // setkan Cursor print LCD pada koordinat x,1 lcd.print("?"); // printkan message untuk di paparkan delay(500); // berikan sedikit delay untuk paparan }//penutup for loop delay(500); // berikan sedikit delay untuk paparan }//PENUTUP VOID LOOP
CONTOH CODING LENGKAP UNTUK MENUNJUKKAN BACAAN POTENTIOMETER PADA PIN ANALOG (A1)
//Project : LCD Display 1602 //Perinci : AnalogREad A1 LCD Display I2C dengan Arduino //Code disediakan oleh MatGyver.my #include <Wire.h> // includekan library I2C. (Library ini sedia ada dalam IDE) #include <LiquidCrystal_I2C.h> // includekan library LiquidCrystal_I2Cvoid setup() { LiquidCrystal_I2C lcd(0x3F,16,2); // berikannama objek "lcd" untuk dikaitkan dengan library // set-kan address I2c dan nyatakan jenis/size LCD 16X2 seperti sebelah void setup(){//permulaan Void Setup Serial.begin(9600); // optional lcd.begin(); // mulakan LCD lcd.backlight(); // pasangkan BackLight Hijau/Biru bergantung pada jenis LCD anda // Berikan Message Paparan ketika Arduino Start-Up lcd.setCursor(0,0); // setkan Cursor print LCD pada koordinat 0,0 lcd.print("BACAAN POT :"); // printkan message untuk di paparkan }//PENUTUP VOID SETUP void loop(){//permulaan Void Loop lcd.setCursor(12,0); // setkan Cursor print LCD pada koordinat 12,0 lcd.print(" "); // padamkan 4 ROW dari koordinat 12,0 hingga 15,0 lcd.setCursor(12,0); // setkan Cursor print LCD pada koordinat 12,0 lcd.print(analogRead(A1)); // printkan data pada pin analog A1 delay(100); // berikan sedikit delay sebelum paparan baru refresh Serial.println(analogRead(A1)); // optional }//PENUTUP VOID LOOP
Hasil paparan LCD akan menunjukkan seperti berikut:

Jika anda menyukai artikel-artikel keluaran MatGyver.my, kami mohon jasa baik tuan/cikpuan untuk menyumbangkan like pada page FaceBook kami.

no matching function for call to ‘LiquidCrystal_I2C::begin()’
LikeLike
perlu Download dulu library.
Jangan url download yang terteta tuan.
LikeLike