Las pantallas OLED pequeñas de 128×64 píxeles se conectan a la Raspberry con cuatro cables y se manejan con la biblioteca luma.oled. Lo que no ha cambiado es el montaje; lo que sí, la forma de instalar la biblioteca.
También te puede interesar

Conexión
| Pantalla | Raspberry Pi |
|---|---|
| VCC | 3,3 V (pin 1) |
| GND | GND (pin 6) |
| SDA | GPIO 2, SDA (pin 3) |
| SCL | GPIO 3, SCL (pin 5) |
Antes, activa I2C: sudo raspi-config, Interface Options, I2C. Para comprobar que la pantalla responde, i2cdetect -y 1 debería mostrar su dirección, casi siempre 3c.
Instalar
pip install fuera de un entorno virtual da el error externally-managed-environment. Es a propósito: protege el Python del sistema. Hay dos caminos, que son los que recomienda la documentación oficial: instalar con apt el paquete python3-… si existe, o crear un entorno virtual e instalar ahí con pip. La versión anterior de esta página usaba sudo pip3 install, que en las versiones actuales ya no funciona y en las antiguas podía estropear el sistema.python3 -m venv ~/oled ~/oled/bin/pip install luma.oled
Escribir en la pantalla
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import sh1106 # o ssd1306, según tu pantalla
from PIL import ImageFont
serial = i2c(port=1, address=0x3C)
device = sh1106(serial, width=128, height=64)
with canvas(device) as draw:
draw.rectangle(device.bounding_box, outline="white", fill="black")
draw.text((10, 10), "Hola Mundo!", fill="white")
draw.text((10, 24), "decodigo.com", fill="white")
fuente = ImageFont.truetype("DejaVuSans.ttf", 13)
draw.text((10, 40), "Año: 2026", font=fuente, fill="white")
salidatamaño: (0, 0, 127, 63) píxeles encendidos: 862 de 8192
Todo lo que se dibuja dentro del with canvas(device) se envía a la pantalla al salir del bloque. draw es un objeto de dibujo de Pillow, así que valen sus métodos: text, rectangle, line, ellipse. La tercera línea usa una fuente TrueType, que es la forma segura de que salgan bien la eñe y las tildes.
¿SH1106 o SSD1306?
Por fuera son iguales. Si usas el controlador equivocado, la pantalla no se queda en negro: muestra la imagen desplazada dos columnas o con basura en un borde. Es la pista para cambiar sh1106 por ssd1306, o al revés. La versión anterior de esta página dejaba el programa esperando 20 segundos con sleep(20): era para que diera tiempo a ver la pantalla antes de que el programa terminara y se apagara.
Revisada en octubre de 2026 para Raspberry Pi OS actual. Las salidas están copiadas de ejecuciones reales; lo que no se pudo ejecutar sin el hardware se indica en el propio texto.