from machine import ADC, Pin, PWM
import time
import math
ldr2 = ADC(Pin(26)) # asignacion del pin de lectura de sensor de luminosidad
pir_sensor = Pin(20, Pin.IN)# Configura el pin 20 como entrada (para leer el sensor PIR)
led3 = Pin(12, Pin.OUT) # asignacion de pin de salida de led
# Parámetros de calibración sensor de luminosidad
RL10 = 50.0 # Resistencia a 1 lux
GAMMA = 0.7 # Valor del exponente GAMMA (ajustable según el tipo de LDR)
VREF = 3.3 # Voltaje de referencia (en este caso 3.3V)
# Configuración del servomotor
servo2 = PWM(Pin(10))
servo2.freq(50)
def set_servo_angle2(angle):
# Configurar el ángulo del servomotor usando duty_u16
duty2 = int((angle / 180) * 65535 / 20 + 3276.5)
servo2.duty_u16(duty2)
# Bucle principal
while True:
# Leer valor del ADC del LDR (luminosidad)
valor_adc_ldr2 = ldr2.read_u16()
#convertimos el valor ADC a voltaje
voltage_ldr2 = valor_adc_ldr2 * VREF / 65535
#calculamos la resistencia del LRD
resistencia_ldr2 = (voltage_ldr2 * 10000) / (VREF - voltage_ldr2)
#calculamos los lux de acuerdo a ecuacion aproximidad
lux2 = math.pow(RL10 * 1e3 * math.pow(10, GAMMA) / resistencia_ldr2, (1 / GAMMA))
print(" Luz: {}".format(lux2))
# Controlar el servomotor basado en la luminosidad
if lux2 < 1000 : # Servo motor entra en funcionamiento
set_servo_angle2(90) # Abrir la puerta
else:
set_servo_angle2(-90) # Cerrar la puerta
# encendido y apagado de led al momento de detectar movimiento en habitacion
if pir_sensor.value() == 1:
led3.value(1)
print("Movimiento detectado en la habitación!")
else:
led3.value(0)
print("Sin movimiento en la habitación")
time.sleep(1)