from machine import Pin, I2C
import dht
import time
from ssd1306 import SSD1306_I2C
# Inisialisasi layar OLED
def initialize_oled():
i2c = I2C(0, sda= (0), scl= (1),freq= 400000)
oled = SSD1306_I2C(128, 64, i2c)
return oled
# Inisialisasi layar OLED
oled = initialize_oled()
# Konfigurasi pin
dht_sensor = dht.DHT22(Pin( 26 ))
ledBlue = Pin(6, Pin.OUT)
ledRed = Pin(3, Pin.OUT)
ledYellow = Pin(12, Pin.OUT)
# Fungsi untuk membaca suhu dari sensor DHT22
def baca_suhu_dht22():
dht_sensor.measure() # Mengukur suhu dan kelembaban
return dht_sensor.temperature()
while True:
# Baca suhu dari sensor DHT22
suhu_dht22 = baca_suhu_dht22()
# Baca kelembaban ruangan dari sensor DHT
kelembaban_ruangan = dht_sensor.humidity()
# Menampilkan suhu di layar OLED
oled.fill( 0 ) # Hapus layar
oled.text("Suhu:{} C". format (suhu_dht22), 0 , 0)
oled.text("Kelembaban: {}%". format (kelembaban_ruangan),0 ,16)
# Memeriksa apakah suhu dan kelembaban sesuai dengan kondisi tertentu
if 24 <= suhu_dht22 <= 27 and 80 <= kelembaban_ruangan <= 90:
oled.text("Suhu & Kelembaban", 0 , 32)
oled.text(" Sesuai", 0 , 40)
else:
oled.text("Suhu & Kelembaban", 0, 32)
oled.text("Tidak Sesuai", 0 , 40)
oled.show()
# Kontrol LED berdasarkan suhu DHT22
if suhu_dht22 < 23.5:
ledRed.on() # LED merah menyala jika suhu kurang dari 23.5 derajat Celsius
ledBlue.off() # LED biru dimatikan
ledYellow.off() # LED kuning dimatikan
elif 24 <= suhu_dht22 <= 27:
ledRed.off() # LED merah dimatikan
ledBlue.on() # LED biru menyala jika suhu antara 24 dan 27 derajat Celsius
ledYellow.off() # LED kuning dimatikan
elif suhu_dht22 > 27.5:
ledRed.off() # LED merah dimatikan
ledBlue.off() # LED biru dimatikan
ledYellow.on() # LED kuning menyala jika suhu lebih dari 27.5 derajat Celsius
else:
ledRed.off() # LED merah dimatikan
ledBlue.on() # LED biru menyala jika suhu di antara 24 dan 27 derajat Celsius
ledYellow.off() # LED kuning dimatikan
time.sleep( 1 ) # Delay agar tidak membaca suhu terlalu cepat