Caracteristicas del oled
Nota: mas informacion la pueden encontrar en el datasheet del oled.
Coordenadas x y
Circuito
La conexión del circuito es sencilla, como el oled usa la interfaz I2C, solo es conectar los dos cables como se observa en la siguiente imagen.
Liberia
Para trabajar la pantalla oled 0.96 i2c, vamos a usar la librería de adafruit SSD1306 la cual se creo específicamente para esta pantalla, librería la podemos encontrar en:
- Su repositorio oficial GitHub - adafruit/Adafruit_SSD1306: librería Arduino para OLEDs monocromos SSD1306 de 128x64 y 128x32
- En el entrono de arduino > programa > incluir librería > administrar bibliotecas, donde se abrirá la ventana gestor de librerías, vamos a buscar por Adafruit_SSD1306 e instalar esta librería.
Direccion i2c de oled 0.96 i2c
Uno de los parámetros necesarios para hacer funcionar la pantalla es la direccion i2c de esta misma, podemos encontrar esta direccion de dos formas.
1. Revisando por detras de la pantalla la configuración de las resistencias de dirección, dependiendo de donde están unidas sera el valor de la dirección i2c, veamos un ejemplo.
2. Otra forma es usar un scanner i2c para obtener la dirección, en Arduino i2c | CodigoElectronica tenemos un código el cual explica como usar el scanner y visualizar la direccion en varios módulos i2c.
Documentación de Adafruit_SSD1306
Podemos encontrar la documentación oficial en el siguiente enlace Adafruit SSD1306: Adafruit_SSD1306 Class Reference
Código de ejemplo
El siguiente código muestra un ejemplo de como usar la pantalla oled 0.96 i2c con arduino.
// 1
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// 2
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// 3
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
// 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
// 5
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// 6
display.display();
display.clearDisplay();
// 7
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("codigoelectronica"));
display.display();
delay(2000);
}
void loop() {
}
- Inicializamos las librerías, en este caso SPI y Wire para la comunicacion i2c; ademas de las librerías de Adafruit GFX, SSD1306.
- Definimos el ancho y alto de la pantalla para que la librería pueda calcular correctamente donde pintar.
- Definimos el pin de reset como (-1) indicando que es un reset por software y la direccion i2c del oled.
- Con Adafruit_SSD1306 display() inicializamos un objeto display para poder acceder a los métodos de la librería.
- display.begin inicializa la librería
- display.clearDisplay limpia la pantalla.
- Imprimimos un mensaje
- setTextSize: proporciona el tamaño del texto.
- setTestColor: indica si los pixeles son blancos o negros.
- setCursor: indica la posicion en (x, y).
- println texto a imprimir.
- display: envía a la pantalla lo que esta pendiente de escribir.