from machine import Pin, SoftI2C
import dht
import time
from adafruit_ssd1306 import SSD1306_I2C
# Configuração do sensor DHT22
sensor = dht.DHT22(Pin(15))
# Configuração do display OLED usando os pinos D21 e D22
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled = SSD1306_I2C(128, 64, i2c)
def ler_sensor():
try:
# Tenta ler os valores do sensor
sensor.measure()
temperatura = sensor.temperature()
umidade = sensor.humidity()
# Exibe os valores no monitor serial
print("Temperatura:", temperatura, "°C")
print("Umidade:", umidade, "%")
# Limpa o display
oled.fill(0)
# Exibe a temperatura e umidade no display
oled.text("Temp: {:.1f} C".format(temperatura), 0, 0)
oled.text("Umidade: {:.1f}%".format(umidade), 0, 10)
# Exibe mensagens no display conforme os parâmetros
if temperatura > 30:
oled.text("Alerta: Temp Alta!", 0, 30)
elif temperatura < 18:
oled.text("Alerta: Temp Baixa!", 0, 30)
else:
oled.text("Temp Normal", 0, 30)
if umidade > 70:
oled.text("Alerta: Umid Alta!", 0, 40)
elif umidade < 30:
oled.text("Alerta: Umid Baixa!", 0, 40)
else:
oled.text("Umidade Normal", 0, 40)
# Atualiza o display com as informações
oled.show()
except OSError as e:
print("Erro ao ler o sensor:", e)
# Loop principal
while True:
ler_sensor()
time.sleep(2)