"""Ancho de pantalla: 128 píxeles → caben 16 caracteres por fila (128 / 8)
Alto de pantalla: 64 píxeles → caben 8 filas de texto (64 / 8)"""
# Importa los módulos necesarios
from machine import Pin, I2C # Para usar pines y el protocolo I2C
import ssd1306 # Librería para controlar la pantalla OLED SSD1306
import utime # Para manejar tiempos y pausas
# ------------------------------
# Configuración de los pines I2C
# ------------------------------
I2C_SCL = 22 # Pin del ESP32 que se usará como SCL (reloj I2C)
I2C_SDA = 21 # Pin del ESP32 que se usará como SDA (datos I2C)
# ------------------------------
# Inicialización del bus I2C
# ------------------------------
# I2C(0, ...) crea una instancia del bus I2C número 0
# scl=Pin(22): pin para la señal de reloj
# sda=Pin(21): pin para la señal de datos
# freq=400000: frecuencia del bus I2C (400kHz, velocidad estándar rápida)
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
# ------------------------------
# Inicialización de la pantalla OLED
# ------------------------------
# Crea un objeto para controlar una pantalla de 128x64 píxeles conectada por I2C
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# ------------------------------
# Función para borrar la pantalla
# ------------------------------
def limpiar_pantalla():
"""Borra todo el contenido actual de la pantalla OLED"""
oled.fill(0) # Rellena la pantalla con negro (0 = apagado)
oled.show() # Aplica los cambios en la pantalla
# ------------------------------
# Función para mostrar texto
# ------------------------------
def mostrar_texto(texto, x=0, y=0):
"""
Muestra un texto en la pantalla OLED.
Parámetros:
- texto: cadena a mostrar
- x: posición horizontal en píxeles (0 a 127)
- y: posición vertical en píxeles (0 a 63)
"""
oled.text(texto, x, y) # Escribe el texto en la posición dada
oled.show() # Muestra el texto en pantalla
# ------------------------------
# Bucle principal del programa
# ------------------------------
contador=0
while True:
"""Este bucle se repite para mostrar texto, esperar y limpiar"""
limpiar_pantalla() # Borra lo que había en pantalla
# Muestra tres líneas de texto en diferentes posiciones verticales
mostrar_texto("Hola Mundo!", 24, 0) # Línea 1, arriba
mostrar_texto("ESP32 + OLED", 0, 16) # Línea 2, un poco más abajo
mostrar_texto("MicroPython", 0, 32) # Línea 3, más abajo aún
mostrar_texto(str(contador), 24, 54) #mostrar vueltas
utime.sleep(1) # Espera 5 segundos con el texto visible
limpiar_pantalla() # Borra la pantalla antes de repetir
contador+=1