LCD에 텍스트 표시
LCD 문자 디스플레이는 외부 모니터가 없어도 정보를 표시하는 데 유용합니다. 일반적인 LCD 문자 디스플레이는 GPIO 핀에 직접 연결할 수 있지만 해당 접근 방식에는 최대 10개 GPIO 핀을 사용해야 합니다. 디바이스 조합에 연결해야 하는 시나리오에서는 너무 많은 GPIO 헤더를 문자 디스플레이에 사용하는 것은 보통 실용적이지 않습니다.
대부분 제조업체에서는 GPIO 확장기가 통합된 20x4 LCD 문자 디스플레이를 판매합니다. 문자 표시는 GPIO 확장자에 직접 연결한 다음, Inter-Integrated 회로(I2C) 직렬 프로토콜을 통해 Raspberry Pi에 연결합니다.
이 항목에서는 .NET을 사용하여 I2C GPIO 확장기를 사용하여 LCD 문자 디스플레이에 텍스트를 표시합니다.
필수 구성 요소
- ARM 기반(ARMv7 이상) SBC(단일 보드 컴퓨터)
- I 2 C 인터페이스가 있는 20x4LCD 문자 디스플레이
- 점퍼 와이어
- 브레드보드(선택 사항/권장)
- Raspberry Pi GPIO 브레이크아웃 보드(선택 사항/권장)
- .NET SDK 7 이상
참고
이 자습서는 대상 디바이스가 Raspberry Pi라고 가정하여 작성되었습니다. 그러나 이 자습서는 Orange Pi, ODROID 등 .NET을 지원하는 Linux 기반 SBC에 사용할 수 있습니다.
참고
많은 LCD 문자 디스플레이 제조업체가 있습니다. 대부분의 디자인은 동일하며 제조업체에서 기능을 변경하면 안 됩니다. 참조용으로 제공되는 이 자습서는 SunFounder LCD2004를 사용하여 개발되었습니다.
SBC 준비
SBC가 다음 서비스를 지원하도록 구성되어 있는지 확인합니다.
- SSH
- I2C
많은 디바이스의 경우 추가 구성이 필요하지 않습니다. Raspberry Pi의 경우 명령을 사용합니다 raspi-config
.
raspi-config
에 관한 자세한 내용은 Raspberry Pi 설명서를 참조하세요.
하드웨어 준비
점퍼 와이어를 사용하여 다음과 같이 I2C GPIO 확장기에서 4개의 핀을 Raspberry Pi에 연결합니다.
- GND-접지
- VCC 5V
- SDA-SDA(GPIO 2)
- SCL-SCL(GPIO 3)
필요한 경우 다음 그림을 참조하세요.
I2C 인터페이스(디스플레이 뒷면) | Raspberry Pi GPIO |
---|---|
Raspberry Pi Foundation이 제공한 이미지. |
팁
GPIO 헤더에 대한 연결을 간소화하기 위해 브레드보드와 함께 GPIO 브레이크아웃 보드를 사용하는 것이 좋습니다.
앱 만들기
선호하는 개발 환경에서 다음 단계를 완료합니다.
.NET CLI 또는 Visual Studio 중 하나를 사용하여 새 .NET 콘솔 앱을 만듭니다. 이름을 LcdTutorial로 지정합니다.
dotnet new console -o LcdTutorial cd LcdTutorial
Iot.Device.Bindings 패키지를 프로젝트에 추가합니다. 프로젝트 디렉터리 또는 Visual Studio에서 .NET CLI를 사용합니다.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Program.cs의 내용을 다음 코드로 바꿉니다.
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); }
위의 코드에서
using 선언은
I2cDevice.Create
를 호출하고busId
및deviceAddress
매개 변수를 통해 새I2cConnectionSettings
를 전달하여I2cDevice
인스턴스를 만듭니다. 이것은I2cDevice
I2C 버스를 나타냅니다.using
선언은 개체가 삭제되고 하드웨어 리소스가 제대로 해제되었는지 확인합니다.경고
GPIO 확장기의 디바이스 주소는 제조업체에서 사용하는 칩에 따라 다릅니다. PCF8574가 설치된 GPIO 확장기는 주소
0x27
을 사용하지만 PCF8574A 칩을 사용하는 GPIO 확장기는0x3F
를 사용합니다. LCD 설명서를 참조하세요.또 다른
using
선언은Pcf8574
인스턴스를 만들고I2cDevice
를 생성자에 전달합니다. 해당 인스턴스는 GPIO 확장기를 나타냅니다.또 다른
using
선언은Lcd2004
인스턴스를 만들어 디스플레이를 나타냅니다. 여러 매개 변수가 GPIO 확장기와 통신하는 데 사용할 설정을 설명하는 생성자에 전달됩니다. GPIO 확장기는controller
매개 변수로 전달됩니다.while
루프는 무기한으로 실행됩니다. 반복될 때마다:- 디스플레이를 지웁니다.
- 커서 위치를 현재 줄의 첫 번째 위치로 설정합니다.
- 현재 커서 위치에서 디스플레이에 현재 시간을 씁니다.
- 현재 줄 카운터를 반복합니다.
- 1,000밀리초 동안 일시 중단합니다.
앱을 빌드합니다. .NET CLI를 사용하는 경우를
dotnet build
를 실행합니다. Visual Studio에서 빌드하려면 Ctrl+Shift+B를 누릅니다.자체 포함 앱으로 SBC에 앱을 배포합니다. 자세한 내용은 Raspberry Pi에 .NET 앱 배포를 참조하세요.
chmod +x
를 사용하여 실행 파일 ‘실행’ 권한을 부여해야 합니다.배포 디렉터리로 전환하고 실행 파일을 실행하여 Raspberry Pi에서 앱을 실행합니다.
./LcdTutorial
현재 시간이 각 줄에 표시될 때 LCD 문자 디스플레이를 관찰합니다.
팁
디스플레이가 켜져 있지만 텍스트가 표시되지 않으면 디스플레이 뒷면에서 대비 다이얼을 조정해 보세요.
Ctrl+C를 눌러 프로그램을 종료합니다.
축하합니다! I2C 및 GPIO 확장기를 사용하여 LCD에 텍스트를 표시했습니다.
소스 코드 가져오기
이 자습서의 소스는 GitHub에서 제공됩니다.
다음 단계
.NET