Pustaka dan kode Arduino untuk tampilan LCD2004 dengan I2C
Dalam tutorial ini, kita akan mempelajari cara menggunakan layar LCD2004 dengan komunikasi I2C. Pengaturan ini memungkinkan Anda menampilkan teks di empat baris, sehingga ideal untuk berbagai aplikasi. Kita akan membahas kabel yang diperlukan, potongan kode, dan cara mengimplementasikan fungsinya secara efektif.

Kita akan menggunakan library LiquidCrystal_I2C untuk mengelola layar LCD. Library ini menyederhanakan interaksi dengan LCD dengan menangani komunikasi I2C untuk Anda. Untuk pemahaman yang komprehensif, pastikan untuk menonton video untuk panduan visual (di video pada 00:00).
Penjelasan Perangkat Keras
Komponen utama untuk proyek ini adalah layar LCD2004, yang memiliki 20 kolom dan 4 baris untuk keluaran teks. Layar ini berkomunikasi menggunakan I2C, sehingga memungkinkan koneksi yang lebih sedikit dibandingkan dengan koneksi paralel tradisional. Ini membuatnya cocok untuk proyek dengan ketersediaan pin yang terbatas di Arduino.
Antarmuka I2C menggunakan dua jalur, SDA (jalur data) dan SCL (jalur clock), yang terhubung ke pin yang sesuai di Arduino. LCD juga memerlukan koneksi daya dan ground. Dalam pengaturan ini, kita akan menghubungkan layar ke sumber daya 5V, yang dapat disediakan langsung dari Arduino.
Detail Datasheet
| Produsen | Generik |
|---|---|
| Nomor bagian | LCD2004 |
| Tegangan logika/IO | 5 V |
| Tegangan suplai | 5 V |
| Arus keluaran (per saluran) | Biasanya 20 mA |
| Arus puncak (per saluran) | Biasanya 40 mA |
| Panduan frekuensi PWM | Tidak berlaku |
| Ambang logika input | 0,3 Vcc (rendah), 0,7 Vcc (tinggi) |
| Penurunan tegangan / RDS(on) / saturasi | Biasanya 0,2 V |
| Batas termal | 0°C hingga 50°C |
| Kemasan | LCD 4x20 standar |
| Catatan / varian | Tersedia dengan opsi lampu latar yang berbeda |
- Pastikan suplai daya yang tepat untuk menghindari kerusakan.
- Gunakan resistor pull-up pada jalur SDA dan SCL jika diperlukan.
- Periksa alamat I2C; biasanya 0x27 untuk layar ini.
- Jaga koneksi tetap pendek untuk meminimalkan interferensi.
- Pastikan library terinstal dengan benar sebelum mengunggah kode.
Instruksi Pengkabelan
Untuk menghubungkan layar LCD2004 dengan I2C ke Arduino, ikuti koneksi berikut:
- Hubungkan pin
VCCdari LCD ke pin5Vdi Arduino. - Hubungkan pin
GNDdari LCD ke pinGNDdi Arduino. - Hubungkan pin
SDAdari LCD ke pinA4di Arduino. - Hubungkan pin
SCLdari LCD ke pinA5di Arduino.
Jika papan Arduino Anda memiliki pin I2C yang berbeda, pastikan untuk menyesuaikan koneksi sesuai. Video juga menunjukkan konfigurasi pengkabelan alternatif (di video pada 01:30).

Contoh Kode & Penjelasan
Mari kita lihat contoh sederhana untuk menginisialisasi LCD dan menampilkan pesan. Potongan berikut mengatur LCD dan mencetak "Halo, dunia!" di layar.
lcd.begin(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan lampu latar
lcd.print("Halo, dunia!"); // Tampilkan pesan
Kode ini menginisialisasi LCD dan mengaktifkan lampu latar. Kemudian, kode ini menampilkan pesan di baris pertama LCD. Lampu latar sangat penting untuk visibilitas dalam kondisi cahaya rendah.
Selanjutnya, kita akan memeriksa contoh yang lebih kompleks yang menampilkan data dinamis, seperti pembacaan tegangan.
lcd.setCursor(0,0); // Atur kursor ke baris pertama
lcd.print("Tegangan: "); // Tampilkan label tegangan
float v = 8.254; // Contoh nilai tegangan
lcd.print(v); // Cetak nilai tegangan
Dalam kutipan ini, kita mengatur posisi kursor ke baris pertama dan mencetak label tegangan diikuti dengan nilai tegangan sebenarnya. Ini memungkinkan Anda menampilkan pengukuran waktu nyata dalam format yang ramah pengguna.

Untuk fungsionalitas tambahan, Anda dapat mengimplementasikan input serial untuk memungkinkan pengguna memasukkan karakter melalui monitor serial dan menampilkannya di LCD.
if (Serial.available()) { // Periksa input serial
lastChar = Serial.read(); // Baca karakter terakhir
lcd.write(lastChar); // Tampilkan karakter di LCD
}
Kode ini memeriksa apakah ada data yang tersedia di port serial. Jika ada, kode ini membaca karakter terakhir yang dimasukkan dan menampilkannya di LCD. Interaksi ini meningkatkan pengalaman pengguna dengan memungkinkan tampilan dinamis berdasarkan input pengguna.
Untuk kode lengkap, silakan merujuk ke program lengkap yang dimuat di bawah artikel.
Demonstrasi / Apa yang Diharapkan
Saat Anda menjalankan kode, Anda akan melihat pesan awal ditampilkan di LCD, diikuti dengan pembacaan tegangan dan karakter apa pun yang dimasukkan melalui monitor serial. Pastikan koneksi aman untuk menghindari masalah tampilan. Jika LCD tidak menampilkan apa pun, periksa kembali pengkabelan dan alamat I2C (di video pada 02:15).
/*
* Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
*
* Updated by Ahmad Shamshiri on July 8, 2018 at 19:14 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
*
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
// Do nothing here...
}
/*
*
* * Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
* This code is basic usage of an LCD2004 display with I2C.
* It will display text in 4 lines, each with 20 characters.
* It displays multiple float values and text on the same line.
*
*
*
* Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
*
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
lcd.clear();
lcd.setCursor (0,0); //
lcd.print("Robojax LCD2004 Test");
lcd.setCursor (0,1); //
lcd.print("Please Wait - 3");
lcd.setCursor (0,1); //
delay(1000);
lcd.print("Please Wait - 2");
delay(1000);
lcd.setCursor (0,1); //
lcd.print("Please Wait - 1");
delay(1000);
}
void loop() {
// Robojax.com LCD2004 with I2C custom code
lcd.clear();// clear previous values from screen
lcd.setCursor (0,0); //character zero, line 1
lcd.print("LCD2004 I2C Example"); // print text
lcd.setCursor (4,1); //character 4, line 2
lcd.print("Robojax.com"); // print text
lcd.setCursor (0,2); //character 0, line 3
lcd.print("Voltage: "); // print text
float v = 8.254;// define or get voltage
char VoltageStr[5];
dtostrf(v, 5, 3, VoltageStr );
lcd.setCursor (9,2); //character 9, line 3
lcd.print(VoltageStr); // print voltage
lcd.setCursor (14,2); //character 14, line 3
lcd.print("V"); // print V at the end of voltage
lcd.setCursor (0,3); //character 0, line 4
lcd.print("X: "); // print x
float xdeg = -123.87;// define or get x degree (just example)
lcd.setCursor (3,3); //character 8, line 3
lcd.print(xdeg); // print xdeg value
lcd.setCursor (12,3); //character 12, line 4
lcd.print("Y: "); // print Y
float ydeg = 32.8;// define or get y degree (just example)
lcd.setCursor (15,3); //character 15, line 4
lcd.print(ydeg); // print ydeg value
delay(100);
}// loop end
/*
*
* Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
* This code is basic usage of an LCD2004 display with I2C
* It will display a blinking cursor on the screen
*
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
*
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
// initialize the LCD
lcd.begin();
}
void loop()
{
bool blinking = true;
lcd.cursor();
while (1) {
if (blinking) {
lcd.clear();
lcd.print("No cursor blink");
lcd.noBlink();
blinking = false;
} else {
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Your name: ");
lcd.blink();
blinking = true;
}
delay(4000);
}
}
/*
*
* Download library: https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
* This code is basic usage of an LCD2004 display with I2C.
* This code will allow you to enter a character on the serial monitor and display it on the screen.
*
* Updated by Ahmad Shamshiri on July 08, 2018 at 09:20 in Ajax, Ontario, Canada
* for Robojax.com
* Get this code from Robojax.com
* Watch video instructions for this code at: https://youtu.be/DKmNSCMPDjE
*
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
char lastChar ='_';
void setup()
{
lcd.begin();
lcd.backlight();
lcd.print("Robojax.com Test");
// Initialize the serial port at a speed of 9600 baud
Serial.begin(9600);
}
void loop()
{
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Enter Letter: ");
lcd.setCursor(13,1);
// If characters arrived over the serial port...
if (Serial.available()) {
// Wait a bit for the entire message to arrive
delay(100);
// Write all characters received via the serial port to the LCD.
while (Serial.available() > 0) {
lastChar =Serial.read();
Serial.print("Entered: ");
Serial.println(lastChar);
}//while end
}// if end
lcd.write(lastChar);// display last entered character
delay(1000);
}// loop end
Sumber daya & referensi
-
EksternalCharacter Generator (GitHub)maxpromer.github.io
-
EksternalCharacter Generator (second source)omerk.github.io
-
EksternalGet library from GitHubgithub.com
Berkas📁
Pustaka Arduino (zip)
-
LCD1602 LCD Arduino library from Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB