En esta sección aprenderás a programar una pantalla OLED SH1106 conectada al microcontrolador PIC mediante la comunicación I2C. El objetivo es mostrar texto y variables en la pantalla OLED enviando los datos por medio de la comunicación I2C.
Display oled SH1106
SH1106 es un controlador CMOS OLED/PLED de un solo chip con controlador para sistema de visualización gráfica de matriz de puntos de diodo emisor de luz orgánico/polimérico. SH1106 consta de 132 segmentos, 64 comunes que pueden admitir una resolución de pantalla máxima de 132 X 64. Está diseñado para panel OLED de tipo cátodo común.
SH1106 incorpora control de contraste, oscilador RAM de pantalla y convertidor DC-DC eficiente, lo que reduce la cantidad de componentes externos y el consumo de energía. SH1106 es adecuado para una amplia gama de aplicaciones portátiles compactas, como pantallas secundarias de teléfonos móviles, calculadoras y reproductores de MP3, etc.
Tipo: Display Oled.
Voltaje de Operación: 3V – 5.5V DC.
Resolución: 132×64 píxeles – 1.3 “.
Monocromo: Píxeles Blancos.
Driver: SH1106.
Interfaz: I2C, rápido 400KHz.
Pines: VDD, GND, SCK y SDA.
Dimensiones: 35mm x 33mm x 4mm.
Ángulo de visión: >160º.
Ultra bajo consumo de energía: 0.04W Cuando están encendidos todos los píxeles.
Temperatura de trabajo: -40ºC ~ 85ºC.
Circuito de Conexión
Procedimiento
Inicialmente se colocan los parámetros I2C para establecer el PIC como maestro, los pines de conexión y el identificador (STREAM) de la pantalla oled.
La librería se coloca en la carpeta del proyecto que se este realizando o en la carpeta de los drivers del PIC C Compiler.
Se utiliza una variable de caracteres para el texto que se mostrara en la pantalla.
char texto[128]; //variable que contendrá el texto
Se coloca la función para inicializar la pantalla.
OLED_Begin();
Se limpia la pantalla inicialmente.
OLED_ClearDisplay();
Para colocar texto en la pantalla se coloca en una función que convierte el texto en cadena para posteriormente guardar el texto en la variable creada anteriormente (texto).
sprintf(texto,"HOLA MUNDO");
Se utiliza la siguiente función que define la posición donde se colocara el texto (30,1), se coloca la variable que contiene la información (texto) y se coloca el tamaño letra deseada (1).
OLED_DrawText(30,1,texto,1);
La librería de la pantalla contiene diferentes funciones para colocar diferentes formas geométricas, lineas y puntos en la pantalla.
Una de las funciones permite colocar un rectángulo, se coloca la coordenada del punto de inicio (10,9), el ancho (105) y la altura (21).
OLED_DrawRect(10,9,105,21);
Para colocar el valor de una variable en la pantalla se coloca el tipo de variable (%Lu) dentro del texto, en este caso el valor del ADC es de 10 bits por lo que el valor máximo es de 1023, se puede definir el numero máximo de dígitos que se mostraran, evitando borrar la pantalla para actualizar el valor de la variable, por lo que se coloca (%04lu), finalmente se coloca el nombre de la variable (potenciometro).
Se coloca la posición donde se mostrara la información (14,12), se coloca la variable que contiene la información (texto) y finalmente el tamaño de letra (2).