from machine import Pin, ADC
import time
pir = Pin(15, Pin.IN)
rele = Pin(14, Pin.OUT)
ldr = ADC(26)
UMBRAL_LUZ = 30000
TIEMPO_MANTENIMIENTO = 5
tiempo_sin_movimiento = 0
luz_encendida = False
print("Iniciando Sistema... Esperando lecturas.")
while True:
valor_luz = ldr.read_u16()
movimiento = pir.value()
# ---- LÍNEA DE DEBUG: Mira la consola negra de Wokwi ----
print(f"Luz leída: {valor_luz} | Movimiento: {movimiento} | Relevador: {rele.value()}")
# 2. Lógica de Control
# Condición A: Está oscuro (valor_luz MAYOR a 30000) y entra alguien
if valor_luz > UMBRAL_LUZ and movimiento == 1:
if not luz_encendida:
print(">>> OSCURIDAD Y PRESENCIA DETECTADAS. Encendiendo focos.")
rele.value(1) # Enciende el relevador
luz_encendida = True
tiempo_sin_movimiento = 0
# Condición B: La luz está encendida, pero ya no detecta a nadie
elif luz_encendida and movimiento == 0:
tiempo_sin_movimiento += 0.5
if tiempo_sin_movimiento >= TIEMPO_MANTENIMIENTO:
print(f">>> Aula vacía por {TIEMPO_MANTENIMIENTO}s. Apagando luces.")
rele.value(0)
luz_encendida = False
# Condición C: Hay luz natural (valor_luz MENOR a 30000, ej. 500)
elif valor_luz <= UMBRAL_LUZ:
if luz_encendida:
print(">>> LUZ NATURAL SUFICIENTE. Apagando luces.")
rele.value(0)
luz_encendida = False
tiempo_sin_movimiento = 0
time.sleep(0.5)