print("Auto Mall Door")
print("Date: 13/4/2026")
#Import libraries
from machine import Pin, PWM, I2C, SoftI2C
import time
import oled_lib
#Pin Declaration
pir = Pin(13, Pin.IN)
servo = PWM(Pin(14), freq=50)
Oled_pin = SoftI2C(scl = Pin(22) , sda = Pin(21))
green_led = Pin(18, Pin.OUT)
red_led = Pin(19, Pin.OUT)
#Object Declaration
#ObjectName = LibraryName.Classname(.....)
screen = oled_lib.SSD1306_I2C(width = 128, height = 64, i2c = Oled_pin)
#Main Program
def set_angle(angle):
duty = int((angle / 180) * 102 + 26)
servo.duty(duty)
def door_open():
set_angle(90)
def door_close():
set_angle(0)
while True:
motion = pir.value()
if motion == 1:
print("Motion detected!")
# Open door
door_open()
#Display OPEN
screen.fill(0)
screen.text("Door: OPEN", 20, 30)
screen.show()
red_led.off()
green_led.on()
time.sleep(3)
else:
print("No motion")
# Close door
door_close()
# Display CLOSED
screen.fill(0)
screen.text("Door: CLOSED", 10, 30)
screen.show()
red_led.on()
green_led.off()
time.sleep(2)