print("Car Parking System")
print("Date: 13/12/2023")
print("210218623_Muhammad Raohillah")
#CAR PARKING SYSTEM
#======IMPORT LIBRARIES======
from machine import Pin,ADC
from utime import sleep
#SERVO
import servo_lib, servo_lib1
#OLED
import OLED_lib, OLED_lib1
from machine import SoftI2C
#ULTRASONIC
import ultrasonic_lib, ultrasonic_lib1
#======DECLARE PIN======
#SERVO
gate_in = Pin(4, Pin.OUT)
gate_exit = Pin(19, Pin.OUT)
#OLED
pin_oled = SoftI2C(scl=Pin(22),sda=Pin(21))
pin_oled1 = SoftI2C(scl=Pin(33),sda=Pin(32))
#ULTRASONIC
TRIG1 = Pin(13, Pin.IN)
ECHO1 = Pin(12, Pin.OUT)
TRIG2 = Pin(14, Pin.IN)
ECHO2 = Pin(27, Pin.OUT)
#LED
led = Pin(26, Pin.OUT)
G1 = Pin(15, Pin.OUT)
G2 = Pin(2, Pin.OUT)
R1 = Pin(5, Pin.OUT)
R2 = Pin(18, Pin.OUT)
#PIR
car_enter = Pin(23, Pin.IN)
car_out = Pin(35, Pin.IN)
#LDR
LDR_pin = ADC(Pin(25, Pin.IN))
#======Object NAME = library.NAME.CLASS_NAME(........)==========
#SERVO
parking_gate_enter = servo_lib.Servo(pin = gate_in)
parking_gate_out = servo_lib1.Servo(pin = gate_exit)
#OLED
parking_screen = OLED_lib.SSD1306_I2C( width = 128 , height = 64 , i2c = pin_oled)
parking_space = OLED_lib1.SSD1306_I2C( width = 128 , height = 64 , i2c = pin_oled1)
#ULTRASONIC
parking_sensor_A = ultrasonic_lib.HCSR04(trigger_pin = TRIG1 , echo_pin = ECHO1)
parking_sensor_B = ultrasonic_lib.HCSR04(trigger_pin = TRIG2 , echo_pin = ECHO2)
#PIR
ENTER = car_enter
OUT = car_out
#=======Main program=======
while True:
#======LIGHT ON/OFF=====
analog_value_LDR = LDR_pin.read()
print(analog_value_LDR)
voltage_of_light_intensity = analog_value_LDR / 4096 * 5
if voltage_of_light_intensity < 2.5:
led.on()
else:
led.off()
#=====CAR ENTER/EXIT PARKING AREA=====
car_enter_parking = ENTER.value()
if car_enter_parking == True:
for u in range(1):
print ("Selamat Datang")
parking_screen.fill(1)
parking_screen.text ("Selamat",15 ,20, 0)
parking_screen.text ("Datang",20 ,40, 0)
parking_screen.show()
sleep(0.5)
parking_gate_enter.move(angle = 180)
sleep(3)
car_exit_parking = OUT.value()
if car_exit_parking == True:
for u in range(1):
print ("Selamat berkendara")
parking_space.fill(1)
parking_space.text ("Selamat berkendara.",15 ,20, 0)
parking_space.text ("Hati-hati",20 ,40, 0)
parking_space.show()
sleep(0.5)
parking_gate_out.move(angle = 180)
sleep(3)
parking_gate_out.move(angle = 0)
sleep(3)
else:
for u in range(1):
print ("MOBIL KELUAR ")
parking_space.fill(1)
parking_space.text ("KELUAR",15 ,20, 0)
parking_space.show()
sleep(0.5)
parking_gate_enter.move(angle = 0)
sleep(0.5)
parking_gate_out.move(angle = 0)
sleep(0.5)
#=====PARKING A=====
parking_A = parking_sensor_A.distance_cm()
if parking_A > 400:
#GREEN
for u in range(1):
print("Parkiran Kosong di A1.")
G1.on()
R1.off()
sleep(0.5)
parking_screen.fill(1)
parking_screen.text ("PARKING:",15 ,20, 0)
parking_screen.text ("A1,",20 ,40, 0)
parking_screen.show()
else:
#RED
for u in range(1):
print("Parkiran A1 Full!")
G1.off()
R1.on()
sleep(0.5)
parking_screen.fill(1)
parking_screen.text ("PARKING:",15 ,20, 0)
parking_screen.text ("",20 ,40, 0)
parking_screen.show()
sleep(2)
#=====PARKING B=====
parking_B = parking_sensor_B.distance_cm()
if parking_B > 400:
#GREEN
for u in range(1):
print("Parkiran Kosong di B2.")
G2.on()
R2.off()
sleep(0.5)
parking_screen.fill(1)
parking_screen.text ("PARKING:",15 ,20, 0)
parking_screen.text (" B2",20 ,40, 0)
parking_screen.show()
sleep(0.5)
else:
#RED
for u in range(1):
print("Parkiran B2 Full!")
G2.off()
R2.on()
sleep(0.5)
parking_screen.fill(1)
parking_screen.text ("PARKING:",15 ,20, 0)
parking_screen.text ("",20 ,40, 0)
parking_screen.show()
sleep(0.5)