Guía sobre Pantallas OLED - Parte #1

Guía sobre Pantallas OLED - Parte #1

En esta guía muestro cómo usar la pantalla OLED SSD1306 con Arduino. Te mostrare cómo escribir texto, configurar diferentes fuentes, dibujar formas. En este otro articulo enseño como mostrar imágenes de mapa de bits.

¿Que es OLED?

OLED es la abreviatura de «Organic Light Emitting Diode» o Diodo Emisor de Luz Orgánico, lo que parece indicar que estos dispositivos están relacionados con los LED tradicionales, pero se diferencian en que son «orgánicos».

El término "orgánico" en OLED se refiere a las moléculas orgánicas utilizadas en la creación de estos dispositivos. Las moléculas orgánicas son simplemente moléculas que se basan en líneas o anillos de átomos de carbono. 

Un dispositivo OLED esta formado por un compuesto orgánico ensanduchado entre dos electrodos, un ánodo y un cátodo. Usualmente el compuesto orgánico consiste en múltiples capas de materiales orgánicos electroluminiscente. En la figura de abajo se muestra una imagen de un OLED.

 

Pantalla OLED SSD1306

Las pantallas OLED están disponibles en una variedad de tamaños (como 128×64 y 128×32) y colores (como blanco, azul y bicolor). 

La pantalla OLED que utilizaremos en este tutorial es el modelo SSD1306: una pantalla bicolor de 0,96 pulgadas y 128×64 píxeles como se muestra en la siguiente figura.

Esta pantalla tienen interfaz de comunicación para microcontroladores I₂C y también interfaz SPI.

El módulo se compone de un potente controlador CMOS OLED de un solo chip, el SSD1306, que gestiona el almacenamiento en búfer de la RAM, con un consumo mínimo de corriente. Además, el voltaje de funcionamiento del controlador SSD1306 oscila entre 1,65 V y 3,3 V, lo que lo hace ideal para la interfaz con microcontroladores de 3,3 V.

La pantalla OLED, a diferencia de una pantalla LCD de caracteres, no requiere retroiluminación, ya que genera su propia luz. Esto explica su alto contraste en entornos oscuros, su amplio ángulo de visión y su capacidad para mostrar negros profundos . Además, sus píxeles consumen energía solo cuando están encendidos, por lo que consume menos energía que otras pantallas. Una pantalla OLED típica consume unos 20 mA de media, aunque esto varía según la cantidad de luz de la pantalla.


Como Funciona el SSD1306

Para mostrar los datos en la pantalla, el controlador SSD1306 tiene una memoria RAM gráfica que se llama GDDRAM (viene del inglés Graphic Display Data RAM) que ocupa 1 KB (1.024 bytes o 8.192 bits) y es donde se almacena el patrón de bits que se mostrará en pantalla Esta área de memoria de 1 KB se divide en 8 páginas (de 0 a 7). Cada página tiene 128 columnas/segmentos (bloques del 0 al 127). Cada columna puede almacenar 8 bits de datos (de 0 a 7). Esto demuestra que tenemos:

Cada bit representa un píxel en la pantalla OLED y mediante la programación, se puede encender o apagar para que muestre cualquier información. Pero no te asustes, no vamos a tener que trabajar a nivel de bit. De eso se encargan las librerías de Arduino. Pero antes de meternos de lleno en la programación, vamos a ver los pines de la pantalla OLED.

 

Pinout de la Pantalla OLED

La pantalla OLED que voy a mostrar a continuación es una pantalla que utiliza la interfaz SPI. En este tipo de pantallas vas a encontrar 7 pines (para I2C son 4 pines). 


GND es el pin de tierra.

VCC es la fuente de alimentación del display, que conectamos al pin de 5V del Arduino.

D0/CLK es el pin de reloj SPI. Es una entrada al chip.

D1/MOSI es el pin de entrada de datos en serie, para los datos enviados desde su Arduino a la pantalla.

RES pin que restablece el búfer interno del controlador OLED.

DC la biblioteca lo utiliza para separar los comandos (como establecer el cursor en una ubicación específica, limpiar la pantalla, etc.) de los datos.

CS es el pin de selección de chip.

 

Conexión de la Pantalla con Arduino

La conexión de la pantalla con Arduino es muy sencilla simplemente debe conectar los pines como se muestra en la figura de abajo.

Comience conectando el pin VCC a la salida de 5 V del Arduino y el pin GND a tierra. Ahora conecte D0/CLK, D1/MOSI, RES, DC y CS a los pines digitales 12, 11, 10, 9 y 13, respectivamente.

 

Librerías de Arduino para OLED

Como ya mencioné, usaré unas bibliotecas de Adafruit para trabajar con la pantalla OLED. 

Utilizaremos las siguientes dos bibliotecas de Adafruit:

  • Adafruit GFX : esta es una biblioteca de gráficos que se utilizará para dibujar formas en la pantalla POLED.
  • Adafruit SSD1306 : la biblioteca para la pantalla OLED monocromática SSD1306. Originalmente diseñada para una pantalla específica de Adafruit, se ha mejorado para funcionar con cualquier pantalla basada en el chip controlador SSD1306.
  • Adafruit_BusIO esta es una biblioteca auxiliar para gestionar la comunicación I2C, SPI y 'transporte genérico' (por ejemplo, UART).

 

Escribir texto en la Pantalla

Aquí hay algunas funciones que te ayudarán a manejar la biblioteca de pantalla OLED para escribir texto o dibujar gráficos simples.

  • display.clearDisplay() – Apagar todos los Pixeles
  • display.drawPixel (x,y, color) – Trazar un pixel en las coordenadas x, y
  • display.setTextSize (n) – Ajustar la fuente del texto, soporta tamaños del 1 al 8
  • display.setCursor (x,y) – Ajustar las coordenadas para iniciar a escribir texto
  • display.print (“message”) – Imprimir caracteres en la ubicación x, y
  • display.display () – Esta función se llama para que los ajustes o cambios tengan efecto

 


Código de ejemplo 1: visualización de texto

He aquí un boceto sencillo que hará lo siguiente:

  • Mostrar texto simple

#include 
#include 
#include 
#include 

#define ANCHO_PANTALLA 128 // OLED display width, in pixels
#define ALTO_PANTALLA 64 // OLED display height, in pixels

#define OLED_MOSI   11   //Define los pines de Conexión
#define OLED_CLK   12
#define OLED_DC    9
#define OLED_CS    13
#define OLED_RESET 10

Adafruit_SSD1306 display(ANCHO_PANTALLA, ALTO_PANTALLA, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

void setup() 
{
  if (!display.begin(SSD1306_SWITCHCAPVCC))   // Iniciar pantalla OLED en la dirección 0x00
  {
    Serial.println(F("SSD1306 fallo en la incializacion"));
    for (;;); // no iniciar el programa se queda en el loop infinito
  }
  display.clearDisplay();   //Borra la pantalla
  display.setTextColor(SSD1306_WHITE);
}

void loop() 
{
    display.clearDisplay();            //Borra la pantalla
    display.setTextSize(1);           // x1 pixel Tamaño del texto
    display.setCursor(10, 0);        //Columna 10, Fila 0
    display.print("Tips de");        //Imprime texto 

    display.setTextSize(1);           // x1 pixel Ta,maño del texto
    display.setCursor(0, 9);          //Columna 0, Fila 9
    display.print("ELECTRONICA");      //Imprime texto 

    display.setTextSize(2);           // x2 pixel Ta,maño del texto
    display.setCursor(10, 20);        //Columna 10, Fila 20
    display.print("Tips de");         //Imprime texto 
    display.setTextSize(2);           //x2 pixel Ta,maño del texto
    display.setCursor(0, 40);        //Columna 0, Fila 40
    display.print("ELECTRONIC");     //Imprime texto 
    display.display();            //esta funcion envia la informacion a la pantalla
}

 

En el siguiente vídeo puede ver mas información sobre pantalla OLED:


Aprenda a Programar con el curso de Arduino

En este curso aprenderá los fundamentos de la programación de Arduino, esta hecho para cualquier persona, desde principiantes hasta expertos, además podrá crear proyectos interactivos y automatizados.

 

 

 

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.