from machine import Pin, ADC, I2C, PWM
from ssd1306 import SSD1306_I2C
import dht
import time
def ler_temperatura_e_umidade(sensor):
try:
sensor.measure()
temperatura = round(sensor.temperature(), 2)
umidade = round(sensor.humidity(), 2)
return temperatura, umidade
except OSError as e:
time.sleep(2)
def exibir_display(valor1, valor2):
oled.fill(0)
oled.text(f"Temp.: {valor1} C", 0, 0)
oled.text(f"Umd.: {valor2}", 0, 16)
oled.show()
def acender_led(valor_red, valor_green, valor_blue):
duty_r = int(valor_red/100 * 65535)
duty_g = int(valor_green/100 * 65535)
duty_b = int(valor_blue/100 * 65535)
pwb_r.duty_u16(duty_r)
pwb_g.duty_u16(duty_g)
pwb_b.duty_u16(duty_b)
def cor_led(valor1, valor2):
if valor1 <= 50 and 40 <= valor2 <= 100:
return 0, 100, 0
if 51 <= valor1 <= 70 or 20 <= valor2 <= 39:
return 100, 100, 0
else:
return 100, 0, 0
#Potenciometro
potenciometro = ADC(Pin(5))
#Sensor de temperatura e umidade
d = dht.DHT22(Pin(13))
#Led
frequencia = 1000
pwb_r = (PWM(Pin(12), freq = frequencia))
pwb_b = (PWM(Pin(25), freq = frequencia))
pwb_g = (PWM(Pin(14), freq = frequencia))
#Display
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = SSD1306_I2C(128, 64, i2c)
while True:
valor_lido = potenciometro.read()
print(valor_lido)
temperatura, umidade = ler_temperatura_e_umidade(d)
time.sleep(0.5)
exibir_display(temperatura, umidade)
r, g, b = cor_led(temperatura, umidade)
acender_led(r, g, b)
time.sleep(2)