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 memerlukan penggunaan hingga 10 pin GPIO. Untuk skenario yang mengharuskan penyambungan ke kombinasi perangkat, mengalokasikan banyak ruang pada header GPIO untuk tampilan karakter sering kali terasa tidak praktis.

Banyak produsen menjual layar 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 expander I2C GPIO.

Prasyarat

Nota

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.

Nota

Ada banyak produsen tampilan karakter LCD. Sebagian besar desain identik, dan produsen tidak boleh membuat perbedaan apa pun untuk 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 layar) Raspberry Pi GPIO
Gambar bagian belakang tampilan karakter yang menunjukkan perluasan GPIO I2C. Diagram yang menampilkan pinout header GPIO pada Raspberry Pi. Gambar milik Raspberry Pi Foundation.
Gambar atas izin Raspberry Pi Foundation.

Petunjuk / Saran

Papan breakout GPIO dalam kombinasi dengan breadboard dianjurkan untuk mempermudah 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 3.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 I2cConnectionSettings baru dengan parameter busId dan deviceAddress. Ini I2cDevice mewakili bus I2C. using Deklarasi memastikan objek dilepaskan dan sumber daya perangkat keras dibebaskan dengan benar.

      Peringatan

      Alamat perangkat untuk perluasan 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 ekspander 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. Ekspander GPIO diteruskan sebagai parameter controller.

    • Perulangan while berlangsung 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. Mengiterasi penghitung baris saat ini.
      5. Menunggu selama 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 menggunakan chmod +x.

  6. Jalankan aplikasi pada Raspberry Pi dengan beralih ke direktori penyebaran dan jalankan executable.

    ./LcdTutorial
    

    Amati tampilan karakter LCD saat waktu saat ini ditampilkan pada setiap baris.

    Petunjuk / Saran

    Jika tampilan menyala tetapi Anda tidak melihat teks apa pun, coba sesuaikan dial kontras di bagian belakang layar.

  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 selanjutnya