Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cree animaciones personalizadas en pantallas LCD de 16x2

Componentes y suministros

Arduino UNO
Cualquier placa Arduino.
× 1
LCD estándar Adafruit - 16x2 blanco sobre azul
Cualquier pantalla LCD de tamaño 16x2 que sea compatible con Hitachi HD44780 funcionará aquí.
× 1
Resistencia 220 ohmios
Cualquier resistencia en el rango 220 - 1k Ohm. Un valor mayor atenuará más la pantalla.
× 1

Aplicaciones y servicios en línea

Arduino IDE
Generador de glifos personalizado

Acerca de este proyecto

La biblioteca LiquidCrystal facilita el uso de LCD con Arduino. Una función particularmente interesante de esa biblioteca es la función createChar ():puede crear glifos (caracteres) personalizados, cada uno descrito por una matriz de ocho bytes, uno para cada fila. Los cinco bits menos significativos de cada byte determinan los píxeles de esa fila. Escribir bytes a mano para crear arte no es exactamente el proceso ideal de un artista, así que he hecho una herramienta web en el que puede dibujar los glifos y el código se genera para usted .

En este artículo, mostraré cómo crear animaciones personalizadas con solo una placa Arduino y una pantalla LCD, que puede usar para crear una gran cantidad de proyectos:puede hacer un juego, una historia corta o un video musical, o decorar un panel de estado.

Conexión de la pantalla LCD al Arduino

Conecte la pantalla LCD al Arduino; según el modelo de su pantalla, es posible que diferentes conexiones funcionen mejor. Para una de mis pantallas, el esquema a continuación funcionó bien, pero para otra, tuve que usar un potenciómetro (como en el tutorial debajo de este enlace) y ajustar el valor de la resistencia para obtener el mejor contraste.

Vea la simulación en TinkerCad en este enlace.

Creando arte

Vaya a la herramienta en https://tusindfryd.github.io/screenduino/ y cree su arte. Se pueden usar hasta 8 secciones a la vez, por lo que si no puede seleccionar un nuevo cuadrado, asegúrese de no estar usando 8 secciones.

Generando el código

Cuando haya terminado con su primera imagen, desmarque el caja "solo el función " . Copie el código al portapapeles y cárguelo en su Arduino. En este punto, debería ver su imagen en la pantalla LCD.

Hacer más marcos

Asegúrate de que tu código esté guardado. Ahora puede crear el segundo fotograma. Solo dibuja otra imagen. Cuando haya terminado, verifique el caja "solo el función " . Copie la función y péguela al final de su código. Cambie el nombre de la nueva función a otra, como image01 () , para que pueda realizar un seguimiento. Ahora deberá mover la llamada a image () desde setup () función al loop () función, agregue un retraso, llame a image01 () y agregue un retraso nuevamente. Considere cambiar el nombre de image () a image00 () por consistencia. Su loop () La función debería verse así:

  void loop () {image00 (); retraso (250); image01 (); retraso (250);}  

Sube el boceto a tu Arduino. Intente agregar más fotogramas o cambiar el tiempo de retraso.

Código

  • Animación de la metamorfosis de la mariposa
Animación de la metamorfosis de la mariposa Arduino
Este es un código de ejemplo (el código detrás de la animación de la metamorfosis de la mariposa del gif).
 / * animación de la metamorfosis de la mariposa 2021 ~ por tusindfryd este código es de dominio 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 (); retraso (250); image01 (); retraso (250); image02 (); retraso (250); image03 (); retraso (700); image04 (); retraso (250); image05 (); retraso (250); image06 (); retraso (700); image07 (); delay (1250);} void image00 () {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, imagen 22); lcd.createChar (1, imagen23); lcd.createChar (2, imagen07); lcd.createChar (3, imagen08); lcd.createChar (4, imagen09); 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));} vacío 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, imagen 22); lcd.createChar (1, imagen23); lcd.createChar (2, imagen07); lcd.createChar (3, imagen08); lcd.createChar (4, imagen09); lcd.createChar (5, imagen06); 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));} vacío 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, imagen 22); lcd.createChar (1, imagen23); lcd.createChar (2, imagen07); lcd.createChar (3, imagen08); lcd.createChar (4, imagen09); 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));} vacío 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, imagen 22); lcd.createChar (1, imagen23); lcd.createChar (2, imagen07); lcd.createChar (3, imagen08); lcd.createChar (4, imagen09); lcd.createChar (5, imagen24); 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));} vacío 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}; byte image25 [8] ={B00000, B00000, B00000, B10000, B10000, B00000, B00000, B00000}; lcd.createChar (0, imagen 22); lcd.createChar (1, imagen23); lcd.createChar (2, imagen07); lcd.createChar (3, imagen08); lcd.createChar (4, imagen09); lcd.createChar (5, imagen24); lcd.createChar (6, imagen 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));} vacío image05 () {lcd.clear (); byte image24 [8] ={B01010, B10100, B01011, B10101, B11010, B10101, B11010, B01110}; byte image25 [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, imagen24); lcd.createChar (1, imagen25); lcd.createChar (2, imagen23); lcd.createChar (3, imagen07); lcd.createChar (4, imagen08); 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));} vacío 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}; byte image25 [8] ={B10000, B00000, B00000, B00000, B00000, B00000, B00000, B00000}; lcd.createChar (0, imagen08); lcd.createChar (1, imagen07); lcd.createChar (2, imagen09); lcd.createChar (3, imagen24); lcd.createChar (4, imagen 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));} vacío 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, imagen24); lcd.createChar (1, imagen08); lcd.createChar (2, imagen07); lcd.createChar (3, imagen09); 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


Proceso de manufactura

  1. CDS:pantallas LCD transparentes en 3D
  2. Panel LCD con Arduino para Flight Simulator
  3. Animación LCD y juegos
  4. ¡Visualización de una imagen en una pantalla LCD TFT con Arduino UNO!
  5. Osciloscopio DIY de 10Hz-50kHz en pantalla LCD de 128x64
  6. Cómo crear un sitio web comunicando Arduino usando PHP
  7. Monitor de frecuencia cardíaca MAX 30102 en LCD 16x2
  8. Estación meteorológica Arduino
  9. Menú Arduino en un Nokia 5110 Lcd con un codificador rotatorio
  10. Reloj despertador simple con DS1302 RTC
  11. Prototipo de PCB:5 pasos para crear una PCB personalizada