Cómo usar display OLED SSD1306 de 0.96" con Arduino UNO fácil



Hola amigos vamos a usar el OLED SSD1306 con comunicación I2C implementando funciones de texto básicas con la fuente que trae la librería por defecto y sus diferentes tamaños.

Hice este tutorial debido a que los ejemplos de las librerías que encontré en internet no me funcionaron así que arme un programa de ejemplo en donde se muestra como usar de manera fácil esta pantalla monocromática OLED de bajo consumo.

Es increíble que un display de menos de 3 dolares permita mostrar hasta 168 caracteres alfanuméricos y solo usa 2 pines de nuestra Arduino UNO para comunicarse por I2C. Lo mas genial es que es compatible con 3 y 5 voltios.
✔ Aquí les dejo archivo .ino:
✔ Aquí puedes comprar en ebay donde yo la compré:
 

✔ Aquí les dejo el código:
/*
Ejemplo basico de texto para la pantalla OLED 128x64 I2C con el driver SSD1306.

Este ejemplo es de dominio publico hagan lo que quieran con el :D
Autor: Sergio A. Yañez M.
Año: 2019
Tutorial para el canal AQUILES VAESA 
youtube.com/aqulesvaesa

***** CONEXIONES *****

DISPLAY - ARDUINO
    GND = GND
    VCC = 5V ó 3.3V
    SCL = A5
    SDA = A4

Importante!!! necesitas instalar estas librerias:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

*/

#include <Adafruit_SSD1306.h>  // incluye la libreria de adafruit para el driver del display OLED

Adafruit_SSD1306 display(128, 32);  // declara la resolucion del display

int cont=0;
int tam=0;
void setup(){                

  delay(100);  // se da una espera de 100ms para que el display inicie correctamente
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // inicia la comunicacion I2C con el display que tiene la direccion 0x3C
  display.setRotation(0);  // se escoje la orientacion del display puede ser 0, 1, 2 o 3
  display.setTextColor(WHITE);  // se le dice a la pantalla que el texto que se va a desplegar es en color blanco 

  display.dim(true); //dejamos el brillo en minimo 

  //esto solo es visible al iniciar el programa:
  
  display.clearDisplay();  // limpia el buffer del display
  display.setTextSize(2);  // cambia tamaño de letra a 2 
  display.setCursor(0, 0); //(x,y) pone el cursor en el origen del display 
  display.println("Iniciando"); //escribe en buffer del display
  display.display(); // muestra la informacion del buffer en la pantalla 
  delay(2000); //pausa de 2 segundos o 2000 milisegundos 
} 

void loop(){

// primera pantalla de presentacion 
  
  display.dim(true); // brillo maximo 
  
  display.clearDisplay();  
  display.setTextSize(1); // selecciona el tamaño de la letra puede ser u entre 1 y 10
  display.setCursor(0, 0);  // (x,y) pone el cursor en el origen del display
  display.println("CANAL AQUILES VAESA"); 
  display.setCursor(0, 30);  // (x,y) pone el cursor mas o menos en la mitad horizontal del display
  display.println("youtube.com/aquilesvaesa");
  display.setCursor(30, 50); //(x,y) 
  display.println(">  Suscribete  <");
  display.display(); 
  delay(5000); //pausa de 5 segundos o 5000 milisegundos


// segundo pantallazo, bajamos el brillo del display 
 
  display.dim(true); //dejamos el brillo en minimo 
  
  display.clearDisplay();  
  display.setTextSize(2);  // cambia tamaño de letra a 2 
  display.setCursor(0, 0);  
  display.println("Escala de letra 2.  Probando texto largo y desborde"); //Por defecto el texto largo se desborda y continua en la siguiente linea
  display.display(); 
  delay(5000);

// tercer pantallazo

  display.clearDisplay();  
  display.setTextWrap(false); // desactiva el desborde de texto
  display.setTextSize(2);  
  display.setCursor(0, 0);  
  display.println("Desborde desactivado con la instruccion display.setTextWrap(false) ...");
  display.display(); 
  delay(5000);

// cuarto pantallazo
  
  display.clearDisplay();  
  display.setTextWrap(true); // activa el desborde de texto
  display.setTextSize(1);  
  display.setCursor(0, 30);  
  display.println("Vamos a desplegar una variable entera en diferentes escalas del 1 al 9 ");
  display.display(); 
  delay(7000);

// pantalla final varia con el incremento de las variables de los ciclos "for" 

  for(int tam = 1; tam < 10; tam++){  // creamos un ciclo con la variable tam (tamaño) que va desde 1 hasta 9
    display.setTextSize(tam); // usa la variable tam para cambiar el tamaño del texto en cada ciclo
      for(int cont=0; cont<10; cont++){ //creamos un ciclo con la variable cont (contador) que va de 0 a 9 y se muestra en la pantalla
        display.clearDisplay();
        display.setCursor(0, 0);  
        display.println(cont); // escribe el valor de la variable en el bufer 
        display.display(); 
        delay(100);
      }

  } 
  
}  // Final de la funcion principal, salta al inicio del "void loop"

Publicar un comentario

0 Comentarios