import machine
import time
import dht
from machine import Pin, PWM
# Configuración del sensor DHT22
sensor = dht.DHT22(Pin(13))
# Configuración de los LED
led_temperatura = Pin(19, Pin.OUT)
led_humedad = Pin(21, Pin.OUT)
led_persiana = Pin(2, Pin.OUT)
# Configuración de los pines del sensor de distancia HC-SR04
trigger_pin = Pin(5, Pin.OUT)
echo_pin = Pin(18, Pin.IN)
# Configuración del servomotor
servo_pin = Pin(4, Pin.OUT)
servo = PWM(servo_pin, freq=50)
# Configuración del diodo LED normal
led_diode = Pin(12, Pin.OUT)
# Configuración del sensor PIR
pir_sensor = Pin(15, Pin.IN)
# Función para medir la distancia utilizando el sensor HC-SR04
def medir_distancia():
# Genera un pulso en el pin de activación del sensor
trigger_pin.on()
time.sleep_us(10)
trigger_pin.off()
# Mide el tiempo que toma para que el eco vuelva
while echo_pin.value() == 0:
pulse_start = time.ticks_us()
while echo_pin.value() == 1:
pulse_end = time.ticks_us()
# Calcula la distancia en centímetros
pulse_duration = time.ticks_diff(pulse_end, pulse_start)
distancia = (pulse_duration * 0.0343) / 2
return distancia
# Inicialmente, el diodo LED está apagado
led_diode.off()
while True:
sensor.measure()
humedad = sensor.humidity()
temperatura_celsius = sensor.temperature()
print("Humedad: {} %".format(humedad))
print("Temperatura en Celsius: {} °C".format(temperatura_celsius))
if temperatura_celsius < 25:
led_temperatura.on()
else:
led_temperatura.off()
if humedad < 75:
led_humedad.on()
else:
led_humedad.off()
distancia = medir_distancia()
if distancia < 10:
# Enciende el diodo LED y mueve el servomotor 90 grados
led_diode.on()
servo.duty(25)
else:
# Apaga el diodo LED y vuelve el servomotor a la posición inicial (0 grados)
led_diode.off()
servo.duty(75)
# Verifica si el sensor PIR detecta movimiento
if pir_sensor.value():
led_persiana.on()
time.sleep(0.5)
led_persiana.off()
time.sleep(0.1) # Espera antes de la siguiente medición