Baca dalam bahasa Inggris

Bagikan melalui


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.

Prasyarat

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.

Menyiapkan SBC

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.

Menyiapkan perangkat keras

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 bagian belakang tampilan karakter yang menunjukkan perluasan GPIO I2C. Diagram yang menunjukkan pinout header Raspberry Pi GPIO. Gambar sopan Raspberry Pi Foundation.
Gambar sopan Raspberry Pi Foundation.

Tip

Papan breakout GPIO bersama dengan breadboard disarankan untuk menyederhanakan koneksi ke header GPIO.

Membuat aplikasi

Selesaikan langkah-langkah berikut di lingkungan pengembangan pilihan Anda:

  1. Buat Aplikasi Konsol .NET baru menggunakan .NET CLI atau Visual Studio. Beri nama LcdTutorial.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. 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-*
    
  3. 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 memanggil I2cDevice.Create dan meneruskan yang baru I2cConnectionSettings dengan busId parameter dan deviceAddress . Ini I2cDevice 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 menggunakan 0x3F. Lihat dokumentasi LCD Anda.

    • Deklarasi lain using membuat instans Pcf8574 dan meneruskan I2cDevice ke konstruktor. Instans ini mewakili perluasan GPIO.

    • Deklarasi lain using membuat instans Lcd2004 untuk mewakili tampilan. Beberapa parameter diteruskan ke konstruktor yang menjelaskan pengaturan yang akan digunakan untuk berkomunikasi dengan perluas GPIO. Perluas GPIO diteruskan sebagai controller parameter .

    • Perulangan while berjalan tanpa batas waktu. Setiap perulangan:

      1. Menghapus tampilan.
      2. Mengatur posisi kursor ke posisi pertama pada baris saat ini.
      3. Menulis waktu saat ini ke tampilan pada posisi kursor saat ini.
      4. Iterasi penghitung garis saat ini.
      5. Tidur 1000 ms.
  4. Buat aplikasi. Jika menggunakan .NET CLI, jalankan dotnet build. Untuk membuat di Visual Studio, tekan Ctrl+Shift+B.

  5. 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.

  6. 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.

  7. Hentikan program dengan menekan Ctrl+C.

Selamat! Anda telah menampilkan teks pada LCD menggunakan I2C dan perluas GPIO!

Dapatkan kode sumber

Sumber untuk tutorial ini tersedia di GitHub.

Langkah berikutnya