from machine import Pin, ADC, PWM
from time import sleep
from neopixel import NeoPixel
from servo import Servo #Libreria para usar servomotor
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))
luz = NeoPixel(Pin(0),3) # Declaración del pin y la cantidad de neopixels.
#Ultrason =
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.
luz[0] = (0,255,0)
luz.write()
luz[1] = (0,255,0)
luz.write()
luz[2] = (0,255,0)
luz.write()
elif 5 <= temp <= 30:
my_servo.write_angle(0) # Cerrar la llave del agua cuando en el momento en que se.
luz[0] = (0,255,0)
luz.write()
luz[1] = (0,255,0)
luz.write()
luz[2] = (0,255,0)
luz.write()
elif temp > 30:
my_servo.write_angle(180) # Abrir la llave del agua al 100%
luz[0] = (0,0,255)
luz.write()
luz[1] = (0,0,255)
luz.write()
luz[2] = (0,0,255)
luz.write()
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()
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