# 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 = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
# ------------------------------
# Inicialización de la pantalla OLED
# ------------------------------
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# ------------------------------
# Configuración del botón
# ------------------------------
boton = Pin(15, Pin.IN, Pin.PULL_UP)
# Usa el pin GPIO15 para el botón (cámbialo si usas otro).
# PULL_UP significa que normalmente está en HIGH y baja a 0 al presionar.
# ------------------------------
# Función para borrar la pantalla
# ------------------------------
def limpiar_pantalla():
oled.fill(0)
oled.show()
# ------------------------------
# Función para mostrar texto
# ------------------------------
def mostrar_texto(texto, x=0, y=0):
oled.text(texto, x, y)
oled.show()
# ------------------------------
# Bucle principal del programa
# ------------------------------
contador = 0
while True:
limpiar_pantalla()
# Muestra información normal
mostrar_texto("Hola Mundo!", 24, 0)
mostrar_texto("ESP32 + OLED", 0, 16)
mostrar_texto("MicroPython", 0, 32)
mostrar_texto(str(contador), 24, 54)
# Si se presiona el botón, mostrar mensaje extra
if boton.value() == 0: # Botón presionado
limpiar_pantalla()
mostrar_texto("Boton presionado!", 0, 24)
utime.sleep(1) # Mostrar el mensaje por 1 segundo
utime.sleep(1)
limpiar_pantalla()
contador += 1