Panduan Lengkap Penggunaan 1602 / 2004 IIC i2C LCD untuk Arduino

Author : Ila MulyandiNo comments

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 membutuhkan 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
    }


Posted On : Monday, January 23, 2017Time : 12:19 AM
SHARE TO :
| | Template Created By : Rajendroid | CopyRigt By : ARDUINO | |