print("Ceiling Fan ")
#Import libraries
from machine import Pin , SoftI2C , PWM
from dht import DHT22
from utime import sleep
import oled_lib
#Declare components
sensor = DHT22(Pin(13, Pin.IN))
oled_pin = SoftI2C(sda=Pin(21) , scl=Pin(22))
servo_pin = 18
#ObjectName = LibraryName.ClassName(.....)
skrin = oled_lib.SSD1306_I2C( width = 128, height = 64, i2c = oled_pin)
servo = PWM(Pin(servo_pin), freq=50)
def set_servo_angle(angle):
min_duty = 25
max_duty = 125
duty = int(min_duty + (angle / 180) * (max_duty - min_duty))
servo.duty(duty)
# FUNCTION: FAN STATUS
def get_fan_status(temp):
if temp <27:
return 0, "OFF"
elif temp <31:
return 90, "MEDIUM"
else:
return 180, "HIGH"
while True:
sensor.measure()
suhu = sensor.temperature() #unit: celcius
humid = sensor.humidity() #unit:%
angle, status = get_fan_status(suhu)
set_servo_angle(angle)
print("Temperature: ",suhu, "C")
print("Humidity: " , humid, "%")
#Display the latest temperature indication
if suhu <27:
set_servo_angle(0)
print("suhu sejuk")
sleep(0.1)
skrin.fill(0)
skrin.text("Smart Fan", 20, 0)
skrin.text("Suhu: " + str(suhu) + " C", 0, 16)
skrin.text("Humid: " + str(humid) + " %", 0, 28)
skrin.text("Status: OFF", 0, 40)
skrin.text("Servo: " + str(angle), 0, 52)
skrin.show()
elif suhu <31:
set_servo_angle(90)
print("suhu sederhana")
sleep(0.1)
skrin.fill(0)
skrin.text("Smart Fan", 20, 0)
skrin.text("Suhu: " + str(suhu) + " C", 0, 16)
skrin.text("Humid: " + str(humid) + " %", 0, 28)
skrin.text("Status: MEDIUM", 0, 40)
skrin.text("Servo: " + str(angle), 0, 52)
skrin.show()
else :
set_servo_angle(180)
print("suhu panas")
sleep(0)
skrin.fill(0)
skrin.text("Smart Fan", 20, 0)
skrin.text("Suhu: " + str(suhu) + " C", 0, 16)
skrin.text("Humid: " + str(humid) + " %", 0, 28)
skrin.text("Status: HIGH", 0, 40)
skrin.text("Servo: " + str(angle), 0, 52)
skrin.show()
sleep(0.1)