nanoFramework.Iot.Device.CharacterLcd
1.0.288-preview.40
Prefix Reserved
See the version list below for details.
dotnet add package nanoFramework.Iot.Device.CharacterLcd --version 1.0.288-preview.40
NuGet\Install-Package nanoFramework.Iot.Device.CharacterLcd -Version 1.0.288-preview.40
<PackageReference Include="nanoFramework.Iot.Device.CharacterLcd" Version="1.0.288-preview.40" />
paket add nanoFramework.Iot.Device.CharacterLcd --version 1.0.288-preview.40
#r "nuget: nanoFramework.Iot.Device.CharacterLcd, 1.0.288-preview.40"
// Install nanoFramework.Iot.Device.CharacterLcd as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.CharacterLcd&version=1.0.288-preview.40&prerelease // Install nanoFramework.Iot.Device.CharacterLcd as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.CharacterLcd&version=1.0.288-preview.40&prerelease
Character LCD (Liquid Crystal Display)
This device binding is meant to work with character LCD displays which use a HD44780 compatible controller. Almost all character LCDs fall into this category. Simple wrappers for 16x2 and 20x4 variants are included.
Please make sure you are using the latest nuget.
Documentation
This binding should work and is in preview has been tested with a variety of 16x2 and 20x4 displays both in 4bit and 8bit mode and via i2C adapters (such as on the CrowPi). It should work with any character LCD with a 5x8 size character. Common names are 1602LCD and 2004LCD. Also supports Grove - LCD RGB Backlight.
- Very complete tutorial on how to connect and work with one of these displays.
- Good guide explaining how the device works internally
- Seeedstudio, Grove - LCD RGB Backlight library
- PCF8574T information
Usage
These devices are controlled purely by GPIO (except Grove LCD RGB Backlight). There are two different types of GPIO pins that are used, the control pins, and the data pins. The data pins are the ones that will send out the text that should be printed out on the LCD screen. This binding supports two different configurations for the data pins: using 4 data pins, and using 8 data pins. When using only 4 data pins, we will require two send two messages to the controller, each sending half of the byte that should be printed.
Here is a Hello World example of how to consume this binding:
using LcdInterface lcdInterface = LcdInterface.CreateI2c(_i2cDevice, false);
using Hd44780 lcd = new Lcd1602(lcdInterface);
lcd.UnderlineCursorVisible = false;
lcd.Write("Hello World!");
Grove LCD RGB Backlight uses two i2c devices:
- the device to control LCD (address 0x3E)
- the device to control RGB backlight (address 0x62)
Make sure the Grove-LCD RGB Backlight is connected to a I2C port. Not the Digital port!
Here is a Hello World example of how to consume Grove LCD RGB Backlight binding:
```csharp
var i2cLcdDevice = I2cDevice.Create(new I2cConnectionSettings(busId: 1, deviceAddress: 0x3E));
var i2cRgbDevice = I2cDevice.Create(new I2cConnectionSettings(busId: 1, deviceAddress: 0x62));
using LcdRgb lcd = new LcdRgb(new Size(16, 2), i2cLcdDevice, i2cRgbDevice);
{
lcd.Write("Hello World!");
lcd.SetBacklightColor(Color.Azure);
}
```
PCF8574T/PCF8574AT Sample
The I2C backpack based on the PCF8574T/AT IC uses specific pin mapping, to consume this device binding on this backpack use like so
```csharp
var i2cDevice = I2cDevice.Create(new I2cConnectionSettings(busId: 1, deviceAddress: 0x27));
var controller = new Pcf8574(i2cDevice);
var lcd = new Lcd1602(registerSelectPin: 0, enablePin: 2, dataPins: new int[] { 4, 5, 6, 7}, backlightPin: 3, readWritePin: 1, controller: controller);
```
there is a full working example in the samples directory called Pcf8574tSample.cs
For PCF8574T i2c addresses can be between 0x27 and 0x20 depending on bridged solder jumpers and for PCF8574AT i2c addresses can be between 0x3f and 0x38 depending on bridged solder jumpers
This device binding can be combined with the [ShiftRegister](https://github.com/dotnet/iot/tree/main/src/devices/ShiftRegister/README.md) binding in order to drive an HD44780 display using a shift register. The [ShiftRegister](https://github.com/dotnet/iot/tree/main/src/devices/ShiftRegister/README.md) binding enables interaction via GPIO or SPI. Any shift register can be used as long as it's output length is evenly divisible by 8. Example:
```csharp
int registerSelectPin = 1;
int enablePin = 2;
int[] dataPins = new int[] { 6, 5, 4, 3 };
int backlightPin = 7;
// Gpio
using ShiftRegister sr = new(ShiftRegisterPinMapping.Minimal, 8);
// Spi
// using SpiDevice spiDevice = SpiDevice.Create(new(0, 0));
// using ShiftRegister sr = new(spiDevice, 8);
using LcdInterface lcdInterface = LcdInterface.CreateFromShiftRegister(registerSelectPin, enablePin, dataPins, backlightPin, sr);
using Lcd1602 lcd = new(lcdInterface);
```
The sample code works with Adafruit's [I2C / SPI character LCD backpack](https://learn.adafruit.com/i2c-spi-lcd-backpack) which uses the [Sn74hc595](https://github.com/dotnet/iot/blob/main/src/devices/Sn74hc595/README.md) 8-bit shift register to support SPI communication. The pin parameters are set according to the backpack's [schematic](https://learn.adafruit.com/i2c-spi-lcd-backpack/downloads).
## Character LCD display Samples
[Different samples](https://github.com/nanoframework/tree/main/src/devices/CharacterLcd/samples) are provided. The main method will use the Board's Gpio pins to drive the LCD display. The second example will instead use an MCP Gpio extender backpack to drive the LCD display. Also the second example can use Grove RGB LCD Backlight via i2c bus. This second example has been tested on a CrowPi device and Grove LCD RGB Backlight device.
### Sample wiring
![wiring](lcmWiringExample.jpg)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net is compatible. |
-
- nanoFramework.CoreLibrary (>= 1.12.0)
- nanoFramework.Iot.Device.Multiplexing (>= 1.1.113.2032)
- nanoFramework.Iot.Device.ShiftRegister (>= 1.1.115.33436)
- nanoFramework.ResourceManager (>= 1.1.4)
- nanoFramework.Runtime.Events (>= 1.10.0)
- nanoFramework.Runtime.Native (>= 1.5.4)
- nanoFramework.System.Collections (>= 1.4.0)
- nanoFramework.System.Device.Gpio (>= 1.0.4)
- nanoFramework.System.Device.I2c (>= 1.0.3)
- nanoFramework.System.Device.Spi (>= 1.2.1)
- nanoFramework.System.Diagnostics.Stopwatch (>= 1.1.113.2032)
- nanoFramework.System.Drawing (>= 1.1.113.2032)
- nanoFramework.System.IO.FileSystem (>= 1.0.3)
- nanoFramework.System.IO.Streams (>= 1.0.1.1)
- nanoFramework.System.Math (>= 1.4.4)
- nanoFramework.System.Text (>= 1.1.3.13)
- nanoFramework.System.Threading (>= 1.0.4)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on nanoFramework.Iot.Device.CharacterLcd:
Package | Downloads |
---|---|
nanoFramework.Iot.Device.Pcd8544
This package includes the .NET IoT Core binding Iot.Device.Pcd8544 for .NET nanoFramework C# projects. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on nanoFramework.Iot.Device.CharacterLcd:
Repository | Stars |
---|---|
nanoframework/nanoFramework.IoT.Device
📦 This repo includes .NET nanoFramework implementations for various sensors, chips, displays, hats and drivers
|
Version | Downloads | Last updated |
---|---|---|
1.1.591 | 248 | 10/23/2024 |
1.1.583 | 156 | 10/16/2024 |
1.1.580 | 136 | 10/11/2024 |
1.1.569 | 186 | 9/27/2024 |
1.1.553 | 229 | 8/30/2024 |
1.1.513 | 325 | 7/24/2024 |
1.1.507 | 178 | 7/12/2024 |
1.1.498 | 216 | 6/28/2024 |
1.1.478 | 308 | 5/29/2024 |
1.1.466 | 221 | 5/15/2024 |
1.1.463 | 113 | 5/10/2024 |
1.1.449 | 370 | 4/12/2024 |
1.1.442 | 137 | 4/9/2024 |
1.1.439 | 134 | 4/5/2024 |
1.1.364 | 1,021 | 11/17/2023 |
1.1.354 | 255 | 11/10/2023 |
1.1.246 | 1,460 | 5/24/2023 |
1.1.226 | 292 | 5/11/2023 |
1.1.223 | 164 | 5/10/2023 |
1.1.221 | 175 | 5/10/2023 |
1.1.216 | 289 | 5/3/2023 |
1.1.192 | 584 | 3/17/2023 |
1.1.131 | 1,243 | 1/5/2023 |
1.1.127 | 623 | 1/3/2023 |
1.1.122 | 896 | 12/28/2022 |
1.1.82 | 860 | 11/16/2022 |
1.1.78 | 561 | 11/14/2022 |
1.1.72 | 834 | 11/5/2022 |
1.1.60 | 639 | 10/25/2022 |
1.1.47 | 627 | 10/22/2022 |
1.1.41 | 1,007 | 10/12/2022 |
1.1.37 | 728 | 10/11/2022 |
1.1.33 | 939 | 10/8/2022 |
1.1.27 | 683 | 10/7/2022 |
1.1.23 | 1,026 | 9/24/2022 |
1.1.14 | 1,337 | 9/22/2022 |
1.1.8 | 465 | 9/16/2022 |
1.1.6 | 512 | 9/15/2022 |
1.1.1 | 504 | 9/14/2022 |
1.0.288-preview.155 | 118 | 9/9/2022 |
1.0.288-preview.151 | 99 | 9/8/2022 |
1.0.288-preview.118 | 132 | 8/6/2022 |
1.0.288-preview.113 | 114 | 8/4/2022 |
1.0.288-preview.83 | 144 | 7/13/2022 |
1.0.288-preview.65 | 114 | 7/6/2022 |
1.0.288-preview.40 | 117 | 6/24/2022 |
1.0.288-preview.37 | 115 | 6/23/2022 |
1.0.288-preview.21 | 130 | 6/13/2022 |
1.0.288-preview.3 | 123 | 6/2/2022 |
1.0.288-preview.1 | 116 | 6/1/2022 |