Cari Kode

Pelajaran 20/31: Menampilkan tegangan pada LCD1602

Pelajaran 20/31: Menampilkan tegangan pada LCD1602

Proyek ini menunjukkan cara membuat voltmeter digital menggunakan Arduino dan layar LCD1602 dengan antarmuka I2C. Dengan membaca tegangan analog dari potensiometer dan menampilkannya di layar, Anda akan mempelajari keterampilan penting dalam konversi analog-ke-digital, komunikasi I2C, dan kontrol LCD. 

LCD_sunFounder

Proyek ini merupakan batu loncatan yang bagus untuk banyak aplikasi praktis. Berikut adalah beberapa ide yang dapat Anda kembangkan:

  • Membangun monitor tegangan baterai portabel untuk proyek Anda.
  • Membuat catu daya sederhana dengan pembacaan tegangan visual.
  • Memantau keluaran panel surya atau sumber tegangan variabel lainnya.
  • Menampilkan nilai dari sensor analog apa pun, seperti resistor dependen cahaya (LDR), sebagai angka yang dapat dibaca.

Di akhir panduan ini, Anda akan memiliki pemahaman yang jelas tentang cara menghubungkan komponen, mengonfigurasi pustaka yang diperlukan, dan menulis kode untuk membuat tampilan voltase Anda sendiri.

potensiometer

Komponen Perangkat Keras

Untuk membangun proyek ini, Anda akan memerlukan komponen berikut. Kursus ini didasarkan pada kit Arduino 3-in-1 SunFounder, yang mencakup semua bagian ini.

  • Papan Arduino (mis., Uno)
  • Layar LCD1602 dengan modul I2C
  • Potensiometer (10kΩ disarankan)
  • Kabel Jumper
  • Papan Roti

Memahami LCD1602 dan Modul I2C

LCD1602 adalah tampilan alfanumerik populer dengan 16 kolom dan 2 baris. LCD paralel standar akan memerlukan banyak pin digital untuk mengontrolnya. Namun, tampilan ini dilengkapi dengan modul I2C khusus yang terpasang di bagian belakangnya (dalam video pada 01:30). Modul ini menyederhanakan pengkabelan secara drastis, mengurangi koneksi menjadi hanya empat kabel: VCC, GND, SDA, dan SCL. Ini dimungkinkan karena modul I2C bertindak sebagai jembatan, menerjemahkan sinyal serial I2C sederhana menjadi sinyal paralel yang dibutuhkan LCD.

Proyek ini menggunakan antarmuka I2C, yang merupakan protokol komunikasi yang memungkinkan Arduino Anda berbicara dengan beberapa perangkat hanya menggunakan dua kabel. Ini adalah keterampilan mendasar untuk menghubungkan banyak jenis sensor dan tampilan.

Panduan Pengkabelan

LCD1602_pot_wiring

Menghubungkan LCD dan potensiometer ke Arduino sangatlah mudah. Modul I2C membutuhkan daya dan dua jalur komunikasi. Potensiometer bertindak sebagai pembagi tegangan variabel, memungkinkan Anda menyesuaikan tegangan pada pin wiper-nya.

Berikut adalah pengaturan pengkabelan yang terperinci:

  • Modul I2C LCD ke Arduino:
    • GND ke Arduino GND (dalam video pada 05:38).
    • VCC ke Arduino 5V (dalam video pada 05:47).
    • SDA ke Arduino A4 (dalam video pada 05:47).
    • SCL ke Arduino A5 (dalam video pada 05:57).
  • Potensiometer ke Arduino:
    • Pin Kiri ke Arduino 5V (dalam video pada 33:39).
    • Pin Tengah (Wiper) ke Arduino A0 (dalam video pada 33:43).
    • Pin Kanan ke Arduino GND (dalam video pada 33:43).

Menginstal Pustaka yang Diperlukan

Proyek ini memerlukan pustaka eksternal untuk mengontrol LCD melalui I2C. Pustaka yang digunakan dalam video adalah pustaka "Arduino Liquid Crystal I2C". Anda dapat mengunduhnya dari tautan yang disediakan di halaman sumber daya Robojax atau dari GitHub (dalam video pada 06:16).

Untuk menginstalnya, unduh pustaka sebagai file ZIP. Kemudian, di Arduino IDE Anda, buka Sketch > Include Library > Add .ZIP Library... dan pilih file yang diunduh (dalam video pada 06:41).

Menemukan Alamat I2C LCD Anda

Sebelum mengunggah kode utama, sangat penting untuk menentukan alamat I2C dari modul LCD spesifik Anda. Alamat ini dapat bervariasi tergantung pada pabrikannya. Video ini menunjukkan cara menggunakan pemindai I2C untuk menemukannya (dalam video pada 08:11).

Anda dapat menemukan pemindai ini dengan membuka File > Examples > Wire > i2c_scanner. Unggah kode ini ke Arduino Anda dengan LCD terhubung, dan buka Serial Monitor. Ini akan menampilkan alamat, yang sering kali 0x27 atau 0x3F. Anda perlu menggunakan alamat ini dalam kode utama Anda.

Penjelasan Kode

Kode untuk proyek ini berfokus pada membaca nilai analog dan memformatnya untuk ditampilkan. Mari kita uraikan bagian-bagian kunci yang dapat dikonfigurasi pengguna.

1. Penyertaan Pustaka dan Objek LCD

Bagian ini menyertakan pustaka yang diperlukan dan membuat objek untuk LCD Anda. Bagian terpenting di sini adalah alamat I2C, yang harus Anda ubah agar sesuai dengan yang Anda temukan di langkah sebelumnya.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Setel alamat LCD ke 0x27 untuk tampilan 16 atau 20 karakter dan 2 atau 4 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);
  • #include <Wire.h>: Pustaka ini sudah terintegrasi dalam Arduino dan diperlukan untuk komunikasi I2C.
  • #include <LiquidCrystal_I2C.h>: Ini menyertakan pustaka yang baru saja kita instal, yang menyediakan fungsi untuk mengontrol LCD.
  • LiquidCrystal_I2C lcd(0x27, 16, 2);: Baris ini membuat objek bernama lcd. Parameter pertama, 0x27, adalah alamat I2C yang Anda temukan sebelumnya. Parameter kedua dan ketiga menentukan dimensi LCD: 16 kolom dan 2 baris. Anda harus mengubah 0x27 ke alamat spesifik Anda jika berbeda.

2. Fungsi Setup dan Loop

Fungsi setup() menginisialisasi LCD dan menyalakan lampu latarnya. Fungsi loop() berisi logika inti untuk membaca tegangan dan menampilkannya.

void setup()
{
  lcd.begin();
  lcd.backlight();
}

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  // ... (kode tampilan LCD)
  delay(1000);
}
  • lcd.begin(): Ini menginisialisasi antarmuka LCD dan menyiapkannya untuk digunakan.
  • lcd.backlight(): Ini menyalakan lampu latar layar, membuat teks terlihat.
  • int potValue = analogRead(A0);: Ini membaca nilai analog mentah dari pin A0, yang terhubung ke wiper potensiometer. Nilainya akan berupa bilangan bulat antara 0 dan 1023, mewakili tegangan dari 0V hingga 5V.
  • float voltage = potValue * (5.0 / 1023.0);: Ini adalah langkah konversi yang penting. Ini mengubah nilai ADC mentah menjadi pembacaan tegangan aktual. Rumusnya mengalikan nilai mentah dengan rasio tegangan referensi (5.0V) terhadap nilai ADC maksimum (1023). Ini diperlukan karena ADC tidak membaca tegangan secara langsung; ia membaca angka proporsional.

3. Menampilkan Tegangan

Kode kemudian membersihkan layar dan mencetak nilai tegangan pada posisi tertentu di baris kedua.

  lcd.clear();
  lcd.print("LCD1602 Tutorial");
  lcd.setCursor (0,1); // pergi ke awal baris ke-2
  lcd.print("Voltage:");
  lcd.setCursor (9,1); // atur ke baris 2 karakter 9
  lcd.print(voltage); 
  lcd.setCursor (13,1); // atur ke baris 2 karakter 14
  lcd.print("V"); 
  • lcd.clear(): Membersihkan teks sebelumnya dari layar.
  • lcd.print("LCD1602 Tutorial"): Mencetak judul di baris pertama.
  • lcd.setCursor (0,1): Mengatur kursor ke awal baris kedua. Parameter pertama adalah kolom (0-15), dan parameter kedua adalah baris (0 untuk baris pertama, 1 untuk baris kedua).
  • lcd.print(voltage): Mencetak nilai tegangan yang dihitung. Variabel float akan dicetak dengan dua tempat desimal secara default.
  • lcd.setCursor (13,1): Memindahkan kursor ke kolom 13 di baris kedua untuk menempatkan karakter "V" tepat setelah angka.

Demonstrasi Proyek Langsung

Setelah Anda mengunggah kode, LCD harus menampilkan "LCD1602 Tutorial" di baris pertama. Di baris kedua, akan menampilkan "Voltage:" diikuti dengan pembacaan tegangan saat ini. Saat Anda memutar kenop potensiometer, Anda akan melihat tegangan yang ditampilkan berubah secara real-time, berkisar dari sekitar 0.00V hingga 5.00V (dalam video pada 35:25).

Proyek ini adalah contoh sempurna tentang cara mengambil sinyal analog mentah dan mengubahnya menjadi nilai yang jelas dan mudah dibaca manusia. Keterampilan yang Anda pelajari di sini dapat langsung diterapkan pada sensor analog lain yang mungkin Anda gunakan di masa depan.

Video ini juga mencakup topik terkait lainnya, seperti menampilkan teks, menggulir, dan membuat karakter khusus di LCD.

Proyek terkait dari video ini

Bab

  • [00:00] Pengenalan LCD1602 dan gambaran proyek
  • [01:30] Penjelasan perangkat keras LCD1602 dan modul I2C
  • [04:06] Mengatur alamat I2C dengan jumper
  • [05:28] Diagram pengkabelan untuk LCD1602
  • [07:31] Penjelasan kode untuk tampilan teks dasar
  • [11:10] Demonstrasi contoh kursor berkedip
  • [13:46] Membuat dan menggunakan karakter khusus
  • [18:51] Menggunakan contoh tampilan serial
  • [23:16] Menggulir teks di LCD
  • [26:13] Menampilkan suhu dan kelembaban dari DHT11
  • [33:00] Membaca dan menampilkan tegangan dari potensiometer
  • [35:56] Menampilkan jarak dari sensor ultrasonik

Gambar

potentiometer
potentiometer
LCD1602_pot_wiring
LCD1602_pot_wiring
LCD_sunFounder
LCD_sunFounder
912-Lesson 20/31: Displaying voltage on LCD1602
Bahasa: C++
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
 
  
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);

int count =700;
void setup()
{
  // Robojax code for LCD with I2C
	// initialize the LCD, 
	lcd.begin();
 
	// Turn on the blacklight and print a message.
	lcd.backlight();
  // Robojax code for LCD with I2C


}

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  //start of loop Robojax code for LCD with I2C
  lcd.clear();
  lcd.print("LCD1602 Tutorial");
  lcd.setCursor (0,1); // go to start of 2nd line
  lcd.print("Voltage:");

  lcd.setCursor (9,1); // set to line 2 char 9
  lcd.print(voltage); 

  lcd.setCursor (13,1); // set to line 2 char 14
  lcd.print("V"); 

  //lcd.setCursor (3,3); // set to line 4 character 4
  //lcd.print("Text in line 4"); 
        
  delay(1000);
  count++;
 //end of loopcode Robojax code for LCD with I2C
}

Sumber daya & referensi

Berkas📁

Pustaka Arduino (zip)

Panduan Pengguna