from machine import Pin, I2C, ADC # Importa control de pines, I2C y ADC
import ssd1306 # Librería de la pantalla OLED
import time # Para los retardos
# Configuración de pines I2C en ESP32
I2C_SCL = 22 # Pin SCL del ESP32: Serial Clock):Es la línea de reloj.
I2C_SDA = 21 # Pin SDA del ESP32 (Serial Data): Es la línea de datos.
# Inicializar el bus I2C
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
# Inicializar pantalla OLED de 128x64
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Configurar el sensor LDR en GPIO 34 con ADC
ldr = ADC(Pin(34))
ldr.atten(ADC.ATTN_11DB) # Configura rango de 0V a 3.3V
def limpiar_pantalla():
"""Borra todo el contenido de la pantalla OLED."""
oled.fill(0)
oled.show()
def mostrar_texto(texto, x=0, y=0):
"""Muestra un texto en la posición (x, y) en la OLED."""
oled.text(texto, x, y)
oled.show()
# Bucle principal
while True:
valor = ldr.read() # Lee el valor analógico del LDR (0-4095)
print("Luz detectada:", valor) # Muestra en consola para monitoreo
limpiar_pantalla() # Limpia antes de mostrar nuevos datos
mostrar_texto("Luz", 0, 0)
mostrar_texto("Detectada", 0, 16)
mostrar_texto(str(valor), 0, 32) # Convertir a str antes de mostrar
time.sleep(2) # Espera 2 segundos antes de la siguiente lectura