"""Controlar o brilho do LED amarelo de acordo com a umidade medida pelo DHT22, usando PWM.
Objetivo: representar uma grandeza analógica por meio da intensidade luminosa.
Aplicação: criar uma indicação gradual de ar seco, normal ou muito úmido."""
from machine import Pin, PWM
from time import sleep
import dht
#componentes
sensor = dht.DHT22(Pin(15))
led_verde = Pin(18, Pin.OUT)
led_amarelo = PWM(Pin(19), freq=1000)
led_vermelho = PWM(Pin(21), Pin.OUT)
led_amarelo.duty_u16(0)
led_vermelho.duty_u16(0)
def desligar_leds():
led_verde.value(0)
led_amarelo.duty_u16(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()
while True:
try:
sensor.measure()
temperatura = sensor.temperature()
#umidade = sensor.humidity()
umidade = int(input("Digite a umidade: "))
print()
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)
print()
# 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)
print()
# umidade em atenção
else:
print("Situação: MUITO ÚMIDO")
print("Umidade em : {:.1f} %".format(umidade))
print("PWM do LED amarelo:", valor_pwm)
print()
except OSError as erro:
print("Erro na leitura do DHT22:", erro)
sleep(2)