Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Crie animações personalizadas em monitores LCD 16x2

Componentes e suprimentos

Arduino UNO
Qualquer placa Arduino.
× 1
Adafruit LCD padrão - 16x2 branco em azul
Qualquer monitor LCD de tamanho 16x2 compatível com Hitachi HD44780 funcionará aqui.
× 1
Resistor 220 ohm
Qualquer resistor na faixa de 220 - 1k Ohm. Um valor maior escurecerá mais a tela.
× 1

Aplicativos e serviços online

Arduino IDE
Custom Glyph Generator

Sobre este projeto


A biblioteca LiquidCrystal facilita o uso de LCDs com o Arduino. Uma função particularmente interessante dessa biblioteca é a função createChar ():você pode criar glifos (caracteres) personalizados, cada um descrito por um array de oito bytes, um para cada linha. Os cinco bits menos significativos de cada byte determinam os pixels nessa linha. Escrever bytes à mão para criar arte não é exatamente o processo ideal para um artista, então eu fiz uma ferramenta da web em que você pode desenhar os glifos e o código é gerado para você .

Neste artigo, vou mostrar como criar animações personalizadas tendo apenas uma placa Arduino e um LCD - que você pode usar para criar uma série de projetos:você pode fazer um jogo, ou um conto, ou um videoclipe, ou decorar um painel de status.





Conectando o LCD ao Arduino


Conecte o LCD ao Arduino - dependendo do modelo da sua tela, diferentes conexões podem funcionar melhor. Para uma das minhas telas, o esquema abaixo funcionou bem - mas para outra, tive que usar um potenciômetro (como no tutorial deste link) e ajustar o valor do resistor para obter o melhor contraste.

Veja a simulação no TinkerCad neste link.





Criação de arte


Acesse a ferramenta em https://tusindfryd.github.io/screenduino/ e crie sua arte. Até 8 seções podem ser usadas de uma vez, então se você não puder selecionar um novo quadrado, certifique-se de não usar 8 seções já.





Gerando o Código


Quando terminar com sua primeira imagem, desmarque o caixa "apenas o função " . Copie o código para a área de transferência e carregue-o no seu Arduino. Neste ponto, você deve ver sua imagem no LCD.





Criação de mais molduras


Certifique-se de que seu código seja salvo. Agora você pode criar o segundo quadro. Basta desenhar outra imagem. Quando terminar, verifique o caixa "apenas o função " . Copie a função e cole-a no final do seu código. Renomeie a nova função para outra coisa - como image01 () , para que você possa acompanhar. Agora você precisará mover a chamada para image () em setup () função para o loop () função, adicionar um atraso, chamar image01 () e adicione um atraso novamente. Considere renomear image () para image00 () para consistência. Seu loop () função deve ser semelhante a esta:
  void loop () {image00 (); atraso (250); image01 (); atraso (250);}  

Carregue o esboço em seu Arduino. Experimente adicionar mais frames ou alterar o tempo de atraso.


Código

  • Animação de metamorfose de borboleta
Animação de metamorfose de borboleta Arduino
Este é um exemplo de código (o código por trás da animação de metamorfose de borboleta do gif).
 / * animação de metamorfose de borboleta 2021 ~ por tusindfryd este código está em domínio público * / # include  LiquidCrystal lcd (12, 11 , 5, 4, 3, 2); // RS, E, D4, D5, D6, D7void setup () {lcd.begin (16, 2);} void loop () {image00 (); atraso (250); image01 (); atraso (250); image02 (); atraso (250); image03 (); atraso (700); image04 (); atraso (250); image05 (); atraso (250); image06 (); atraso (700); image07 (); atraso (1250);} imagem vazia00 () {lcd.clear (); byte image22 [8] ={B00110, B01101, B11011, B10011, B00111, B01111, B01111, B11111}; byte image23 [8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar (0, imagem22); lcd.createChar (1, imagem 23); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 08); lcd.createChar (4, imagem 09); lcd.setCursor (5, 1); lcd.write (byte (0)); lcd.setCursor (6, 1); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (7, 0); lcd.write (byte (3)); lcd.setCursor (8, 0); lcd.write (byte (4));} void image01 () {lcd.clear (); byte image22 [8] ={B00110, B00101, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23 [8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B11001, B10111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image06 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B00011}; lcd.createChar (0, imagem22); lcd.createChar (1, imagem 23); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 08); lcd.createChar (4, imagem 09); lcd.createChar (5, imagem06); lcd.setCursor (5, 1); lcd.write (byte (0)); lcd.setCursor (6, 1); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (7, 0); lcd.write (byte (3)); lcd.setCursor (8, 0); lcd.write (byte (4)); lcd.setCursor (5, 0); lcd.write (byte (5));} void image02 () {lcd.clear (); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23 [8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00001, B00111, B00100, B11001, B10111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11000}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; lcd.createChar (0, imagem22); lcd.createChar (1, imagem23); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 08); lcd.createChar (4, imagem 09); lcd.setCursor (5, 1); lcd.write (byte (0)); lcd.setCursor (6, 1); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (7, 0); lcd.write (byte (3)); lcd.setCursor (8, 0); lcd.write (byte (4));} void image03 () {lcd.clear (); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23 [8] ={B01111, B11110, B11100, B11000, B11000, B10000, B10000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24 [8] ={B00010, B00111, B00111, B00111, B00111, B00111, B00010, B00000}; lcd.createChar (0, imagem22); lcd.createChar (1, imagem23); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 08); lcd.createChar (4, imagem 09); lcd.createChar (5, imagem 24); lcd.setCursor (5, 1); lcd.write (byte (0)); lcd.setCursor (6, 1); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (7, 0); lcd.write (byte (3)); lcd.setCursor (8, 0); lcd.write (byte (4)); lcd.setCursor (7, 1); lcd.write (byte (5));} void image04 () {lcd.clear (); byte image22 [8] ={B00000, B00001, B00011, B00011, B00111, B01111, B01111, B11111}; byte image23 [8] ={B01111, B11110, B11100, B11000, B11000, B10001, B10000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00111}; byte image08 [8] ={B00000, B01000, B10000, B10000, B10000, B11111, B11111, B11010}; byte image09 [8] ={B00000, B00000, B00000, B00000, B00000, B11000, B11000, B00100}; byte image24 [8] ={B00010, B00100, B01011, B10101, B11010, B10101, B11010, B01110}; imagem de byte 25 [8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar (0, imagem22); lcd.createChar (1, imagem23); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 08); lcd.createChar (4, imagem 09); lcd.createChar (5, imagem 24); lcd.createChar (6, imagem 25); lcd.setCursor (5, 1); lcd.write (byte (0)); lcd.setCursor (6, 1); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (7, 0); lcd.write (byte (3)); lcd.setCursor (8, 0); lcd.write (byte (4)); lcd.setCursor (7, 1); lcd.write (byte (5)); lcd.setCursor (8, 1); lcd.write (byte (6));} void image05 () {lcd.clear (); byte image24 [8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; imagem de byte 25 [8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; byte image23 [8] ={B01101, B01010, B01101, B00111, B00000, B00000, B00000, B00000}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00001, B00011}; byte image08 [8] ={B00000, B00000, B00000, B00000, B00000, B00000, B00000, B10000}; lcd.createChar (0, imagem24); lcd.createChar (1, imagem 25); lcd.createChar (2, imagem 23); lcd.createChar (3, imagem 07); lcd.createChar (4, imagem 08); lcd.setCursor (7, 1); lcd.write (byte (0)); lcd.setCursor (8, 1); lcd.write (byte (1)); lcd.setCursor (6, 1); lcd.write (byte (2)); lcd.setCursor (6, 0); lcd.write (byte (3)); lcd.setCursor (7, 0); lcd.write (byte (4));} void image06 () {lcd.clear (); byte image08 [8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09 [8] ={B00000, B00000, B10000, B11000, B00000, B00000, B11000, B00100}; byte image24 [8] ={B00100, B00100, B00011, B00000, B00000, B00000, B00000, B00000}; imagem de byte 25 [8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar (0, imagem 08); lcd.createChar (1, imagem 07); lcd.createChar (2, imagem 09); lcd.createChar (3, imagem 24); lcd.createChar (4, imagem 25); lcd.setCursor (7, 0); lcd.write (byte (0)); lcd.setCursor (6, 0); lcd.write (byte (1)); lcd.setCursor (8, 0); lcd.write (byte (2)); lcd.setCursor (7, 1); lcd.write (byte (3)); lcd.setCursor (8, 1); lcd.write (byte (4));} void image07 () {lcd.clear (); byte image24 [8] ={B10101, B01110, B01110, B00100, B10101, B01110, B00100, B11111}; byte image08 [8] ={B00000, B00100, B01010, B01010, B10001, B00011, B00110, B01100}; byte image07 [8] ={B00000, B00000, B00000, B00000, B00001, B00010, B00010, B00001}; byte image09 [8] ={B00000, B00000, B10000, B11000, B00000, B00000, B00000, B00000}; lcd.createChar (0, imagem24); lcd.createChar (1, imagem 08); lcd.createChar (2, imagem 07); lcd.createChar (3, imagem 09); lcd.setCursor (7, 1); lcd.write (byte (0)); lcd.setCursor (7, 0); lcd.write (byte (1)); lcd.setCursor (6, 0); lcd.write (byte (2)); lcd.setCursor (8, 0); lcd.write (byte (3));} 

Esquemas


Processo de manufatura

  1. CDS:telas LCD transparentes 3D
  2. Painel LCD com Arduino para o simulador de vôo
  3. Animação de LCD e jogos
  4. Exibindo uma imagem em uma tela LCD TFT com o Arduino UNO!
  5. Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64
  6. Como criar um site de comunicação do Arduino usando PHP
  7. Monitor de freqüência cardíaca MAX 30102 em LCD 16x2
  8. Estação meteorológica Arduino
  9. Despertador simples com DS1302 RTC
  10. Processo de protótipo de PCB:5 etapas para criar um PCB personalizado