Skip to Content

Interfaz de la pantalla gráfica de 128 x 64 con Arduino

Interfaz de la pantalla gráfica de 128 x 64 con Arduino

Este tutorial le enseñará cómo utilizar una pantalla LCD gráfica con Arduino UNO. El LCD gráfico de 128×64 es una adición versátil a sus proyectos que necesitan una pantalla. 

Puede encontrar las aplicaciones de la pantalla LCD gráfica en quioscos, aplicaciones de medición, dispositivos portátiles de facturación, controladores de HVAC (Calefacción, Ventilación y Aire Acondicionado), SAI, etc. 

Este artículo le mostrará los detalles básicos de los pines (detalles de los conectores) de la placa LCD gráfica de 128×64.

Además, verás un ejemplo de controlador de LCD que maneja el LCD basado en los comandos del Arduino UNO. 

Una vez que entiendas la descripción fundamental de los pines de conexión, verás las conexiones de hardware necesarias para completar un sketch de Arduino para mostrar una imagen en la pantalla LCD.

Al final obtendrá un código de trabajo completo y respuestas a las preguntas más frecuentes sobre el LCD gráfico de 128×64.

Comencemos.

Componentes necesarios para construir un proyecto de Arduino y un LCD gráfico de 128×64

Componentes de hardware 

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

Información básica sobre la pantalla gráfica de 128×64

Este artículo forma parte de nuestra serie sobre los diferentes tipos de pantallas que puedes utilizar con Arduino, así que si estás sopesando las opciones, consulta nuestra guía sobre las mejores pantallas para utilizar con Arduino.

Una pantalla LCD gráfica permite llevar los gráficos a la pantalla. Toda la pantalla está dividida en conjuntos de píxeles estrechamente colocados.

En el caso de 128×64, la pantalla está formada por 128×64 = 8192 píxeles. 

Como se trata de una imagen monocromática, se necesita 1 bit de memoria para almacenar el valor del píxel.

Cada píxel puede ser 1 o 0. Aquí hay un enlace a una placa LCD gráfica de Vishay. 

Esta es la información de la hoja de datos

  • Tipo de pantalla: Gráfico
  • Formato de visualización: 128 x 64 puntos (puntos y píxeles se utilizan indistintamente)
  • Controlador incorporado: Samsung KS 0107/KS 0108 (o equivalente)
  • Ciclo de trabajo: 1/64 
  • Alimentación de + 5 V

La placa LCD anterior contiene el controlador Samsung KS0107 o uno similar. Usted puede encontrar la hoja de datos del controlador de LCD IC - KS0107 IC aquí

El controlador de LCD Solomon Systech SSD1322 es otro ejemplo que puede soportar una LCD gráfica de 1128×64.

El controlador SSD1322 soporta varios modos de comunicación:

  • Interfaz paralela de la MCU serie 6800
  • Interfaz paralela de la MCU serie 8080
  • SPI de cuatro hilos
  • SPI de tres hilos

La diferencia crítica entre las interfaces 6800 y 8080 es la presencia de señales RD y WR dedicadas en el 8080 frente a las señales RD/WR combinadas en las interfaces 6800.

Es posible que te encuentres con una placa diferente con definiciones de pines ligeramente diferentes. Te animo a que busques la hoja de datos del CI controlador del LCD en el módulo.

Es una buena idea comprar el controlador de LCD que menciona el controlador de LCD a bordo.

Entendamos la función de cada pin en el módulo LCD de 128×64.

pin en el módulo LCD de 128x64
Número de pinEtiqueta de la clavijaPin FunciónDescripción de la clavija
1VSSTierraConexión a tierra. Conectar al pin GND del Arduino UNO.
2VDDAlimentaciónSuministre la fuente de alimentación de 5 V aquí. Para la mayoría de los módulos LCD, puedes conectar la línea de 5 V desde el pinout de Arduino
3V0Ajuste del contrasteEl voltaje en este pin define el contraste del LCD. 
4D/I#Datos/InstrucciónEl pin define si las líneas de datos contienen datos o la instrucción. 
5R/W#Lectura/escritura de datosEs una línea de control. Una operación de lectura se indica al poner esta clavija en alto. Una operación de escritura se indica al poner esta clavija en nivel bajo.
6EActivar la señalUna transición de alto a bajo en este pin habilita al controlador de LCD para la comunicación 
7DB0Línea DatabusBit de datos 1
8DB1Línea DatabusBit de datos 2
9DB2Línea DatabusBit de datos 2
10DB3Línea DatabusBit de datos 3
11DB4Línea DatabusBit de datos 4
12DB5Línea DatabusBit de datos 5
13DB6Línea DatabusBit de datos 6
14DB7Línea DatabusBit de datos 7
15CS1Línea de selección de chipSelección de chip CS1
16CS2Línea de selección de chipSelección de chip CS2
17RST#Línea de reinicioPuede restablecer el controlador de la pantalla LCD conduciendo este pin a nivel bajo. 
18VEESalida de tensión negativaVEE y V0 se utilizan para ajustar el contraste
19AÁnodoEs el ánodo del LED utilizado para la retroiluminación. 
20KCátodoEs el cátodo del LED utilizado para la retroiluminación.

Instrucciones paso a paso para conectar una pantalla gráfica a un Arduino

En la siguiente sección se detallan paso a paso los pasos para conectar el Arduino UNO con el módulo LCD gráfico de 128×64. 

¿Cómo conectar la pantalla gráfica de 128×64 al Arduino UNO?

La siguiente sección proporciona un resumen paso a paso para completar la conexión entre el Arduino UNO y la placa LCD gráfica.

¡Empecemos! En este ejemplo de demostración, estoy usando la interfaz SPI soportada por el controlador LCD. 

La interfaz SPI utiliza menos pines. Habrá más pines libres en el Arduino para otros casos de uso. 

El pin GPIO13 en el Arduino es el pin de reloj SPI. El pin "E" de la placa LCD es el pin de reloj. El pin RS de la LCD es el pin de selección de chip.

El pin RW actúa como pin de entrada de datos SPI para el LCD. El pin MOSI del Arduino es el pin 11.

El pin 10 del Arduino es el pin de selección de esclavo SPI.

El pin GPIO13 en el Arduino
Fuente: Circuit.io

Paso 1: Empezar con el módulo LCD gráfico

Comience con el módulo LCD gráfico

Todas las conexiones necesarias están en un lado de la placa LCD. Normalmente, los pines estarán numerados y etiquetados también. Yo siempre me guiaré por las etiquetas. 

Paso 2: Conecte primero el cable de tierra

Conecte primero el cable de tierra

Las conexiones a tierra aportan una referencia común tanto para el LCD como para el Arduino. Siempre recomiendo comenzar con la conexión a tierra primero.

He conectado el pin GND del Arduino al pin VSS y al pin catódico del LED BackLight. 

Paso 3: Conexión del pin de selección de chip de la pantalla LCD

Conexión del pin de selección de chip del LCD

Conecte CS1, la línea de selección de chip de la LCD, a tierra también. La conexión al pin de tierra mantiene el controlador de la LCD siempre habilitado. Puede dejar el CS2 sin conectar. 

Paso 4: Conexión SPI SCLK entre el LCD y el UNO

Conexión SPI SCLK entre el LCD y el UNO

El pin 13 del Arduino va al pin "E" del módulo LCD. 

Paso 5: Conexión de selección de chip SPI entre el LCD y el Arduino UNO

Conexión de selección de chip SPI entre el LCD y el Arduino UNO

El cable verde conecta el pin de selección de esclavo SPI del Arduino UNO con la línea SPI CS del controlador de la pantalla LCD (D/I) en la placa. 

Paso 6: Conexión de la línea SPI MOSI

Conexión de la línea MOSI de SPI

El cable naranja conecta el pin SPI MOSI del Arduino UNO con el pin SPI R/W# del controlador del LCD. 

Paso 7: Alimentación del controlador LCD y conexión de la retroiluminación LED

Alimentación del controlador LCD y conexión de la retroiluminación LED

El cable rojo conecta los 5 V del Arduino UNO a la placa LCD. También tiene que alimentar el LED de retroiluminación.

En nuestro caso, también estamos conectando el pin del LED directamente a la línea de 5 V. 

Si quieres controlar la luz de fondo, puedes conectar cualquier otro pin GPIO al pin del ánodo del LED.

Puedes usar GPIO para encender o apagar la luz de fondo.

Esto te ayudará a ahorrar energía apagando la luz de fondo cuando no sea necesario. 

Paso 8: Opción de ajuste del contraste de la pantalla LCD

Opción de ajuste del contraste del LCD

Puede controlar el contraste del LCD conectando un potenciómetro entre 5 V y GND. Puedes hacer esto usando el pin central del potenciómetro.

Connect the potentiometer’s moving pin (usually the center pin) to the V0 pin of the LCD board. The contrast can be increased or decreased by turning the potentiometer to the right or the left.

After you program the Arduino and make all the connections, you may see nothing on display. Turn the potentiometer until you can see the pixels.

Paso 9: Resumen de la conexión de Arduino y el LCD gráfico de 128×64

Resumen completo de la conexión de Arduino y la pantalla LCD gráfica de 128x64

¡Enhorabuena! Has completado todas las conexiones necesarias entre el LCD y el Arduino UNO.

En la próxima sección, veremos cómo se pueden utilizar las bibliotecas estándar disponibles para mostrar los datos en la pantalla LCD.

Visualización de una imagen en la pantalla LCD

Para mostrar la imagen en la pantalla LCD, hay que seguir unos pasos específicos. Reduzca la imagen a los píxeles necesarios. Si piensa mostrar la imagen en toda la pantalla, debe reducir el tamaño de la imagen a 128×64 píxeles.

Si debe mostrar la imagen en la mitad de la pantalla, tiene que reducir la imagen a 64×64 píxeles. 

Tienes que guardar la imagen como un mapa de bits monocromo utilizando cualquier software de edición de imágenes.

Como será una imagen monocromática, podrá leer la imagen en formato hexadecimal.

Es muy fácil utilizar el software GIMP para este fin. 

La herramienta GIMP puede exportar la imagen en formato X bitmap. La ventaja es que se puede utilizar cualquier software de bloc de notas y ver los datos hexadecimales.

Mi preferencia personal es Notepad++. Es un editor de texto de código abierto. 

El siguiente código de Arduino muestra la imagen que acaba de crear.

El código completo de Arduino

Abre el IDE de Arduino y haz clic en la opción "Archivo". Bajo las opciones de archivo, selecciona "Nuevo".

#include "Arduino.h"
#include "U8g2lib.h"
 
#ifdef U8X8_HAVE_HW_SPI
#include "SPI.h"
#endif
#ifdef U8X8_HAVE_HW_I2C
#include "Wire.h"
#endif
 
// 'TheOffice', 128x64px, source: //https://www.electronicshub.org/interfacing-128x64-graphical-lcd-with-arduino/
 
static const unsigned char myBitmap [] PROGMEM = {
 
  0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7,
  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xb0,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3f, 0x00,
  0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xb0,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x7f, 0x00,
  0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xb0,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x7f, 0x00,
  0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xff, 0x07, 0x00, 0x00, 0x7c, 0xb0,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xff, 0x07,
  0x00, 0x00, 0xfe, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0xf8, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xb0, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xb0,
  0x81, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xf8, 0xff, 0x0f,
  0x00, 0x00, 0xfe, 0xb0, 0x81, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xb0, 0x81, 0xff, 0x1d, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0xfe, 0xb0,
  0x01, 0x38, 0xdc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x0f,
  0x00, 0x00, 0x7c, 0xb0, 0x01, 0x38, 0xfc, 0xf3, 0x03, 0x00, 0x00, 0x00,
  0x08, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0x38, 0xb0, 0x01, 0x38, 0xfc, 0xfb,
  0x07, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x0f, 0x00, 0x00, 0xfc, 0xb0,
  0x01, 0x38, 0x9c, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x07,
  0x00, 0x00, 0xfe, 0xb0, 0x01, 0x38, 0x9c, 0xfb, 0x07, 0x00, 0x00, 0x00,
  0x08, 0xfc, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xb7, 0x01, 0x38, 0x9c, 0xfb,
  0x07, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x07, 0x00, 0x00, 0xfe, 0xb7,
  0x01, 0x38, 0x9c, 0x3b, 0x07, 0x00, 0x00, 0x00, 0x08, 0xfc, 0xff, 0x07,
  0x00, 0x00, 0xfe, 0xb7, 0x01, 0x38, 0x9c, 0xfb, 0x07, 0x00, 0x00, 0x00,
  0x08, 0xfe, 0xff, 0x07, 0x00, 0x00, 0xff, 0xb7, 0x01, 0x38, 0x9c, 0xf3,
  0x03, 0x00, 0x00, 0x00, 0x08, 0xfe, 0xff, 0x07, 0x00, 0x80, 0xff, 0xb7,
  0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00,
  0x00, 0xc0, 0xff, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xc8, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xb6, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xb6,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00,
  0xc0, 0xff, 0xff, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xc8, 0xff, 0xff, 0x00, 0xe0, 0xff, 0xff, 0xb6, 0x01, 0xf8, 0x07, 0xbe,
  0xff, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00, 0xe0, 0x7f, 0xff, 0xb7,
  0x01, 0xfc, 0x1f, 0xbf, 0xff, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0xfc,
  0xff, 0x0f, 0xff, 0xb7, 0x01, 0xfe, 0x1f, 0xbf, 0xff, 0x00, 0x00, 0x00,
  0xc8, 0xff, 0xff, 0xfc, 0xff, 0xef, 0xff, 0xb7, 0x01, 0x1f, 0x3e, 0x8f,
  0x03, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0xc0, 0x01, 0xfe, 0xff, 0xb7,
  0x01, 0x0f, 0xbc, 0xff, 0xef, 0xf0, 0x87, 0x1f, 0xc8, 0xff, 0xff, 0xc0,
  0x01, 0xff, 0xff, 0xb7, 0x01, 0x0f, 0xbc, 0xff, 0xef, 0xf8, 0xcf, 0x3f,
  0xc8, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xb7, 0x01, 0x0f, 0xb8, 0xff,
  0xef, 0xfc, 0xef, 0x3f, 0xc8, 0xff, 0xff, 0xc0, 0x01, 0xff, 0x7f, 0xb7,
  0x01, 0x0f, 0x38, 0x8f, 0xe3, 0x3c, 0xef, 0x79, 0x08, 0xc0, 0x7f, 0xc0,
  0x81, 0xff, 0x1f, 0xb7, 0x01, 0x0f, 0x3c, 0x8f, 0xe3, 0x3c, 0xe0, 0x7f,
  0x08, 0xc0, 0x7f, 0xc0, 0x81, 0xef, 0xff, 0xb7, 0x01, 0x0f, 0x3c, 0x8f,
  0xe3, 0x1c, 0xe0, 0x7f, 0x08, 0xc0, 0x7f, 0xc0, 0x81, 0xef, 0xff, 0xb7,
  0x01, 0x1f, 0x3c, 0x8f, 0xe3, 0x3c, 0xe6, 0x7f, 0x08, 0xc0, 0x7f, 0xc0,
  0x81, 0xe7, 0xff, 0xb7, 0x01, 0x3e, 0x3e, 0x8f, 0xe3, 0x3c, 0xef, 0x79,
  0x08, 0x80, 0x7b, 0xc0, 0xc1, 0x67, 0x00, 0xb7, 0x01, 0xfe, 0x1f, 0x8f,
  0xe3, 0xfc, 0xef, 0x7f, 0x08, 0x80, 0x33, 0xc0, 0xc1, 0x67, 0x00, 0xb7,
  0x01, 0xfc, 0x0f, 0x8f, 0xe3, 0xf8, 0xcf, 0x3f, 0x08, 0x00, 0x00, 0xc0,
  0xc1, 0x67, 0x00, 0xb7, 0x01, 0xf8, 0x07, 0x8f, 0xe3, 0xf0, 0xc7, 0x1f,
  0x08, 0x00, 0x00, 0xc0, 0xe1, 0x63, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0xe1, 0x63, 0x00, 0xb7,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0,
  0xe1, 0x61, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x08, 0x00, 0x00, 0xc0, 0xe1, 0x61, 0x00, 0xb7, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0xe1, 0x61, 0x00, 0xb7,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0,
  0xe1, 0x60, 0x00, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x03, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0,
  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x06, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
  0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  0xff, 0xff, 0xff, 0x7f
};
 
 
U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* CS=*/ 10, /* reset=*/ 8);
 
 
void draw(void)
{
  u8g2.drawXBMP( 0, 0, 128, 64, myBitmap);
}
 
 
void setup()
{
  // put your setup code here, to run once:
  u8g2.begin();
  u8g2.clearBuffer();
}
 
void loop()
{
  // put your main code here, to run repeatedly:
  u8g2.firstPage();
  do
  {
    draw();
  } while (u8g2.nextPage());
 
  delay(1000);
}

Tienes que instalar la biblioteca u8g2. Ve a la opción "Herramientas" en el IDE de Arduino, y selecciona "Gestionar bibliotecas".

Busca u8g2 en la barra de búsqueda. Localiza la biblioteca en los resultados e instálala. 

Para actualizar el código a la nueva imagen que acaba de crear, sustituya el código hexadecimal por el que ha creado.

El número total de píxeles es de 8192. Por tanto, el número de bytes será de 8192/8 = 1024 bytes para una imagen a pantalla completa.

en el IDE de Arduino

Preguntas frecuentes sobre la pantalla gráfica de 128×64 y el proyecto Arduino

Hay preguntas frecuentes sobre los proyectos de LCD de 128×64. He creado una lista de preguntas y las he respondido según mi leal saber y entender.

Me alegraré de que encuentres las respuestas a tus preguntas. Si tienes más preguntas, no dudes en dejarlas en la sección de comentarios.

1) ¿Cómo conectar una pantalla gráfica a un Arduino?

Puede conectar la pantalla LCD al Arduino utilizando varias interfaces. Por ejemplo, puede utilizar SPI (interfaz de 3 o 4 hilos) o interfaces de bus paralelo (6800 o una interfaz 8080).

Todo LCD gráfico necesita un IC controlador de LCD. Ayudaría que primero encontraras el IC controlador de LCD de la placa.

Más tarde, debería ver el código correcto de la biblioteca, si es posible. 

2) ¿Cómo funciona el LCD gráfico?

La pantalla gráfica bloquea la luz o la deja pasar a través de cada zona de píxeles. Cada pequeño píxel puede polarizarse o despolarizarse en función de su tensión. 

Existen varios tipos de pantallas (transmisivas, transflectivas y reflectantes). Un visualizador reflectivo depende de la luz externa para leer la pantalla. Los displays transmisivos permiten la presencia de una luz de fondo.

En algunos visualizadores, habrá un direccionamiento de fila y otro de columna para cada celda de la matriz. En un visualizador monocromo, cada celda tendrá un valor almacenado en un transistor (un uno o un 0). 

La buena noticia es que debemos comunicar los valores que queremos escribir en la pantalla.

No tenemos que preocuparnos de cómo se manejan los píxeles individualmente. Los datos pueden ser representados por 1s o 0s. 

3) ¿Cómo se escriben los datos en el controlador LCD gráfico?

Este es el diagrama de bloques que muestra cómo el Arduino UNO escribe los datos en el CI controlador de la pantalla LCD.

El LCD de 128×64 significa que tiene 128 píxeles en el eje X y 64 en el eje Y. Además, las líneas de datos son de 8 bits de ancho. Esto significa que se ocupará de los 64 bits en bloques de 8 bits a la vez.

Puede utilizar las líneas de selección de chip para seleccionar el CI adecuado. Para más información, puedes consultar un ejemplo aquí

Conclusión

En este artículo, le he mostrado cómo cargar cualquier imagen o gráfico en la pantalla LCD.

He cubierto una guía de conexión paso a paso para completar las conexiones entre el Arduino UNO y el LCD gráfico de 128×64. 

Estaré encantado de ayudarte con tus proyectos si tienes alguna duda.

Por favor, publique sus preguntas en la sección de comentarios. He utilizado el LCD de gráficos para construir un juego simple.

Estoy seguro de que tu creatividad tendrá alas cuando tengas una pantalla LCD gráfica en lugar de una de caracteres. 

Estaré encantado de saber qué es lo siguiente que construyes con la pantalla LCD gráfica.

Puedes compartir tus proyectos en la sección de comentarios. Yo también estaré encantado de conocer tus proyectos. 

¿Tiene alguna sugerencia para el próximo artículo? ¿Sobre qué proyecto cree que debería escribir a continuación?

¿Qué otros temas le interesa leer? Hágamelo saber en los comentarios.

Por favor, comparte el artículo con tus amigos.

TDHofstetter

Friday 1st of December 2023

Your #includes are empty. That source cannot possibly be compiled.

Stefan Maetschke

Saturday 2nd of December 2023

That is an annoying issue with the syntax highlighter, which fails for the angular brackets :( Fixed, by replacing angular brackets with quotes. Thanks for letting me know.

Ayhan

Friday 16th of June 2023

Hello Friends, I have 2 arduino screens in my hand, I have searched a lot on the same internet, but I could not find a sample study such as clock or heat sensor according to this screen, if there is a trial purpose according to this screen. I searched a lot and couldn't find if there is a prefix with the codes I can run. I found a few on youtube. I couldn't run them. good luck

Arduino code: WG12864C1-TMI-V#N

Display Properties: bottom line

ozdisan.com

WG12864C1-TMI-V#N 1 LCD MOD GRAP 128*64 LED B.LIGHT STN NEG BL NEG VOL