# Mengimpor library DHT untuk membaca sensor DHT22
import dht
# Mengimpor kelas Pin untuk mengakses GPIO pada ESP32
from machine import Pin
# Mengimpor fungsi sleep untuk memberi jeda waktu
from time import sleep
# Menentukan GPIO 14 sebagai pin input untuk sensor DHT22
dhtPin = Pin(14, Pin.IN)
# Membuat objek sensor DHT22 yang terhubung ke GPIO 14
dhtSensor = dht.DHT22(dhtPin)
# Membuat objek LED 1 pada GPIO 15 sebagai output
led1 = Pin(12 , pin.OUT)
# Membuat objek LED 2 pada GPIO 13 sebagai output
led2 = Pin(13, Pin.OUT)
# Membuat objek LED 3 pada GPIO 12 sebagai output
led3 = Pin(15 , pin.OUT)
# Perulangan utama yang akan berjalan terus-menerus
while True:
try:
# Meminta sensor DHT22 melakukan pengukuran
dhtSensor.measure()
# Mengambil nilai suhu dalam satuan derajat Celsius
suhu = dhtSensor.temperature()
# Mengambil nilai kelembaban dalam persen (%)
kelembaban = dhtSensor.humidity()
# Menampilkan hasil pembacaan sensor ke Serial Monitor
print()
print(f" Suhu: {suhu:5.2f}°C")
print(f"Kelembaban: {kelembaban:5.2f}%")
# Jika suhu lebih dari 30°C
if suhu > 30:
# Menyalakan ketiga LED
led1.on()
led2.on()
led3.on()
# Menampilkan status LED
print("3 LED ON (Suhu > 30°C)")
# Jika suhu berada di antara 20°C sampai 30°C
elif suhu >= 20:
# Menyalakan LED 1 dan LED 2
led1.on()
led2.on()
# Mematikan LED 3
led3.off()
# Menampilkan status LED
print("2 LED ON (20°C - 30°C)")
# Jika suhu berada di antara 10°C sampai kurang dari 20°C
elif suhu >= 10:
# Menyalakan LED 1
led1.on()
# Mematikan LED 2 dan LED 3
led2.off()
led3.off()
# Menampilkan status LED
print("1 LED ON (10°C - 20°C)")
# Jika suhu kurang dari 10°C
else:
# Mematikan semua LED
led1.off()
led2.off()
led3.off()
# Menampilkan status LED
print("Semua LED OFF (Suhu < 10°C)")
# Menangani kesalahan jika sensor gagal dibaca
except OSError as e:
print("Gagal membaca DHT22!")
# Menunggu 1 detik sebelum membaca sensor lagi
sleep(1)