print('\nProgram: Automatic Door System')
print('by Muhammad Raziq Afiq B Ramlan L03')
print('7/12/2023 \n')
#Import all necessary libraries
from machine import Pin, SoftI2C, PWM
from utime import sleep
import SSD1306 #OLED Library
import library_servo #SERVO Library
import dht #Sensor DHT22
#Pin declaration
led_red = Pin(2, Pin.OUT)
led_green = Pin(15, Pin.OUT)
buzzer = PWM(Pin(13), Pin.OUT)
sensor = dht.DHT22(Pin(33))
motor = PWM(Pin(25, Pin.OUT))
motor.freq(50)
oled = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = SSD1306.SSD1306_I2C(width=oled_width, height=oled_height, i2c=oled) #library name.class name()
#Parameter declaration
counter = 1
#Main Program
while True:
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
print('Session', counter)
counter = counter+1
print("Temperature: %3.1f C" %temp)
print("Humidity: %3.1f %%" %hum)
#Celcius above 16°C
if temp > 16:
led_red.on()
motor.duty(115)
oled.fill(0)
oled.text('Temperature High', 01, 10)
oled.text('Door Close', 18, 38)
oled.show()
sleep(3)
oled.fill(0)
oled.text("Temperature:", 15, 0)
oled.text(str(temp), 45, 15)
oled.text("Humidity:", 25, 30)
oled.text(str(hum), 45, 45)
oled.show()
print("Door is Close")
print("Temperature still high \n")
#Humidity below 50%
elif hum < 50:
led_red.on()
motor.duty(115)
oled.fill(0)
oled.text('Humidity low', 01, 10)
oled.text('Door Close', 18, 38)
oled.show()
sleep(3)
oled.fill(0)
oled.text("Temperature:", 15, 0)
oled.text(str(temp), 45, 15)
oled.text("Humidity:", 25, 30)
oled.text(str(hum), 45, 45)
oled.show()
print("Door is close")
print("Humidity still low \n")
#Scenario wheres the owner can enter room
else:
led_red.off()
motor.duty(40)
oled.fill(0)
oled.show()
oled.text('Temperature low', 01, 10)
oled.text('Come Enter', 18, 38)
oled.show()
sleep(2)
oled.fill(0)
oled.show()
oled.text("Temperature:", 15, 0)
oled.text(str(temp), 45, 15)
oled.text("Humidity:", 25, 30)
oled.text(str(hum), 45, 45)
oled.show()
print("Temperature already low")
print("Come enter my room \n")
for (i) in range (10): #Counting 10 times
led_green.on()
sleep(0.3)
buzzer.init(freq=800, duty=400)
sleep(0.3)
led_green.off()
sleep(0.3)
buzzer.init(freq=1, duty=0)
sleep(0.3)
break
sleep(3)