Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyświetlacze lcd są przydatne do wyświetlania informacji bez konieczności korzystania z monitora zewnętrznego. Typowe wyświetlacze LCD można podłączyć bezpośrednio do wyprowadzeń GPIO, ale takie podejście wymaga użycia maksymalnie 10 wyprowadzeń GPIO. W przypadku scenariuszy, które wymagają łączenia różnych urządzeń, poświęcanie tak dużej części nagłówka GPIO na wyświetlacz znakowy jest często niepraktyczne.
Wielu producentów sprzedaje 20x4 wyświetlacze znakowe LCD ze zintegrowanym ekspanderem GPIO. Wyświetlacz znakowy łączy się bezpośrednio z ekspanderem GPIO, który następnie łączy się z urządzeniem Raspberry Pi za pośrednictwem protokołu szeregowego I2C (Inter-Integrated Circuit).
W tym temacie użyjesz .NET do wyświetlania tekstu na wyświetlaczu znaków LCD za pomocą rozszerzenia I2C GPIO.
Wymagania wstępne
- Komputer z jedną płytą (ARMv7 lub nowszy) oparty na architekturze ARM (SBC)
- Wyświetlacz znakowy LCD 20x4 z interfejsem I2C
- Przewody skoczkowe
- Płytka prototypowa (opcjonalna/zalecana)
- Płytka rozdzielcza GPIO do Raspberry Pi (opcjonalnie/zalecane)
- .NET SDK 10 lub nowszy
Uwaga
Ten samouczek został napisany przy założeniu, że docelowe urządzenie to Raspberry Pi. Jednak ten samouczek może być używany dla dowolnego systemu Linux opartego na protokole SBC, który obsługuje .NET, takich jak Orange Pi, ODROID i nie tylko.
Uwaga
Istnieje wiele producentów wyświetlaczy znakowych LCD. Większość projektów jest identyczna, a producent nie powinien mieć żadnej różnicy w funkcjonalności. Dla porównania, ten samouczek został opracowany z użyciem SunFounder LCD2004.
Przygotowywanie SBC
Upewnij się, że protokół SBC jest skonfigurowany do obsługi następujących usług:
- SSH
- I2C
W przypadku wielu urządzeń nie jest wymagana żadna dodatkowa konfiguracja. W przypadku urządzenia Raspberry Pi użyj polecenia raspi-config. Aby uzyskać więcej informacji na temat raspi-config, zapoznaj się z dokumentacją Raspberry Pi.
Przygotowywanie sprzętu
Użyj przewodów połączeniowych, aby podłączyć cztery wyprowadzenia na ekspanderze GPIO I2C do Raspberry Pi.
- GND na ziemię
- VCC na 5V
- SDA do SDA (GPIO 2)
- SCL do SCL (GPIO 3)
W razie potrzeby zapoznaj się z następującymi ilustracjami:
| Interfejs I2C (z tyłu ekranu) | Raspberry Pi GPIO |
|---|---|
|
|
Obraz dzięki uprzejmości Raspberry Pi Foundation. |
Wskazówka
Zaleca się użycie płytki rozszerzeń GPIO w połączeniu z płytką stykową, aby usprawnić połączenia z nagłówkiem GPIO.
Tworzenie aplikacji
Wykonaj następujące kroki w preferowanym środowisku projektowym:
Utwórz nową aplikację konsoli .NET przy użyciu interfejsu wiersza polecenia .NET lub Visual Studio. Nadaj jej nazwę LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialDodaj pakiet Iot.Device.Bindings do projektu. Użyj .NET CLI z katalogu projektu lub Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Zastą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); }W poprzednim kodzie:
Deklaracja using tworzy instancję
I2cDeviceprzez wywołanieI2cDevice.Createi przekazanie nowegoI2cConnectionSettingsz parametramibusIdideviceAddress. Reprezentuje toI2cDevicemagistralę I2C. Deklaracjausinggwarantuje, że obiekt zostanie usunięty, a zasoby sprzętowe zostaną prawidłowo zwolnione.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 korzystające z mikroukładów PCF8574A używają adresu0x3F. Zapoznaj się z dokumentacją wyświetlacza LCD.Inna
usingdeklaracja tworzy wystąpieniePcf8574i przekazuje argumentI2cDevicedo konstruktora. Ta instancja reprezentuje rozszerzenie GPIO.Inna
usingdeklaracja tworzy wystąpienieLcd2004do reprezentowania wyświetlacza. Kilka parametrów jest przekazywanych do konstruktora opisującego ustawienia używane do komunikowania się z ekspanderem GPIO. Rozszerzenie GPIO jest przekazywane jako parametrcontroller.Pętla
whilejest uruchamiana w nieskończoność. Każda iteracja:- Czyści ekran.
- Ustawia położenie kursora na pierwszą pozycję w bieżącym wierszu.
- Zapisuje bieżący czas na wyświetlaczu w bieżącym położeniu kursora.
- Iteruje licznik aktualnej linii.
- Śpi 1000 ms.
Kompilowanie aplikacji. Jeśli korzystasz z .NET CLI, wykonaj
dotnet build. Aby skompilować Visual Studio, naciśnij Ctrl+Shift+B.Wdróż aplikację w SBC jako samodzielną aplikację. Aby uzyskać instrukcje, zobacz Deploy .NET aplikacje do urządzenia Raspberry Pi. Upewnij się, że nadajesz plikowi wykonywalnemu uprawnienia do wykonywania przy użyciu
chmod +x.Uruchom aplikację na urządzeniu Raspberry Pi, przełączając się do katalogu wdrożenia i uruchamiając plik wykonywalny.
./LcdTutorialObserwuj ekran LCD, na którym aktualny czas jest wyświetlany na każdej linii.
Wskazówka
Jeśli ekran jest oświetlony, ale nie widzisz żadnego tekstu, spróbuj dostosować pokrętło kontrastu z tyłu ekranu.
Zakończ program, naciskając klawisze Ctrl+C.
Gratulacje! Na wyświetlaczu LCD wyświetliłeś tekst używając I2C oraz ekspandera GPIO!
Pobieranie kodu źródłowego
Źródło tego samouczka jest dostępne w GitHub.