Minggu, 12 Juni 2016

Panduan Lengkap Penggunaan 1602 / 2004 IIC i2C LCD untuk Arduino


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 Arduino


 1
 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();

8.lcd.blink();  &  lcd.noBlink();
   fungsi : Menampilkan atau menyembunyikan "Blinking Box" Cursor pada layar LCD  
   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 :


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
    }



23 komentar:

  1. bang, kalau isinya "No I2C devices found" harus gimana cara benerinnya?

    BalasHapus
    Balasan
    1. coba kamu hapus bagi else if (error=4) hingga ke penutupnya, jika hasilnya masih sama maka anda lebih perhatikan kodenya

      Hapus
  2. kang riquest tutor wsn gan pakai sensor nrf

    BalasHapus
  3. thankyou 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

    BalasHapus
  4. Thanks Gann sangat membantu, udah ane coba dan berhasil!

    BalasHapus
  5. Punyaku koq cuma nyala terang thok. address found at 0x3f. kode udah disesuaikan. Apanya yang salah yach? please help.

    BalasHapus
    Balasan
    1. udah di setel kontras nya belom?

      Hapus
    2. Alhamdulillah akhirnya bisa.. tadinya bingung yg kluar lampunya aja tulisannya kaga ada, ternyata kontrasnya kudu disetel :D
      makasih gan :)

      Hapus
  6. gan pin SDA sama SCL ini bisa diubah ke pin digital gak ya.. soalnya ane butuh 2 pin analog buat sensor, hehe..

    BalasHapus
  7. gan, lcd nya cuma nyala lampu aja, itu masalah dimna ya..??

    BalasHapus
  8. Sama nih gan, cuma nyalaLampu aja. ga keluar textnya. address juga udah bener, dapet dari scannernya.

    BalasHapus
  9. maaf gan punyak saya cuma keluar kotak2 aja

    BalasHapus
  10. klo adreas sdh ketemu trus gmn cara penempatanya gan ?

    BalasHapus
  11. hallo admin.. salam sukses sll. Mohon Berbagi Ilmunya min Buat yg bisa buat koding di modul Arduino WeMos D1 R2,
    Rencana 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

    BalasHapus
  12. Gan klo lcd hanya menampilkan kotak kotak hitam ,,
    Itu solusinya gmn ya

    BalasHapus
  13. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  14. terimakasih 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,,,,

    BalasHapus
  15. bang lcd ne cuma keluar kotak kotak aja padahal addres uda bener ini kira kira harus ngapain yaa , help me plisss

    BalasHapus
  16. Maaf 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

    BalasHapus
    Balasan
    1. apa sekarang sudah ketemu solusinya pk? soalnya saya punya masalah yg sama. terima kasih.

      Hapus
  17. menarik, trims gan, majukan terus kreatifitas bangsa ini!!!

    BalasHapus
  18. gan, klo untuk wemos ada perbedaan kah untuk program/pemasangan pin nya?

    BalasHapus

Copyright © 2014 Belajar Arduino | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top