Wyświetlanie tekstu na wyświetlaczu LCD

Wyświetlacze znaków LCD są przydatne do wyświetlania informacji bez konieczności korzystania z monitora zewnętrznego. Typowe wyświetlacze LCD mogą być połączone bezpośrednio z wyprowadzeniami GPIO, ale takie podejście wymaga użycia maksymalnie 10 wyprowadzeń GPIO. W przypadku scenariuszy, które wymagają połączenia z kombinacją urządzeń, poświęcanie tak dużej części nagłówka GPIO do wyświetlania znaków jest często niepraktyczne.

Wielu producentów sprzedaje wyświetlacze LCD 20x4 ze zintegrowanym ekspanderem GPIO. Ekran znaku łączy się bezpośrednio z ekspanderem GPIO, który następnie łączy się z urządzeniem Raspberry Pi za pośrednictwem protokołu szeregowego Inter-Integrated Circuit (I2C).

W tym temacie użyjesz platformy .NET do wyświetlania tekstu na wyświetlaczu znaków LCD przy użyciu rozszerzenia GPIO I2C.

Wymagania wstępne

  • Komputer jednowłotowy oparty na usłudze ARM (ARMv7 lub nowszy) (SBC)
  • Wyświetlacz lcd 20x4 z interfejsem I2C
  • Przewody skoczkowe
  • Tablica do chleba (opcjonalnie/zalecana)
  • Tablica breakout urządzenia Raspberry Pi GPIO (opcjonalnie/zalecana)
  • Zestaw .NET SDK 7 lub nowszy

Uwaga

Ten samouczek został napisany przy założeniu, że urządzenie docelowe to Raspberry Pi. Jednak ten samouczek może być używany dla dowolnego systemu Linux SBC, który obsługuje platformę .NET, taką jak Orange Pi, ODROID i nie tylko.

Uwaga

Istnieje wiele producentów wyświetlaczy znaków LCD. Większość projektów jest identyczna, a producent nie powinien mieć żadnej różnicy w funkcjonalności. Do celów referencyjnych ten samouczek został opracowany za pomocą rozwiązania SunFounder LCD2004.

Przygotowywanie protokołu SBC

Upewnij się, że usługa SBC jest skonfigurowana do obsługi następujących usług:

  • Protokół SSH
  • I2C

W przypadku wielu urządzeń nie jest wymagana żadna dodatkowa konfiguracja. W przypadku urządzenia Raspberry Pi użyj raspi-config polecenia . Aby uzyskać więcej informacji na temat raspi-configusługi , zapoznaj się z dokumentacją urządzenia Raspberry Pi.

Przygotowywanie sprzętu

Użyj przewodów skoczek, aby połączyć cztery piny na ekspanderze I2C GPIO do urządzenia Raspberry Pi w następujący sposób:

  • GND do ziemi
  • VCC do 5V
  • SDA do SDA (GPIO 2)
  • Lista SCL do listy SCL (GPIO 3)

W razie potrzeby zapoznaj się z następującymi ilustracjami:

Interfejs I2C (z tyłu ekranu) Raspberry Pi GPIO
Obraz przedstawiający tył ekranu znaku przedstawiający rozszerzenie GPIO I2C. Diagram przedstawiający wyprowadzenia nagłówka GPIO urządzenia Raspberry Pi. Obraz dzięki uprzejmości Raspberry Pi Foundation.
Obraz dzięki uprzejmości Raspberry Pi Foundation.

Porada

Tablica podziału GPIO w połączeniu z tablicą do chleba zaleca się usprawnić połączenia z nagłówkiem GPIO.

Tworzenie aplikacji

Wykonaj następujące kroki w preferowanym środowisku projektowym:

  1. Utwórz nową aplikację konsolową platformy .NET przy użyciu interfejsu wiersza polecenia platformy .NET lub programu Visual Studio. Nadaj mu nazwę LcdTutorial.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. Dodaj pakiet Iot.Device.Bindings do projektu. Użyj interfejsu wiersza polecenia platformy .NET z katalogu projektu lub programu Visual Studio.

    dotnet add package Iot.Device.Bindings --version 2.2.0-*
    
  3. Zastąp zawartość pliku Program.cs następującym kodem:

    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);
    }
    

    Powyższy kod ma następujące działanie:

    • Deklaracja using tworzy wystąpienie I2cDevice przez wywołanie I2cDevice.Create i przekazanie nowego I2cConnectionSettings z parametrami busId i deviceAddress . Reprezentuje to I2cDevice magistralę I2C. Deklaracja using zapewnia, że obiekt jest usuwany, a zasoby sprzętowe są prawidłowo zwalniane.

      Ostrzeżenie

      Adres urządzenia dla ekspandera GPIO zależy od mikroukładu używanego przez producenta. Rozszerzenia GPIO wyposażone w PCF8574 używają adresu 0x27, podczas gdy te używające mikroukładów PCF8574A używają 0x3F. Zapoznaj się z dokumentacją lcd.

    • Inna using deklaracja tworzy wystąpienie obiektu Pcf8574 i przekazuje element I2cDevice do konstruktora. To wystąpienie reprezentuje rozszerzenie GPIO.

    • Inna using deklaracja tworzy wystąpienie do Lcd2004 reprezentowania wyświetlania. Kilka parametrów jest przekazywanych do konstruktora opisującego ustawienia używane do komunikowania się z ekspanderem GPIO. Rozszerzenie GPIO jest przekazywane jako controller parametr.

    • Pętla while jest uruchamiana na czas nieokreślony. Każda iteracja:

      1. Czyści ekran.
      2. Ustawia położenie kursora na pierwsze miejsce w bieżącym wierszu.
      3. Zapisuje bieżący czas wyświetlania w bieżącym położeniu kursora.
      4. Iteruje bieżący licznik wierszy.
      5. Śpi 1000 ms.
  4. Kompilowanie aplikacji. Jeśli używasz interfejsu wiersza polecenia platformy .NET, uruchom polecenie dotnet build. Aby skompilować w programie Visual Studio, naciśnij klawisze Ctrl+Shift+B.

  5. Wdróż aplikację w SBC jako samodzielną aplikację. Aby uzyskać instrukcje, zobacz Wdrażanie aplikacji .NET na urządzeniach Raspberry Pi. Pamiętaj, aby nadać wykonywalne uprawnienie do wykonywania przy użyciu polecenia chmod +x.

  6. Uruchom aplikację na urządzeniu Raspberry Pi, przełączając się do katalogu wdrożenia i uruchamiając plik wykonywalny.

    ./LcdTutorial
    

    Obserwuj wyświetlanie znaku LCD, gdy bieżący czas jest wyświetlany w każdym wierszu.

    Porada

    Jeśli ekran jest oświetlony, ale nie widzisz żadnego tekstu, spróbuj dostosować tarczę kontrastu z tyłu ekranu.

  7. Zakończ program, naciskając klawisze Ctrl+C.

Gratulacje! Tekst na wyświetlaczu LCD został wyświetlony przy użyciu rozszerzenia I2C i GPIO!

Uzyskiwanie kodu źródłowego

Źródło tego samouczka jest dostępne w usłudze GitHub.

Następne kroki