Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os monitores de caracteres LCD são úteis para exibir informações sem a necessidade de um monitor externo. Monitores de caracteres LCD comuns podem ser conectados diretamente aos pinos GPIO, mas tal abordagem requer o uso de até 10 pinos GPIO. Para cenários que exigem conexão com uma combinação de dispositivos, dedicar uma grande parte do cabeçalho GPIO a um display de caracteres é frequentemente impraticável.
Muitos fabricantes vendem ecrãs de caracteres LCD 20x4 com um expansor GPIO integrado. O visor de caracteres se conecta diretamente ao expansor GPIO, que então se conecta ao Raspberry Pi através do protocolo serial Inter-Integrated Circuit (I2C).
Neste tópico, irá usar o .NET para apresentar texto num visor de caracteres LCD, utilizando um expansor I2C GPIO.
Pré-requisitos
- Computador de placa única (SBC) baseado em ARM (ARMv7 ou superior)
- Ecrã LCD de caracteres 20x4 com interface I2C
- Fios de ligação
- Breadboard (opcional/recomendado)
- Placa de expansão Raspberry Pi GPIO (opcional/recomendado)
- .NET SDK 8 ou posterior
Observação
Este tutorial foi escrito assumindo que o dispositivo alvo é o Raspberry Pi. No entanto, este tutorial pode ser usado para qualquer SBC baseado em Linux que suporte .NET, como Orange Pi, ODROID e muito mais.
Observação
Existem muitos fabricantes de monitores de caracteres LCD. A maioria dos designs são idênticos, e o fabricante não deve fazer qualquer diferença para a funcionalidade. Para referência, este tutorial foi desenvolvido com o SunFounder LCD2004.
Preparar o SBC
Certifique-se de que o SBC está configurado para suportar os seguintes serviços:
- CHS
- I2C
Para muitos dispositivos, nenhuma configuração adicional é necessária. Para o Raspberry Pi, use o raspi-config
comando. Para obter mais informações sobre o raspi-config
, consulte a documentação do Raspberry Pi.
Preparar o hardware
Use fios de jumper para conectar os quatro pinos do expansor I2C GPIO ao Raspberry Pi da seguinte maneira:
- GND à terra
- VCC para 5V
- SDA para SDA (GPIO 2)
- SCL para SCL (GPIO 3)
Consulte as seguintes figuras, conforme necessário:
Interface I2C (parte traseira do display) | Raspberry Pi GPIO |
---|---|
![]() |
![]() Imagem cedida pela Raspberry Pi Foundation. |
Sugestão
Recomenda-se uma placa de breakout GPIO em conjunto com uma placa de ensaio para agilizar as conexões ao cabeçalho GPIO.
Criar a aplicação
Conclua as seguintes etapas em seu ambiente de desenvolvimento preferido:
Crie um novo aplicativo de console .NET usando a CLI do .NET ou o Visual Studio. Nomeie-o LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Adicione o pacote Iot.Device.Bindings ao projeto. Utilize o CLI do .NET no diretório do projeto ou o Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*
Substitua o conteúdo do ficheiro Program.cs pelo seguinte código:
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); }
No código anterior:
Uma declaração using cria uma instância de
I2cDevice
chamandoI2cDevice.Create
e passando uma novaI2cConnectionSettings
com osbusId
parâmetros edeviceAddress
. EsteI2cDevice
representa o barramento I2C. Ausing
declaração garante que o objeto seja descartado e que os recursos de hardware sejam liberados corretamente.Advertência
O endereço do dispositivo para o expansor GPIO depende do chip usado pelo fabricante. Os expansores GPIO equipados com um PCF8574 usam o endereço
0x27
, enquanto aqueles que usam chips PCF8574A usam0x3F
. Consulte a documentação do seu LCD.Outra
using
declaração cria uma instância dePcf8574
e passa oI2cDevice
para o construtor. Esta instância representa o expansor GPIO.Outra
using
declaração cria uma instância deLcd2004
para representar a exibição. Vários parâmetros são passados para o construtor descrevendo as configurações a serem usadas para se comunicar com o expansor GPIO. O expansor GPIO é passado como ocontroller
parâmetro.Um
while
loop é executado indefinidamente. Cada iteração:- Limpa o ecrã.
- Define a posição do cursor para a primeira posição na linha atual.
- Grava a hora atual na exibição na posição atual do cursor.
- Itera o contador de linha atual.
- Dorme 1000 ms.
Crie o aplicativo. Se estiver usando a CLI do .NET, execute
dotnet build
. Para criar no Visual Studio, pressione Ctrl+Shift+B.Implante o aplicativo no SBC como um aplicativo independente. Para obter instruções, consulte Implantar aplicativos .NET no Raspberry Pi. Certifique-se de dar permissão de execução ao ficheiro executável usando
chmod +x
.Execute a aplicação no Raspberry Pi mudando para o diretório de implantação e executando o executável.
./LcdTutorial
Observe o visor de caracteres LCD enquanto a hora atual é exibida em cada linha.
Sugestão
Se o ecrã estiver aceso mas não vir qualquer texto, tente ajustar o mostrador de contraste na parte traseira do ecrã.
Encerre o programa pressionando Ctrl+C.
Parabéns! Você exibiu texto num LCD usando um I2C e um expansor GPIO!
Obter o código-fonte
A fonte deste tutorial está disponível no GitHub.