# Importamos los modulos necesarios para nuestro proyecto
from machine import Pin, ADC, I2C
from ssd1306 import SSD1306_I2C
import time
# Ahora vamos a configurar las conexiones en el esp32
ldr = ADC(Pin(34)) # El LDR va a ir conectado en GPIO 34
ldr.atten(ADC.ATTN_11DB) # Configuracion de la atenuación para rango completo (0 - 3.3V)
led = Pin(5, Pin.OUT) # El GPIO 21 lo vamos a usar para controlar el LED
# Umbral de luz: Este sera el limite que vamos a definir para que el led se prenda o se apague
light_threshold = 2000
# Configuración del I2C para el display OLED
i2c_oled = I2C(0, scl=Pin(22), sda=Pin(21))
oled = SSD1306_I2C(128, 64, i2c_oled)
def mostrar_en_pantalla(ldr_value, led_state):
oled.fill(0) # Deja la pantalla en blanco
oled.text("Nivel de luz:", 0, 0)
oled.text(f"{ldr_value}", 0, 16)
oled.text("Estado del LED:", 0, 32)
oled.text(f"{led_state}", 0, 48)
oled.show()
while True:
# Primero leemos el valor del LDR - va del 0 a 4095
ldr_value = ldr.read()
# Determinamos el estado del LED según el valor del LDR
if ldr_value < light_threshold:
led.on() # Si es menor al umbral de luz entonces encendemos el LED
led_state = "Encendido"
else:
led.off() # Si es mayor al umbral de luz entonces apagamos el LED
led_state = "Apagado"
# Mostrar el nivel de luz y el estado del LED en la pantalla OLED
mostrar_en_pantalla(ldr_value, led_state)
time.sleep(1)