print("Smart Fan System (DHT22 + Servo + OLED)")
print("Date: 13/4/2026")
# import lib
from machine import Pin, SoftI2C, PWM
import dht
import oled_lib
from time import sleep
# pin declaration
dht_pin = Pin(4)
servo = PWM(Pin(13), freq=50) # 🔥 tukar ke GPIO 13
# OLED I2C
Oled_pin = SoftI2C(scl=Pin(22), sda=Pin(21))
# object declaration
sensor = dht.DHT22(dht_pin)
screen = oled_lib.SSD1306_I2C(128, 64, Oled_pin)
# servo initial position
servo.duty(77)
sleep(1)
# main program
while True:
try:
sensor.measure()
temp = sensor.temperature()
print("Temperature:", temp, "C")
# condition control servo
if temp >= 30:
servo.duty(128) # laju
fan_status = "HIGH SPEED"
elif 25 <= temp < 30:
servo.duty(77) # sederhana
fan_status = "MEDIUM SPEED"
else:
servo.duty(26) # perlahan
fan_status = "LOW SPEED"
# OLED display
screen.fill(0)
screen.text("SMART FAN", 10, 0)
screen.text("Temp: " + str(temp) + "C", 0, 20)
screen.text(fan_status, 0, 40)
screen.show()
except:
print("Sensor / System Error")
sleep(2)