from machine import Pin, PWM
from dht import DHT22
from utime import sleep
# Configura PWM nos pinos do LED RGB (ânodo comum)
led_red = PWM(Pin(13))
led_green = PWM(Pin(14))
led_blue = PWM(Pin(15))
for led in (led_red, led_green, led_blue):
led.freq(1000)
# Sensor DHT22 no GP12
sensor = DHT22(Pin(12))
def set_color(r, g, b):
"""
r, g, b variam de 0.0 a 1.0
Ânodo comum: 0 = ligado, 1 = desligado
"""
led_red.duty_u16(int((1 - r) * 65535))
led_green.duty_u16(int((1 - g) * 65535))
led_blue.duty_u16(int((1 - b) * 65535))
def temp_to_color(temp):
if temp <= 20:
return (0, 0, 1) # Azul
elif temp < 25:
# 20–25°C → Azul -> Verde
t = (temp - 20) / 5
return (0, t, 1 - t)
elif temp < 30:
# 25–30°C → Verde -> Vermelho (passa por amarelo)
t = (temp - 25) / 5
return (t, 1, 0)
else:
return (1, 0, 0) # Vermelho
while True:
try:
sensor.measure()
temp = sensor.temperature()
umid = sensor.humidity()
except Exception as e:
print("Erro leitura DHT:", e)
temp = None
umid = None
if temp is not None:
print("Temperatura: {}°C".format(temp))
print("Umidade: {}%".format(umid))
r, g, b = temp_to_color(temp)
set_color(r, g, b)
else:
set_color(0, 0, 0) # Apagado
sleep(1) # leitura mais rápida pra dar fluidez