Cari Kode

Pustaka dan kode Arduino untuk tampilan LCD2004 dengan I2C

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

ProdusenGenerik
Nomor bagianLCD2004
Tegangan logika/IO5 V
Tegangan suplai5 V
Arus keluaran (per saluran)Biasanya 20 mA
Arus puncak (per saluran)Biasanya 40 mA
Panduan frekuensi PWMTidak berlaku
Ambang logika input0,3 Vcc (rendah), 0,7 Vcc (tinggi)
Penurunan tegangan / RDS(on) / saturasiBiasanya 0,2 V
Batas termal0°C hingga 50°C
KemasanLCD 4x20 standar
Catatan / varianTersedia 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 VCC dari LCD ke pin 5V di Arduino.
  • Hubungkan pin GND dari LCD ke pin GND di Arduino.
  • Hubungkan pin SDA dari LCD ke pin A4 di Arduino.
  • Hubungkan pin SCL dari LCD ke pin A5 di 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).

Gambar

LCD2004_display-3
LCD2004_display-3
LCD2004_display-1
LCD2004_display-1
LCD2004_display-2
LCD2004_display-2
121-Arduino code for LCD2004 with I2C: Hello World sketch
Bahasa: C++
/*
 *  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...
}
122-Arduino code for LCD2004 with I2C RoboJax custom sketch
Bahasa: C++
/*
 * 
 * *  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
123-Arduino code for LCD2004 with I2C: blinking sketch
Bahasa: C++
/*
 * 
 *  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);
	}
}
124-Arduino code for LCD2004 with I2C serial monitor sketch
Bahasa: C++
/*
 * 
 *  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

Berkas📁

Pustaka Arduino (zip)