Szöveg megjelenítése LCD-n
Az LCD-karakteres kijelzők hasznosak az információk külső monitor nélkül történő megjelenítéséhez. A gyakori LCD-karakteres kijelzők közvetlenül csatlakoztathatók a GPIO csapokhoz, de egy ilyen megközelítéshez legfeljebb 10 GPIO csapot kell használni. Az eszközök kombinációjához való csatlakozást igénylő forgatókönyvek esetében a GPIO-fejlécek nagy részének a karaktermegjelenítésre való felosztása gyakran nem kivitelezhető.
Sok gyártó értékesít 20x4 LCD karakter kijelzők egy integrált GPIO bővítő. A karakterkijelző közvetlenül csatlakozik a GPIO-bővítőhöz, amely a Raspberry Pi-hoz csatlakozik a Inter-Integrated Circuit (I2C) soros protokollon keresztül.
Ebben a témakörben a .NET használatával fog szöveget megjeleníteni egy LCD karakterkijelzőn egy I2C GPIO-bővítővel.
Előfeltételek
- ARM-alapú (ARMv7 vagy újabb) egylapos számítógép (SBC)
- 20x4 LCD karakteres kijelző I2C felülettel
- Jumper drótok
- Gördeszka (nem kötelező/ajánlott)
- Raspberry Pi GPIO-melléklap (nem kötelező/ajánlott)
- .NET SDK 7 vagy újabb
Megjegyzés
Ez az oktatóanyag meg van írva, feltéve, hogy a céleszköz Raspberry Pi. Ez az oktatóanyag azonban minden olyan Linux-alapú SBC-hez használható, amely támogatja a .NET-et, például az Orange Pi-t, az ODROID-ot és egyebeket.
Megjegyzés
Sok gyártó LCD karakter kijelzők. A legtöbb kialakítás azonos, és a gyártónak nem szabad különbséget tennie a funkcionalitásban. Referenciaként ezt az oktatóanyagot a SunFounder LCD2004-tel fejlesztettük ki.
Az SBC előkészítése
Győződjön meg arról, hogy az SBC a következő szolgáltatások támogatására van konfigurálva:
- SSH
- I2C
Sok eszköz esetében nincs szükség további konfigurációra. Raspberry Pi esetén használja a raspi-config
parancsot. További információt a raspi-config
Raspberry Pi dokumentációjában talál.
A hardver előkészítése
Az I2C GPIO-bővítőn lévő négy tűt ugróhuzalokkal csatlakoztassa a Raspberry Pi-hoz az alábbiak szerint:
- GND a földig
- VCC-ről 5V-ra
- SDA–SDA (GPIO 2)
- SCL–SCL (GPIO 3)
Szükség szerint tekintse meg a következő számokat:
I2C felület (kijelző hátoldala) | Raspberry Pi GPIO |
---|---|
Kép jóvoltból Raspberry Pi Foundation. |
Tipp
A GPIO-mellékfal és a rajztábla együttes használata ajánlott a GPIO fejléchez való csatlakozás egyszerűsítéséhez.
Az alkalmazás létrehozása
Hajtsa végre a következő lépéseket az előnyben részesített fejlesztési környezetben:
Hozzon létre egy új .NET-konzolalkalmazást a .NET CLI vagy a Visual Studio használatával. Adja neki az LcdTutorial nevet.
dotnet new console -o LcdTutorial cd LcdTutorial
Adja hozzá az Iot.Device.Bindings csomagot a projekthez. Használja a .NET CLI-t a projektkönyvtárból vagy a Visual Studióból.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Cserélje le a Program.cs fájl tartalmát a következő kódra:
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); }
A fenti kód a következőket végzi el:
A használó deklaráció egy példányt
I2cDevice
hoz létre a és abusId
paraméterekkel egy újI2cConnectionSettings
hívásávalI2cDevice.Create
ésdeviceAddress
átadásával. EzI2cDevice
az I2C buszt jelöli. Ausing
deklaráció biztosítja, hogy az objektum el legyen távolítva, és a hardvererőforrások megfelelően legyenek felszabadítva.Figyelmeztetés
A GPIO-bővítő eszközcíme a gyártó által használt chiptől függ. A PCF8574-es PCF8574-es bővítők a címet
0x27
használják, míg a PCF8574A lapkákat használók.0x3F
Tekintse meg az LCD dokumentációját.Egy másik
using
deklaráció létrehoz egy példánytPcf8574
, és átadja aI2cDevice
konstruktornak. Ez a példány a GPIO-bővítőt jelöli.Egy másik
using
deklaráció létrehoz egy példánytLcd2004
a megjelenítés megjelenítéséhez. A konstruktor számos paramétert ad át, amelyek ismertetik a GPIO-bővítővel való kommunikációhoz használandó beállításokat. A GPIO-bővítő paraméterként lesz átadvacontroller
.A
while
hurok határozatlan ideig fut. Minden iteráció:- Törli a kijelzőt.
- A kurzor pozícióját az aktuális vonal első pozíciójára állítja.
- Az aktuális időt az aktuális kurzor pozíciójában lévő kijelzőre írja.
- Iterálja az aktuális sorszámlálót.
- Alvó 1000 ms.
Az alkalmazás létrehozása. Ha a .NET CLI-t használja, futtassa a parancsot
dotnet build
. A Visual Studióban való buildeléshez nyomja le a CtrlShift+Bbillentyűkombinációt+.Helyezze üzembe az alkalmazást az SBC-ben önálló alkalmazásként. Útmutatásért lásd: .NET-alkalmazások üzembe helyezése a Raspberry Pi-ben. Győződjön meg arról, hogy a végrehajtható végrehajtási engedélyt a használatával
chmod +x
adja meg.Futtassa az alkalmazást a Raspberry Pi-n az üzembehelyezési könyvtárra való váltással és a végrehajtható fájl futtatásával.
./LcdTutorial
Figyelje meg az LCD-karaktert, ahogy az aktuális idő jelenik meg az egyes vonalakon.
Tipp
Ha a kijelző világít, de nem lát szöveget, próbálja meg módosítani a kontrasztos tárcsázást a kijelző hátulján.
Állítsa le a programot a CtrlC billentyű lenyomásával+.
Gratulálunk! I2C és GPIO expander használatával megjelenített szöveget egy LCD-n!
A forráskód lekérése
Az oktatóanyag forrása a GitHubon érhető el.