Zobrazení textu na displeji LCD
Znakové displeje LCD jsou užitečné pro zobrazení informací bez nutnosti externího monitoru. Běžné lcd displeje lze připojit přímo ke kolíkům GPIO, ale takový přístup vyžaduje použití až 10 kolíků GPIO. Ve scénářích vyžadujících připojení ke kombinaci zařízení je často nepraktické odchýlit tolik záhlaví GPIO na zobrazení znaků.
Mnoho výrobců prodává 20x4 znakové LCD displeje s integrovaným GPIO expander. Displej znaků se připojí přímo k rozbalovači GPIO, který se pak připojí k Raspberry Pi prostřednictvím sériového protokolu Inter-Integrated Circuit (I2C).
V tomto tématu použijete .NET k zobrazení textu na znakové obrazovce LCD pomocí rozšíření I2C GPIO.
Požadavky
- Počítač s jednou deskou (SBC) s procesorem ARM (ARMv7 nebo vyšším)
- 20x4 LCD Character Display s rozhraním I2C
- Dráty propojek
- Breadboard (volitelné/doporučené)
- Breakout board Raspberry Pi GPIO (volitelné/doporučené)
- .NET SDK 7 nebo novější
Poznámka
Tento kurz je napsán za předpokladu, že cílové zařízení je Raspberry Pi. Tento kurz se ale dá použít pro jakýkoli linuxový SBC, který podporuje .NET, například Orange Pi, ODROID a další.
Poznámka
Existuje mnoho výrobců znakových displejů LCD. Většina návrhů je identických a výrobce by neměl mít na funkčnosti žádný vliv. Pro referenci byl tento kurz vyvinut pomocí SunFounder LCD2004.
Příprava SBC
Ujistěte se, že je váš SBC nakonfigurovaný tak, aby podporoval následující služby:
- SSH
- I2C
U mnoha zařízení se nevyžaduje žádná další konfigurace. V případě Raspberry Pi použijte raspi-config
příkaz . Další informace o raspi-config
najdete v dokumentaci k Raspberry Pi.
Příprava hardwaru
Pomocí propojky připojte čtyři kolíky na expandéru I2C GPIO k Raspberry Pi následujícím způsobem:
- GND do země
- VCC až 5V
- Z SDA do SDA (GPIO 2)
- SCL až SCL (GPIO 3)
Podle potřeby si projděte následující údaje:
Rozhraní I2C (zadní strana displeje) | Raspberry Pi GPIO |
---|---|
Obrázek se svolením Raspberry Pi Foundation. |
Tip
Pro zjednodušení připojení k hlavičce GPIO se doporučuje breakout board GPIO ve spojení s breadboardem.
Vytvoření aplikace
V upřednostňovaném vývojovém prostředí proveďte následující kroky:
Vytvořte novou konzolovou aplikaci .NET pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio. Pojmenujte ho LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Přidejte do projektu balíček Iot.Device.Bindings . Použijte rozhraní příkazového řádku .NET z adresáře projektu nebo sadu Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Obsah souboru Program.cs nahraďte tímto kódem:
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); }
V předchozím kódu:
Deklarace using vytvoří instanci
I2cDevice
voláním a předánímI2cDevice.Create
novéI2cConnectionSettings
sbusId
parametry adeviceAddress
. ToI2cDevice
představuje autobus I2C. Deklaraceusing
zajišťuje odstranění objektu a správné uvolnění hardwarových prostředků.Upozornění
Adresa zařízení expanderu GPIO závisí na čipu používaném výrobcem. GPIO expandery vybavené PCF8574 používají adresu
0x27
, zatímco ti, kteří používají PCF8574A čipy .0x3F
Podívejte se do dokumentace k displeji LCD.Jiná
using
deklarace vytvoří instanciPcf8574
a předá doI2cDevice
konstruktoru . Tato instance představuje rozšíření GPIO.Jiná
using
deklarace vytvoří instanciLcd2004
, která představuje zobrazení. Konstruktoru je předáno několik parametrů popisujících nastavení, která se mají použít ke komunikaci s rozšířením GPIO. Jako parametr se předávácontroller
rozšíření GPIO.Smyčka
while
běží neomezeně dlouho. Každá iterace:- Vymaže displej.
- Nastaví pozici kurzoru na první pozici na aktuálním řádku.
- Zapíše aktuální čas do zobrazení na pozici aktuálního kurzoru.
- Iteruje aktuální čítač řádku.
- Režim spánku 1000 ms.
Sestavení aplikace Pokud používáte .NET CLI, spusťte
dotnet build
příkaz . K sestavení v sadě Visual Studio stiskněte klávesu Ctrl+Shift+B.Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že jste spustitelnému souboru dali oprávnění ke spuštění pomocí příkazu
chmod +x
.Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.
./LcdTutorial
Sledujte znak LCD, jak se na každém řádku zobrazuje aktuální čas.
Tip
Pokud se obrazovka rozsvítí, ale nevidíte žádný text, zkuste upravit kontrastní kruhový ovladač na zadní straně displeje.
Ukončete program stisknutím klávesy Ctrl+C.
Gratulujeme! Zobrazili jste text na LCD pomocí I2C a GPIO expander!
Získání zdrojového kódu
Zdroj pro tento kurz je k dispozici na GitHubu.