Menampilkan teks pada LCD
Tampilan karakter LCD berguna untuk menampilkan informasi tanpa perlu monitor eksternal. Tampilan karakter LCD umum dapat dihubungkan langsung ke pin GPIO, tetapi pendekatan seperti itu membutuhkan penggunaan hingga 10 pin GPIO. Untuk skenario yang memerlukan koneksi ke kombinasi perangkat, mengabdikan begitu banyak header GPIO ke tampilan karakter sering kali tidak praktis.
Banyak produsen menjual tampilan karakter LCD 20x4 dengan expander GPIO terintegrasi. Tampilan karakter terhubung langsung ke perluas GPIO, yang kemudian terhubung ke Raspberry Pi melalui protokol serial Sirkuit Inter-Integrated (I2C).
Dalam topik ini, Anda akan menggunakan .NET untuk menampilkan teks pada tampilan karakter LCD menggunakan perluas I2C GPIO.
- Komputer papan tunggal (SBC) berbasis ARM (ARMv7 atau lebih besar)
- Tampilan Karakter LCD 20x4 dengan antarmuka I2C
- Kabel jumper
- Papan roti (opsional/disarankan)
- Papan breakout Raspberry Pi GPIO (opsional/disarankan)
- .NET SDK 7 atau yang lebih baru
Catatan
Tutorial ini ditulis dengan asumsi perangkat target adalah Raspberry Pi. Namun, tutorial ini dapat digunakan untuk SBC berbasis Linux apa pun yang mendukung .NET, seperti Orange Pi, ODROID, dan banyak lagi.
Catatan
Ada banyak produsen tampilan karakter LCD. Sebagian besar desain identik, dan produsen tidak boleh membuat perbedaan apa pun pada fungsionalitas. Sebagai referensi, tutorial ini dikembangkan dengan SunFounder LCD2004.
Pastikan SBC Anda dikonfigurasi untuk mendukung layanan berikut:
- SSH
- I2C
Untuk banyak perangkat, tidak diperlukan konfigurasi tambahan. Untuk Raspberry Pi, gunakan raspi-config
perintah . Untuk informasi selengkapnya tentang raspi-config
, lihat dokumentasi Raspberry Pi.
Gunakan kabel jumper untuk menghubungkan empat pin pada expander I2C GPIO ke Raspberry Pi sebagai berikut:
- GND ke tanah
- VCC ke 5V
- SDA ke SDA (GPIO 2)
- SCL ke SCL (GPIO 3)
Lihat gambar berikut sesuai kebutuhan:
Antarmuka I2C (bagian belakang tampilan) | Raspberry Pi GPIO |
---|---|
Gambar sopan Raspberry Pi Foundation. |
Tip
Papan breakout GPIO bersama dengan breadboard disarankan untuk menyederhanakan koneksi ke header GPIO.
Selesaikan langkah-langkah berikut di lingkungan pengembangan pilihan Anda:
Buat Aplikasi Konsol .NET baru menggunakan .NET CLI atau Visual Studio. Beri nama LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Tambahkan paket Iot.Device.Bindings ke proyek. Gunakan .NET CLI dari direktori proyek atau Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Ganti konten Program.cs dengan kode berikut:
using System; using System.Device.Gpio; using System.Device.I2c; using System.Threading; using Iot.Device.CharacterLcd; using Iot.Device.Pcx857x; Console.WriteLine("Displaying current time. Press Ctrl+C to end."); using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27)); using var driver = new Pcf8574(i2c); using var lcd = new Lcd2004(registerSelectPin: 0, enablePin: 2, dataPins: new int[] { 4, 5, 6, 7 }, backlightPin: 3, backlightBrightness: 0.1f, readWritePin: 1, controller: new GpioController(PinNumberingScheme.Logical, driver)); int currentLine = 0; while (true) { lcd.Clear(); lcd.SetCursorPosition(0,currentLine); lcd.Write(DateTime.Now.ToShortTimeString()); currentLine = (currentLine == 3) ? 0 : currentLine + 1; Thread.Sleep(1000); }
Dalam kode sebelumnya:
Deklarasi menggunakan membuat instans
I2cDevice
dengan memanggilI2cDevice.Create
dan meneruskan yang baruI2cConnectionSettings
denganbusId
parameter dandeviceAddress
. IniI2cDevice
mewakili bus I2C.using
Deklarasi memastikan objek dibuang dan sumber daya perangkat keras dirilis dengan benar.Peringatan
Alamat perangkat untuk perluas GPIO tergantung pada chip yang digunakan oleh produsen. Perluas GPIO yang dilengkapi dengan PCF8574 menggunakan alamat
0x27
, sementara yang menggunakan chip PCF8574A menggunakan0x3F
. Lihat dokumentasi LCD Anda.Deklarasi lain
using
membuat instansPcf8574
dan meneruskanI2cDevice
ke konstruktor. Instans ini mewakili perluasan GPIO.Deklarasi lain
using
membuat instansLcd2004
untuk mewakili tampilan. Beberapa parameter diteruskan ke konstruktor yang menjelaskan pengaturan yang akan digunakan untuk berkomunikasi dengan perluas GPIO. Perluas GPIO diteruskan sebagaicontroller
parameter .Perulangan
while
berjalan tanpa batas waktu. Setiap perulangan:- Menghapus tampilan.
- Mengatur posisi kursor ke posisi pertama pada baris saat ini.
- Menulis waktu saat ini ke tampilan pada posisi kursor saat ini.
- Iterasi penghitung garis saat ini.
- Tidur 1000 ms.
Buat aplikasi. Jika menggunakan .NET CLI, jalankan
dotnet build
. Untuk membuat di Visual Studio, tekan Ctrl+Shift+B.Sebarkan aplikasi ke SBC sebagai aplikasi mandiri. Untuk petunjuknya, lihat Menyebarkan aplikasi .NET ke Raspberry Pi. Pastikan untuk memberikan izin eksekusi yang dapat dieksekusi menggunakan
chmod +x
.Jalankan aplikasi pada Raspberry Pi dengan beralih ke direktori penyebaran dan menjalankan executable.
./LcdTutorial
Amati tampilan karakter LCD saat waktu saat ini ditampilkan pada setiap baris.
Tip
Jika tampilan menyala tetapi Anda tidak melihat teks apa pun, coba sesuaikan dial kontras di bagian belakang tampilan.
Hentikan program dengan menekan Ctrl+C.
Selamat! Anda telah menampilkan teks pada LCD menggunakan I2C dan perluas GPIO!
Sumber untuk tutorial ini tersedia di GitHub.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: