from machine import Pin, ADC, PWM
from utime import sleep
from dht import DHT22
def main():
# Inicialización de componentes al principio del programa
dht_sensor = DHT22(Pin(33))
servosg90 = PWM(Pin(21), freq=50) # El servo se inicializa solo una vez
while True:
# Pausa para dar tiempo al sensor DHT11 para estabilizarse
sleep(2)
# Lectura del sensor
try:
dht_sensor.measure()
T = dht_sensor.temperature()
H = dht_sensor.humidity()
print(f"La temperatura es de: {T}°C y la humedad de: {H}%")
# Cálculo de ángulos, si es necesario
T_angulo = ((T + 40) * 180 / 120)
H_angulo = (H * 180 / 100)
print(f"Ángulo T: {T_angulo}")
print(f"Ángulo H: {H_angulo}")
except OSError as e:
print("Error al leer el sensor DHT22:", e)
continue # Si hay un error, el programa continúa a la siguiente iteración
# El usuario ingresa un ángulo
try:
angulo1 = float(input("Ingrese el ángulo del servomotor (0-180): "))
if 0 <= angulo1 <= 180:
# Usando tu fórmula original
duty = (3.06084 * angulo1**2 + 10278 * angulo1 + 550000)
conversion = duty / 1000000
mili = int(conversion * 1023 / 20)
servosg90.duty(mili)
print(f"Servo movido a {angulo1}°")
else:
print("Por favor, ingrese un número entre 0 y 180.")
except ValueError:
print("Entrada inválida. Por favor, ingrese un número.")
# Pausa para que el servo tenga tiempo de moverse
sleep(1)
if __name__ == '__main__':
main()