All About i2C/IIC 1602-2004 LCD Module for Arduino
Tenru saja kita sudah tidak asing lagi dengan LCD 1602 dan 2004 pada Module Hardware Arduino/Avr atau microcontroller lain.LCD Module ini adalah display hardware yang paling umum dan sering dipakai dalam project Arduino dan jenis microcontroller lainya karena simple dalam codingnya serta harganya yang murah.1602/2004 LCD Module mempunyai 16pin interface
VSS VDD V0 RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK
Berikut adalah Standar Wiring 1602/2004 LCD Module tanpa i2C Backpack
menggunakan 6pin i/0 dan Vcc Gnd (total 8pin)
Tentu saja sangat menghabiskan Digital Pin pada Arduino kita,untuk mengatasi masalah ini maka kita memputuhkan i2c LCD yg bekerja layaknya Shift Register sehingga pin interfacenya bisa lebih sedikit.
I2c LCD Backpack Module mempunyai 16pin Output yang bisa dihubungkan dengan pin LCD 1602/2004 secara langsung (disolder permanen) dan memiliki 4pin input (VCC, GND, SDA, SCL)
Berikut Wiring LCD 1602/2004 yang sudah menggunakan i2c Module ke Arduino :
(abaikan gambar potensiometernya)
LCD with i2C ---> Arduino Uno
GND <--> GND
VCC <--> 5V
SDA <--> SDA (A4) //Data
SCL <--> SCL (A5) //Clock
Untuk type Arduino Mega2560, Due ,Leonardo/pro micro posisi pin SDA & SCL berbeda dengan Arduino Uno,
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL)
Library i2C LCD Module untuk Arduino
Ada beberapa versi library yang dapat kita pakai untuk i2C LCD Module Arduino,dari beberapa versi itu saya memilih 1 versi yang menurut saya paling Kompatible dengan banyak Project dan module lain.download library i2C LCD Module disini
Warning : Apabila dalam folder library Arduino di PC/Laptop (C:/Program Files/Arduino/Libraries/) (C:/Program Files X86/Arduino/Libraries/) anda sudah ada versi lain dari library i2C LCD maka harus dipindahkan keluar dari folder library atau dihapus terlebih dulu,setelah itu masukan folder library i2C yang sudah di download dari link di atas ke dalam folder Libraries Arduino.
Syntax Program i2C LCD Module
Berikut adalah Bare Minimum untuk Setting i2C LCD Module pada Sketch Arduino1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <Wire.h> #include <LiquidCrystal_I2C.h> // Set the LCD address to 0x27 for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { // initialize the LCD lcd.begin(); // Turn on the blacklight and print a message. lcd.backlight(); } void loop() { // Do nothing here... } |
Berikut adalah fungsi umum yang biasa kita pakai untuk display 1602 atau 2004 pada Coding Arduino
1.lcd.begin();
fungsi : Memulai LCD / inisialisasi LCD Module untuk segera digunakan
posisi penempatan void ini di awal Void Setup
2.lcd.backlight(); & lcd.noBacklight();
fungsi : Menyalakan atau mematikan Lampu Backlight pada LCD Module
3.lcd. setCursor(uint8_t col, uint8_t row);
fungsi : Menempatkan posisi Cursor awal display
default value : (0,0); artinya jika kita tidak menggunakan fungsi setCursor maka data
akan ditampilkan pada posisi (0,0) kolom 0/pertama baris 0/pertama
4.lcd.print(data); & lcd.write(data);
fungsi : Menampilkan Value/data ke dalam lcd module
5.lcd.clear();
fungsi : Menghapus semua value/data/text yang sedang ditampilkan di layar lcd
6. lcd.display(); & lcd. noDisplay();
fungsi : Menampilkan atau tidak-menampilkan data pada display
(tanpa menghapusnya). Apabila kita menggunakan fungsi noDisplay(); maka data/text
yang ada di layar akan menghilang tetapi tidak terhapus dan dapat ditampilkan lagi
dengan fungsi display();
default value : lcd.display();
7.lcd.cursor(); & lcd. noCursor();
fungsi : Menampilkan atau menyembunyikan "Underline" Cursor pada layar LCD
default value : lcd.noCursor();
default value : lcd.noCursor();
8.lcd.blink(); & lcd.noBlink();
fungsi : Menampilkan atau menyembunyikan "Blinking Box" Cursor pada layar LCD
default value : lcd.noBlink();
default value : lcd.noBlink();
9.lcd.scrollDisplayLeft(); & lcd.scrollDisplayRight();
fungsi : Menampilkan display secara scroll/running/bergeser posisinya tanpa
mengubah RAM.
Penggunaan Void ScrollDisplayRight/Left harus diawali dengan void lcd.setCursor
Berikut Contoh penggunaan void codingnya :
mengubah RAM.
Penggunaan Void ScrollDisplayRight/Left harus diawali dengan void lcd.setCursor
Berikut Contoh penggunaan void codingnya :
1 2 3 4 5 | lcd.setCursor(0,0); lcd.print("Hello, world!"); for (int i=0; i<16; i++){ lcd.scrollDisplayRight(); // scroll kanan delay(200);} // delay tiap scroll |
10.lcd.leftToRight(void) & lcd.rightToLeft(void)
fungsi : Menentukan Orientasi arah Text pada Display
default value : lcd.leftToRight();
Untuk mengetahui lebih lanjut fungsi fungsi void di atas silahkan Upload
Sketch berikut ke dalam Arduino yang sudah terpasang LCD Module i2C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <Wire.h> // i2C Conection Library #include <LiquidCrystal_I2C.h> //i2C LCD Library // Set the LCD address to 0x27 for a 16 chars and 2 line display LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { // initialize the LCD lcd.begin(); lcd.print("Hello, world!"); delay (1000); lcd.setCursor(0,1); lcd.print("Test Backlight "); delay (1000); for (int i=0; i<5; i++){ lcd.noBacklight(); delay(200); lcd.backlight(); delay(200);} lcd.setCursor(0,1); lcd.print("Test noDisplay"); delay (1000); for (int i=0; i<5; i++){ lcd.noDisplay(); delay(200); lcd.display(); delay(200);} lcd.setCursor(0,1); lcd.print("Test UL Cursor "); delay (1000); for (int i=0; i<5; i++){ lcd.cursor(); delay(500); lcd.noCursor(); delay(500);} lcd.setCursor(0,1); lcd.print("Test BL Cursor "); delay (1000); for (int i=0; i<5; i++){ lcd.blink(); delay(500); lcd.noBlink(); delay(500);} lcd.setCursor(0,1); lcd.print("Test Text Scroll"); delay (1000); lcd.setCursor(0,0); lcd.print("Hello, world!"); for (int i=0; i<16; i++){ lcd.scrollDisplayRight(); delay(200);} for (int i=0; i<16; i++){ lcd.scrollDisplayLeft(); delay(200);} lcd.setCursor(0,1); lcd.print("<- Right to Left"); delay (1000); lcd.clear(); lcd.rightToLeft(); lcd.setCursor(15,0); lcd.print("Hello, world!"); delay(3000); lcd.clear(); lcd.setCursor(0,1); lcd.print("Left to Right ->"); delay (1000); lcd.leftToRight(); lcd.setCursor(0,0); lcd.print("Hello, world!"); } void loop() { // Do nothing here... } |
Apabila sudah mengikuti Tutorial ini namun i2C LCD anda belum bisa menampilkan text atau hanya tampil kotak kotak saja bisa jadi i2c address (nomor alamat i2c device) berbeda / tidak standar.
Silahkan scan terlebih dulu address lcd anda menggunakan i2C Scanner.
Hubungkan i2C anda dengan Arduino
Upload Sketch dibawah ini kemudian buka serial monitor pada Arduino IDE
i2C address LCD anda akan ditampilkan disini
Anda hanya perlu mencatatnya atau mengingatnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); // wait 5 seconds for next scan } |
bang, kalau isinya "No I2C devices found" harus gimana cara benerinnya?
BalasHapuscoba kamu hapus bagi else if (error=4) hingga ke penutupnya, jika hasilnya masih sama maka anda lebih perhatikan kodenya
Hapuskang riquest tutor wsn gan pakai sensor nrf
BalasHapusthankyou banget kang, haduh asalnya saya kira i2c nya rusak wkwk scan pake kode di web lain gak keluar tp scan pake tutor kode dari akang keluar juga adress nya akhirnya nyala juga hehe
BalasHapusThanks Gann sangat membantu, udah ane coba dan berhasil!
BalasHapusPunyaku koq cuma nyala terang thok. address found at 0x3f. kode udah disesuaikan. Apanya yang salah yach? please help.
BalasHapusudah di setel kontras nya belom?
HapusAlhamdulillah akhirnya bisa.. tadinya bingung yg kluar lampunya aja tulisannya kaga ada, ternyata kontrasnya kudu disetel :D
Hapusmakasih gan :)
gan pin SDA sama SCL ini bisa diubah ke pin digital gak ya.. soalnya ane butuh 2 pin analog buat sensor, hehe..
BalasHapusgan, lcd nya cuma nyala lampu aja, itu masalah dimna ya..??
BalasHapusSama nih gan, cuma nyalaLampu aja. ga keluar textnya. address juga udah bener, dapet dari scannernya.
BalasHapusmaaf gan punyak saya cuma keluar kotak2 aja
BalasHapusklo adreas sdh ketemu trus gmn cara penempatanya gan ?
BalasHapushallo admin.. salam sukses sll. Mohon Berbagi Ilmunya min Buat yg bisa buat koding di modul Arduino WeMos D1 R2,
BalasHapusRencana sy mau melakukan eksperimen merakit Modul untuk di aplikasikan di kendaraan fungsi nya untuk mengontrol kendaraan dengan jarak jauh bisa menghidupkan atau mematikan mesin kendaraan baik menggunakan remot control atau pun dengan Smartphone. kira2 bahan2nya apa saja yg sy perlukan ya ..?? Mohon Maaf Masih Belajar Dan blm Mengerti Apa2. jika ada yang bersedia membantu saya persilahkan kirim mail ke hafidhaeruman@gmail.com atau bisa juga langsung ke Wa 081919115088 . thanks
Gan klo lcd hanya menampilkan kotak kotak hitam ,,
BalasHapusItu solusinya gmn ya
Komentar ini telah dihapus oleh pengarang.
BalasHapusterimakasih banyak, berkat blog dan catatan di atas, masalah LCD yg awalnya cuma putih doank, skrg udah terselesaikan, semoga bermanfaat, dan menjadi amal baik cikgu, amin,,,,
BalasHapusThanks ilmunya gan
BalasHapusbang lcd ne cuma keluar kotak kotak aja padahal addres uda bener ini kira kira harus ngapain yaa , help me plisss
BalasHapusMaaf Bang, saya punya Lcd 1602 i2c tidak mau jalan dia cuma munjul 16 kotak di layar baris 1 dan di arduino.ide saya verify ada note : no matching function for call to 'LiquidCrystal_I2C::begin()', bagaimana solusinya ya, Terimakasih Banyak
BalasHapusapa sekarang sudah ketemu solusinya pk? soalnya saya punya masalah yg sama. terima kasih.
Hapusmenarik, trims gan, majukan terus kreatifitas bangsa ini!!!
BalasHapusgan, klo untuk wemos ada perbedaan kah untuk program/pemasangan pin nya?
BalasHapus