Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As exibições de caracteres LCD são úteis para exibir informações sem a necessidade de um monitor externo. Exibições comuns de caracteres LCD podem ser conectadas diretamente aos pinos GPIO, mas essa abordagem requer o uso de até 10 pinos GPIO. Para cenários que exigem a conexão com uma combinação de dispositivos, dedicar grande parte do cabeçalho GPIO a um display de caracteres pode ser frequentemente impraticável.
Muitos fabricantes vendem displays de caracteres LCD 20x4 com um expansor de GPIO integrado. O display de caracteres se conecta diretamente ao expansor GPIO, que se conecta ao Raspberry Pi por meio do protocolo serial do Circuito Inter-Integrado (I2C).
Neste tópico, você usará .NET para exibir texto em um display de caracteres LCD usando um expansor GPIO I2C.
Pré-requisitos
- Computador de placa única baseado em ARM (ARMv7 ou superior) (SBC)
- Display de Caracteres LCD 20x4 com interface I2C
- Fios de jumper
- Placa de ensaio (opcional/recomendado)
- Placa de expansão GPIO Raspberry Pi (opcional/recomendado)
- .NET SDK 10 ou posterior
Observação
Este tutorial é escrito supondo que o dispositivo de destino seja Raspberry Pi. No entanto, este tutorial pode ser usado para qualquer SBC baseado em Linux que dê suporte a .NET, como Orange Pi, ODROID e muito mais.
Observação
Há muitos fabricantes de displays de caracteres LCD. A maioria dos designs é idêntica e o fabricante não deve fazer nenhuma diferença para a funcionalidade. Para referência, este tutorial foi desenvolvido com o SunFounder LCD2004.
Preparar o SBC
Verifique se o SBC está configurado para dar suporte aos seguintes serviços:
- SSH
- I2C
Para muitos dispositivos, nenhuma configuração adicional é necessária. Para Raspberry Pi, use o raspi-config comando. Para obter mais informações sobre raspi-config, consulte a documentação do Raspberry Pi.
Preparar o hardware
Use fios de jumper para conectar os quatro pinos no expansor I2C GPIO ao Raspberry Pi da seguinte maneira:
- GND para o chão
- VCC até 5V
- SDA para SDA (GPIO 2)
- SCL para SCL (GPIO 3)
Consulte os seguintes números conforme necessário:
| Interface I2C (parte traseira da tela) | Raspberry Pi GPIO |
|---|---|
|
|
Imagem cortesia Raspberry Pi Foundation. |
Dica
Uma placa de expansão GPIO em conjunto com um protoboard é recomendada para simplificar as conexões com o conector GPIO.
Criar o aplicativo
Conclua as seguintes etapas em seu ambiente de desenvolvimento preferencial:
Crie um novo aplicativo de console .NET usando a CLI .NET ou Visual Studio. Nomeie-o LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorialAdicione o pacote Iot.Device.Bindings ao projeto. Use .NET CLI do diretório do projeto ou Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Substitua o conteúdo do 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 apresentado:
Uma declaração de uso cria uma instância de
I2cDevicechamandoI2cDevice.Createe passando um novoI2cConnectionSettingscom os parâmetrosbusIdedeviceAddress. IssoI2cDevicerepresenta o ônibus I2C. Ausingdeclaração garante que o objeto seja descartado e os recursos de hardware sejam liberados corretamente.Aviso
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 LCD.Outra declaração
usingcria uma instância dePcf8574e passa oI2cDevicepara o construtor. Essa instância representa o expansor gpio.Outra
usingdeclaração cria uma instância deLcd2004para representar a exibição. Vários parâmetros são passados para o construtor que descreve as configurações a serem usadas para se comunicar com o expansor gpio. O expansor GPIO é passado comocontrollerparâmetro.Um
whileloop é executado indefinidamente. Cada iteração:- Limpa a exibição.
- Define a posição do cursor como a primeira posição na linha atual.
- Grava a hora atual na exibição na posição atual do cursor.
- Itera o contador de linhas atual.
- Espera 1000 ms.
Crie o aplicativo. Se estiver usando a CLI .NET, execute
dotnet build. Para criar em Visual Studio, pressione Ctrl+Shift+B.Implante o aplicativo no SBC como um aplicativo independente. Para obter instruções, consulte Deploy .NET aplicativos para Raspberry Pi. Certifique-se de conceder permissão de execução ao executável usando
chmod +x.Execute o aplicativo no Raspberry Pi acessando o diretório de implantação e executando o executável.
./LcdTutorialObserve a tela de caracteres LCD enquanto a hora atual é exibida em cada linha.
Dica
Se a exibição estiver iluminada, mas você não vir nenhum texto, tente ajustar o mostrador de contraste na parte de trás da exibição.
Encerre o programa pressionando Ctrl+C.
Parabéns! Você exibiu texto em um LCD usando um I2C e um expansor GPIO!
Obter o código-fonte
A origem deste tutorial está disponível em GitHub.