Friday 20 January 2017

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 
#include

// 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   // i2C Conection Library
#include //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 


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
}





reff : http://www.belajarduino.com/2016/06/how-to-connect-1602-2004-iic-i2c-lcd-to.html


Video yang berkaitan dengan Panduan Lengkap Penggunaan 1602 / 2004 IIC i2C LCD untuk Arduino


0 comments:

Post a Comment