from machine import Pin, I2C
import ssd1306
import dht
import time
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
dht_sensor = dht.DHT22(Pin(27))
while True:
try:
# Membaca data dari sensor DHT22
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
#Menampilkan suhu dan kelembaban pada serial monitor
print('Suhu =', temperature, 'C', 'Kelembaban =', humidity, '%')
# Membersihkan layar OLED
oled.fill(0)
# Menampilkan suhu dan kelembaban di OLED
oled.text("Suhu: {:.1f} C".format(temperature), 0, 0)
oled.text("Kelembaban: {:.1f} %".format(humidity), 0, 10)
# Peringatan Suhu Tinggi
if temperature > 30:
oled.text("WARNING:", 0, 30)
oled.text("Suhu Tinggi!", 0, 40)
# Peringatan Kelembaban Rendah
if humidity < 20:
oled.text("WARNING:", 0, 50)
oled.text("Kelembaban Rendah!", 0, 60)
# Menampilkan data di OLED
oled.show()
except OSError as e:
oled.fill(0)
oled.text("Error: Gagal", 0, 0)
oled.text("Membaca DHT22", 0, 10)
oled.show()
print("Gagal membaca data dari sensor DHT22")
time.sleep(2)