- Hardware requerido:
- Familiarización con las pantallas OLED:
- Hardware y conexiones:
- Programación de la pantalla OLED SSD1306 para Arduino:
La mayoría de nosotros estaría familiarizada con la pantalla LCD de matriz de puntos de 16 × 2 que se utiliza en la mayoría de los proyectos para mostrar cierta información al usuario. Pero estas pantallas LCD tienen muchas limitaciones en lo que pueden hacer. En este tutorial aprenderemos sobre las pantallas OLED y cómo usarlas Arduino. Hay muchos tipos de pantallas OLED disponibles en el mercado y hay muchas formas de hacer que funcionen. En este tutorial discutiremos sobre sus clasificaciones y también cuál será la más adecuada para su proyecto.
Hardware requerido:
- Módulo de pantalla OLED de 7 pines 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Tablero de circuitos
- Conexión de cables
- Computadora / Laptop
Familiarización con las pantallas OLED:
El término OLED significa " diodo emisor de luz orgánica" , utiliza la misma tecnología que se utiliza en la mayoría de nuestros televisores, pero tiene menos píxeles en comparación con ellos. Es realmente divertido tener estos módulos de pantalla de aspecto atractivo para conectarse con Arduino, ya que hará que nuestros proyectos se vean geniales. Hemos cubierto un artículo completo sobre pantallas OLED y sus tipos aquí.
Estamos usando una pantalla OLED monocromática de 7 pines SSD1306 de 0.96 ”. La razón para elegir esta pantalla es que puede funcionar en tres protocolos de comunicación diferentes, como el modo SPI de 3 cables, el modo SPI de cuatro cables y el modo IIC. Este tutorial cubrirá cómo usar el módulo en modo SPI de 4 cables, ya que es el modo de comunicación más rápido y el predeterminado.
Los pines y sus funciones se explican en la tabla siguiente.
Número de PIN |
Nombre de PIN |
Otros nombres |
Uso |
1 |
Gnd |
Suelo |
Pin de tierra del módulo |
2 |
Vdd |
Vcc, 5 V |
Pin de alimentación (3-5 V tolerable) |
3 |
SCK |
D0, SCL, CLK |
Actúa como el pin del reloj. Utilizado tanto para I2C como para SPI |
4 |
SDA |
D1, MOSI |
Pin de datos del módulo. Utilizado tanto para IIC como para SPI |
5 |
RES |
RST, RESET |
Restablece el módulo (útil durante SPI) |
6 |
corriente continua |
A0 |
Pin de comando de datos. Utilizado para el protocolo SPI |
7 |
CS |
Selección de chip |
Útil cuando se usa más de un módulo bajo el protocolo SPI |
En este tutorial simplemente operaremos el módulo en modo 4-Wire SPI, dejaremos el resto para algún otro tutorial.
La comunidad de Arduino ya nos ha proporcionado muchas bibliotecas que se pueden usar directamente para hacer esto mucho más simple. Probé algunas bibliotecas y descubrí que la biblioteca Adafruit_SSD1306 era muy fácil de usar y tenía un puñado de opciones gráficas, por lo tanto, usaremos las mismas en este tutorial. Pero, si su proyecto tiene una restricción de memoria / velocidad, intente usar la biblioteca U8g, ya que funciona más rápido y ocupa menos memoria del programa.
Hardware y conexiones:
El diagrama de circuito para la interfaz OLED SSD1306 con Arduino es realmente simple y se muestra a continuación
Simplemente hemos establecido una comunicación SPI entre el módulo OLED y Arduino. Dado que el OLED funciona con 3V-5V y consume muy poca energía, no necesita una fuente de alimentación externa. Simplemente puede usar cables para hacer la conexión o usar una placa de prueba como yo he usado para que sea fácil de experimentar. La conexión también se enumera en el cuento a continuación.
S. No |
Nombre del pin en el módulo OLED |
Nombre de pin en Arduino |
1 |
Gnd, tierra |
Suelo |
2 |
Vdd, Vcc, 5 V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
CC, A0 |
11 |
7 |
CS, selección de chip |
12 |
Nota: No podrá visualizar ninguna luz de fondo / brillo en el módulo OLED con solo encenderlo. Tienes que programarlo correctamente para notar cualquier cambio en la pantalla OLED.
Programación de la pantalla OLED SSD1306 para Arduino:
Una vez que las conexiones estén listas, puede comenzar a programar el Arduino. Como se dijo anteriormente, utilizaremos la biblioteca Adafruit y la biblioteca GFX para trabajar con este módulo OLED. Siga los pasos para probar la ejecución de su pantalla OLED.
Paso 1: descargue la biblioteca Adafruit y la biblioteca GFX de Github usando el enlace a continuación
- Biblioteca Adafruit
- Biblioteca de gráficos GFX
Paso 2: Debería haber descargado dos archivos Zip. Ahora agréguelos a su Arduino siguiendo
Sketch-> Incluir biblioteca -> Agregar biblioteca Zip como se muestra a continuación. Luego seleccione la biblioteca que acabamos de descargar. Puede seleccionar solo una biblioteca a la vez, por lo tanto, debe repetir este paso nuevamente.
Paso 3: Inicie el programa de ejemplo seleccionando Archivo-> Ejemplos-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino como se muestra en la imagen a continuación.
Paso 4: Dentro del programa de ejemplo en la parte superior de la línea 64, agregue la línea “#define SSD1306_LCDHEIGHT 64” como se muestra en la imagen a continuación.
Paso 5: Ahora cargue el programa y debería ver que la pantalla OLED se enciende con el código de ejemplo predeterminado de Adafruit como se muestra en la siguiente imagen. El video de trabajo completo se da al final.
Este programa de ejemplo le muestra todos los gráficos posibles que podrían mostrarse en la pantalla OLED. Este código debería ser suficiente para que pueda crear mapas de bits, dibujar líneas / círculos / rectángulos, jugar con píxeles, mostrar caracteres y cadenas con diferentes fuentes y tamaños, etc.
Si desea comprender mejor la biblioteca y sus funciones, puede seguir leyendo. Cada basura del código se divide y explica con la ayuda de líneas de comentarios. El código completo se proporciona al final de este artículo.
Visualización y limpieza de la pantalla:
Escribir en una pantalla OLED es como escribir en un pizarrón, tenemos que escribir los valores y luego limpiarlo antes de que se pueda sobrescribir. Los siguientes comandos se utilizan para escribir y borrar la pantalla
display.display (); // Escribir para mostrar display.clearDisplay (); // limpiar la pantalla
Visualización de una variable de carácter:
Para mostrar el contenido dentro de una variable, se puede utilizar el siguiente código.
char i = 5; // la variable que se mostrará display.setTextSize (1); // Seleccione el tamaño del texto display.setTextColor (WHITE); // para visualización monocromática solo con lo posible display.setCursor (0,0); // 0,0 es la esquina superior izquierda de la pantalla OLED. Escribir (i); // Escribe la variable que se mostrará
Dibujar una línea, un círculo, un rectángulo, un triángulo:
Si desea agregar algunos símbolos a su pantalla, puede usar el siguiente código para dibujar cualquiera de los siguientes
display.drawLine (display.width () - 1, 0, i, display.height () - 1, BLANCO); // anular drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, BLANCO); // anular drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BLANCO); // anular drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // anular drawCircle (x0, y0, r, color);
Dibujar una cuerda en la pantalla:
El siguiente fragmento de código se puede utilizar para mostrar cualquier mensaje en la pantalla en un lugar y tamaño determinados
display.setTextSize (2); // establece el tamaño del texto display.setTextColor (WHITE); // ajuste de color display.setCursor (10,0); // La cadena comenzará en 10,0 (x, y) display.clearDisplay (); // Borra cualquier visualización anterior en la pantalla display.println ("Circuit Digest"); // Imprime la cadena aquí "Circuit Digest" display.display (); // envía el texto a la pantalla
Visualización de una imagen de mapa de bits:
Una cosa que no se puede hacer con el módulo OLED es que se puede usar para mostrar mapas de bits. El siguiente código se usa para mostrar una imagen de mapa de bits
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B1111001111, B110011, B1100000, B11001111, B1100111 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, mapa de bits, w, h, BLANCO); // anular drawBitmap (x, y, * mapa de bits, w, h, color);
Como puede ver, para mostrar una imagen, los datos del mapa de bits deben almacenarse en la memoria del programa en forma de directiva PROMGMEM. En pocas palabras, tenemos que indicarle a la pantalla OLED qué hacer con cada píxel pasándole una secuencia o valores de una matriz como se muestra arriba. Esta matriz contendrá los datos de mapa de bits de la imagen.
Puede parecer complicado, pero con la ayuda de una herramienta web es muy fácil convertir una imagen en valores de mapa de bits y cargarlos en la matriz anterior.
Simplemente cargue la imagen y ajuste la configuración para obtener su vista previa preferida de la imagen. Luego haga clic en "Generar código", copie el código y péguelo en su matriz. Sube el programa y listo. Intenté mostrar un logotipo de Batman y así resultó.
Todavía hay muchas cosas que puede hacer con estas bibliotecas. Para conocer todas las posibilidades visite la página de Primitivas gráficas Adafruit GFX.
Espero que lo hayas puesto en marcha y estés listo para implementar una pantalla OLED en algunos de tus proyectos. Si tuviste algún problema, compártelo en la sección de comentarios y haré todo lo posible para corregirlo.