from machine import Pin, ADC, PWM
from time import sleep
from servo import Servo #Libreria para usar servomotor
from hcsr04 import HCSR04
import dht #Liberia para el uso del sensor DHT22
boton = Pin(2, Pin.IN, Pin.PULL_UP)
#Pantalla =
Potenciometro = ADC(Pin(4))
sensor = dht.DHT22(Pin(15))
#neopixels =
Ultrasonico = (4, 16, 10000)
servo_pin = Pin(14)
my_servo = Servo(servo_pin)
def leer_temperatura():
sensor.measure()
temp = sensor.temperature()
return temp
def leer_humedad():
sensor.measure()
hum = sensor.humidity()
return hum
def control_flujo_agua(temp, hum):
if hum == 100:
my_servo.write_angle(0) # Cerrar la llave del agua cuando se humedezca completamente.
elif 5 <= temp <= 30:
my_servo.write_angle(0) # Cerrar la llave del agua cuando en el momento en que se.
elif temp > 30:
my_servo.write_angle(180) # Abrir la llave del agua al 100%
estado = 0 # 0: apagado, 1: mostrar temperatura, 2: mostrar humedad
while True:
if not boton.value(): # Si el botón está presionado (valor bajo)
estado = (estado + 1) % 3 # Alternar entre 0, 1, 2
while not boton.value(): # Espera hasta que se suelte el botón
pass
sleep(0.5) # Pequeña pausa para evitar rebotes
temp = leer_temperatura()
hum = leer_humedad()
print(ultrasonico.distance_cm())
if estado == 1:
#temp = leer_temperatura()
print("Temp: " + str(temp))
control_flujo_agua(temp, hum)
elif estado == 2:
#hum = leer_humedad()
print("Hum: " + str(hum))
control_flujo_agua(temp, hum)
else:
print("Apagado...")
my_servo.write_angle(0) #Mientras no se realizan lecturas de hum ni temp se cierra la llave.
sleep(1) # Pausa de un segundo entre cada lectura