import machine
import time
from machine import Pin
from dht import DHT22
# Sensor DHT22
sensor = DHT22(Pin(4))
# Servo en pin 2
servo_pin = machine.Pin(2, machine.Pin.OUT)
servo = machine.PWM(servo_pin)
servo.freq(50)
# Mapear ángulo a ciclo útil (duty)
def map_val(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
def mover_servo(servo, angulo):
duty = map_val(angulo, 0, 180, 20, 120)
servo.duty(duty)
# Umbral para activar el servo
umbral_temp = 25 # °C
while True:
try:
sensor.measure()
temp = sensor.temperature()
humidity = sensor.humidity()
print("Temperatura: {:.2f} C".format(temp))
print("Humedad: {:.2f} %".format(humidity))
if temp > umbral_temp:
# Cuanto más caliente, más rápido se mueve
delay = max(0.1, 1 - (temp - umbral_temp) * 0.05) # velocidad inversa a la temperatura
for angulo in range(0, 180, 30):
mover_servo(servo, angulo)
time.sleep(delay)
for angulo in range(180, 0, -30):
mover_servo(servo, angulo)
time.sleep(delay)
else:
print("Temperatura baja. Servo inactivo.")
mover_servo(servo, 90) # posición de descanso
except Exception as e:
print("Error:", e)
time.sleep(1)