"""Acrescentar um comando para pausar as medições e outro para retomar a leitura do sensor.
Objetivo: controlar o comportamento do programa durante a execução.
Aplicação: interromper temporariamente coletas durante manutenção, ajustes ou testes."""
from machine import Pin, PWM
from time import sleep
import dht
import sys
import select
sensor = dht.DHT22(Pin(15))
led_verde = Pin(18, Pin.OUT)
led_amarelo = PWM(Pin(19), freq=1000)
led_vermelho = PWM(Pin(21), freq=1000)
led_amarelo.duty_u16(0)
led_vermelho.duty_u16(0)
def desligar_leds():
led_verde.value(0)
led_vermelho.duty_u16(0)
def pwm_umidade(umidade):
"""
Controla o brilho do LED amarelo de acordo com a
umidade medida pelo sensor, usando PWM.
"""
pwm_minimo = 0
pwm_maximo = 65535
pwm = (pwm_minimo + (umidade/100) * (pwm_maximo - pwm_minimo))
return int(pwm)
print()
print("SISTEMA DE MONITORAMENTO DA UMIDADE")
print()
print("Digite 'P' para PAUSAR as medições")
print("Digite 'R' para RETOMAR as medições")
print("Digite 'D' para DESLIGAR o sistema")
print()
pausa_sistema = False
while True:
if select.select([sys.stdin], [], [], 0)[0]:
comando = sys.stdin.readline().strip().upper()
print()
print("Comando recebido:", comando)
if comando == 'P':
pausa_sistema = True
print("As medições foram pausadas")
elif comando == 'R':
pausa_sistema = False
print("As medições foram retomadas")
elif comando == 'D':
print("Sistema Desligado")
led_verde.value(0)
led_amarelo.duty_u16(0)
led_vermelho.duty_u16(0)
break
else:
print("Comando inválido")
print("Use 'P' para PAUSAR, 'R' para RETOMAR ou 'D' para DESLIGAR")
if not pausa_sistema:
try:
sensor.measure()
temperatura = sensor.temperature()
umidade = sensor.humidity()
desligar_leds()
valor_pwm = pwm_umidade(umidade)
led_amarelo.duty_u16(valor_pwm)
print("Temperatura: {:.1f} °C".format(temperatura))
print("Umidade: {:.1f} %".format(umidade))
# tempo seco
if umidade < 35:
print("Situação: TEMPO SECO!")
print("ALERTA: umidade abaixo de 35%")
print("PWM do LED amarelo:", valor_pwm)
# umidade normal
elif umidade >= 35 and umidade < 70:
print("Situação: NORMAL")
print("Umidade em : {:.1f} %".format(umidade))
print("PWM do LED amarelo:", valor_pwm)
# umidade em atenção
else:
print("Situação: MUITO ÚMIDO")
print("Umidade em : {:.1f} %".format(umidade))
print("PWM do LED amarelo:", valor_pwm)
except OSError as erro:
print("Erro na leitura do DHT22:", erro)
sleep(2)