Índice:

LCD COG para um Arduino Nano: 3 etapas
LCD COG para um Arduino Nano: 3 etapas

Vídeo: LCD COG para um Arduino Nano: 3 etapas

Vídeo: LCD COG para um Arduino Nano: 3 etapas
Vídeo: How to Make PLC LCD HMI || FLProg 2024, Novembro
Anonim
LCD COG para um Arduino Nano
LCD COG para um Arduino Nano

Este Instructable descreve como usar um LCD COG com um Arduino Nano.

Os monitores LCD COG são baratos, mas são um pouco mais difíceis de interface. (COG significa "Chip On Glass".) O que estou usando contém um chip de driver UC1701. Requer apenas 4 pinos do Arduino: SPI-clock, SPI-data, seleção de chip e comando / dados.

O UC1701 é controlado pelo barramento SPI e funciona a 3,3V.

Aqui eu descrevo como usá-lo com um Arduino Nano. Ele também deve funcionar com um Arduino Mini ou Uno - vou testá-lo em breve.

Este é meu primeiro projeto Arduino e não escrevo C há décadas, então se eu estiver cometendo algum erro óbvio, por favor, me avise.

Etapa 1: Construindo o Hardware

Construindo o Hardware
Construindo o Hardware
Construindo o Hardware
Construindo o Hardware
Construindo o Hardware
Construindo o Hardware

Compre um LCD COG que contenha um chip UC1701. Ele deve usar o barramento SPI em vez de uma interface paralela. Ele terá cerca de 14 pinos que serão rotulados com nomes como os listados abaixo. (Você não quer uma interface paralela com muito mais pinos rotulados D0, D1, D2 …)

O que eu comprei é: https://www.ebay.co.uk/itm/132138390168 Ou você pode pesquisar no eBay por "12864 LCD COG".

Escolha um que tenha uma cauda bastante larga com pinos espaçados em 1,27 mm - os pinos mais finos serão difíceis de soldar. Certifique-se de que ele tenha um chip UC1701. Observe como na sexta imagem na página do ebay, diz "CONECTOR: COG / UC1701".

A tela é transparente e é difícil saber qual é a frente e o verso. Estude minhas fotos com cuidado. Observe onde os pinos 1 e 14 estão - eles estão marcados na cauda.

A cauda flexível é muito fácil de soldar, mas requer um adaptador para que você possa conectá-la a uma placa de ensaio. Eu comprei: https://www.ebay.co.uk/itm/132166865767 Ou você pode pesquisar no eBay por "Adaptador Smd SSOP28 DIP28".

O adaptador usa um chip SOP de 28 pinos de um lado ou um chip SSOP de 28 pinos do outro lado. Um chip SOP tem um espaçamento entre pinos de 0,05 (1,27 mm), que é o mesmo que a cauda do LCD.

Você também precisará de alguns pinos de cabeçalho. Sempre que compro um Arduino ou outro módulo, ele vem com mais pinos de cabeçalho do que o necessário, então provavelmente você já tem alguns. Caso contrário, pesquise no eBay por "pinos de cabeçalho de 2,54 mm".

Solde 14 dos pinos do cabeçalho no adaptador. Não os empurre completamente - é melhor se a parte de trás do adaptador for plana. Coloque-o plano em sua bancada para que os pinos não possam ser empurrados muito para dentro dos orifícios. Certifique-se de que os pinos estejam no lado SOP da placa (ou seja, o chip maior).

As almofadas da cauda estão em uma espécie de janela. Estanho ambos os lados com solda. Estanho as almofadas do adaptador. Segure a ponta do adaptador no lugar e toque em cada almofada com o ferro de solda (você precisará de uma ponta bem fina).

Amarre um pouco de linha nos orifícios do adaptador para atuar como alívio de tensão. (Eu usei "fio de transformador").

Se você soldar do lado errado, não tente dessoldar a cauda. Retire os pinos um de cada vez e mova-os para o outro lado do tabuleiro. (Sim, cometi esse erro e re-soldar a cauda, por isso está um pouco bagunçado na foto.)

Etapa 2: Conectando-se ao Arduino

Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino

Esta seção explica como se conectar a um Arduino Nano. Será muito semelhante para um Mini ou Uno, mas ainda não tentei.

Estude o diagrama do circuito.

Um Arduino Nano conectado a uma porta USB funciona a 5V. O LCD funciona a 3,3V. Portanto, você precisa alimentar o LCD com o pino 3V3 do Nano e reduzir a tensão em cada pino de controle de 5V para 3,3V.

A pinagem do LCD é:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0 +
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS é Chip-Select. É puxado para baixo para selecionar (habilitar) o chip UC1701. (CS pode ser denominado CS0 ou En ou semelhante.)

RST é reiniciado. É puxado para baixo para reiniciar o chip. (RST pode ser chamado de Reset.)

CD é comando / dados. Ele é puxado para baixo ao enviar comandos ao chip por meio do SPI. É alto ao enviar dados. (CD pode ser chamado de A0.)

CLK e SDA são os pinos do barramento SPI. (SDA pode ser denominado SPI-Data. CLK pode ser SCL ou SPI-Clock.)

VB0 + e VB0- são usados pela bomba de carga interna do UC1701. A bomba de carga gera as tensões ímpares necessárias para o LCD. Conecte um capacitor de 100n entre VB0 + e VB0-. A documentação do UC1701 recomenda 2uF, mas não pude ver nenhuma diferença com este LCD em particular.

Se o seu LCD tiver pinos VB1 + e VB1-, conecte também um capacitor de 100n entre eles. (Se o seu LCD tiver um pino VLCD, você pode tentar conectar um capacitor de 100n entre o VLCD e o Gnd. Não fez diferença com o meu LCD.)

Conecte o LCD ao Nano da seguinte maneira:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" significa usar um divisor de potencial para reduzir a tensão. Se o Arduino estiver funcionando a 3V3 de uma fonte independente, você não precisará dos resistores.)

3,3 V são produzidos pelo Nano e podem fornecer corrente suficiente para o LCD. (O display desenha em torno de 250uA.)

5 V também é emitido pelo Nano e pode ser usado para alimentar a luz de fundo. Limite a corrente à luz de fundo com um resistor de 100 ohm.

Se estiver com falta de pinos no Nano, você pode conectar o RST ao 3V3 - então você pode usar o D6 para outra coisa. O U1701 pode ser reinicializado no software por um comando no SPI. Nunca tive problemas com isso, mas se você estiver usando seu próprio circuito em um ambiente barulhento, pode ser melhor usar uma reinicialização de hardware.

Etapa 3: Software

Programas
Programas

Em teoria, você pode conduzir o UC1701 da biblioteca U8g2 (ou Ucglib ou outras bibliotecas disponíveis). Lutei por dias para fazê-lo funcionar e falhei. A biblioteca U8g2 é um monstro porque pode operar uma grande variedade de chips e é muito difícil seguir o código. Então desisti e escrevi minha própria biblioteca menor. Ele ocupa muito menos espaço no Arduino (aproximadamente 3400 bytes mais fontes).

Você pode baixar minha biblioteca aqui (o botão Baixar nesta página). Um esboço de amostra e um guia do usuário estão incluídos. A página da web https://www.arduino.cc/en/Guide/Libraries descreve como importar uma biblioteca; vá para a seção "Importando uma biblioteca.zip".

Inicialize o LCD com

UC1701Begin ();

O UC1701Begin pode usar parâmetros para alterar os pinos ou ignorar o pino RST. A biblioteca usa apenas SPI de hardware (não é fornecido um SPI de software). A exibição pode ser invertida nos eixos xey. Isso é útil se você deseja montar o LCD em uma orientação diferente.

Vários procedimentos foram duplicados da biblioteca U8g2:

  • Desenhar linha
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Alguns procedimentos são ligeiramente diferentes:

  • void DrawChar (uint8_t c, fonte da palavra);
  • void DrawString (char * s, fonte da palavra);
  • void DrawInt (int i, fonte da palavra);

Os procedimentos de desenho de strings são passados ao índice de uma fonte. As fontes são declaradas na memória flash do Arduino para que não ocupem a preciosa SRAM. Três fontes são fornecidas (pequeno, médio e grande). Eles só estão vinculados e ocupam memória flash se você usá-los (aproximadamente 500 a 2.000 bytes cada).

"Color" é tratado de forma diferente da biblioteca U8g2. Quando o LCD é apagado, ele apresenta um fundo escuro. Se MakeMark (uma variável global) for verdadeiro, o desenho é feito em branco. Se MakeMark for falso, o desenho é feito no escuro.

Alguns procedimentos são exclusivos do UC1701:

SetInverted desenha em preto-sobre-branco em vez de branco-sobre-preto.

void SetInverted (bool inv);

O brilho e o contraste do UC1701 são definidos por:

  • void SetContrast (valor uint8_t); // sugerido é 14
  • void SetResistor (valor uint8_t); // sugerido é 7

Eles trabalham juntos de uma forma bastante insatisfatória.

SetEnabled desliga o LCD:

void SetEnabled (bool en);

O display leva 4uA durante o sono. Você também deve desligar a luz de fundo - tire-a de um pino do Nano. Após a reativação, o UC1701 terá sido reinicializado; a tela é limpa e o contraste e o resistor serão redefinidos para seus valores padrão.

Portanto, em conclusão, as telas COG são baratas e de tamanho decente. Eles são fáceis de conectar a um Arduino.

Recomendado: