print("\nThis Program Will Test Smart Traffic Control System")
print("Practical Test")
print("Created By : MUHAMMAD ASYRAAF BIN ASRI")
print("Date: 1/4/2024\n")
#Import libraries/modules
from machine import Pin, SoftI2C
from utime import sleep
import oled_library
#Pin declaration
red_led = Pin(5,Pin.OUT)
yellow_led = Pin(4,Pin.OUT)
green_led = Pin(2,Pin.OUT)
PIR_pin = Pin(32,Pin.IN)
oled_pin = SoftI2C(scl=Pin(22), sda=Pin(21))
#GPIO pins for 7-segment display segments (a-g)
# a= Pin(33, Pin.OUT)
# b= Pin(25, Pin.OUT)
# c=Pin(26, Pin.OUT)
# d= Pin(27, Pin.OUT)
# e=Pin(14, Pin.OUT)
# f= Pin(12, Pin.OUT)
# g=Pin(13, Pin.OUT)
pins=[Pin(33, Pin.OUT),Pin(25, Pin.OUT),Pin(26, Pin.OUT),Pin(27, Pin.OUT),
Pin(14, Pin.OUT),Pin(12, Pin.OUT),Pin(13, Pin.OUT)]
#Parameter declaration
#Create an OBJECT name for module with library
screen = oled_library.SSD1306_I2C(width=128, height=64, i2c=oled_pin)
digit0=[0,0,0,0,0,0,1]
digit1=[1,0,0,1,1,1,1]
digit2=[0,0,1,0,0,1,0]
digit3=[0,0,0,0,1,1,0]
digit4=[1,0,0,1,1,0,0]
digit5=[0,1,0,0,1,0,0]
digit6=[0,1,0,0,0,0,0]
digit7=[0,0,0,1,1,1,1]
digit8=[0,0,0,0,0,0,0]
digit9=[0,0,0,0,1,0,0]
#main program
while True:
red_led.off() #initialize
green_led.off() #initialize
yellow_led.off() #initialize
motion_status = PIR_pin.value() #.value (read digital value (1 or 0))
print("The motion status is",motion_status)
if motion_status == True:
green_led.on() # Green Traffic Light
screen.fill(0)
screen.text("GO", 45, 30, 1)
screen.show()
sleep(1)
for j in range(7):
pins[j].value(digit9[j])
sleep(1)
for j in range(7):
pins[j].value(digit8[j])
sleep(1)
for j in range(7):
pins[j].value(digit7[j])
sleep(1)
for j in range(7):
pins[j].value(digit6[j])
sleep(1)
for j in range(7):
pins[j].value(digit5[j])
sleep(1)
for j in range(7):
pins[j].value(digit4[j])
sleep(1)
for j in range(7):
pins[j].value(digit3[j])
sleep(1)
for j in range(7):
pins[j].value(digit2[j])
sleep(1)
for j in range(7):
pins[j].value(digit1[j])
sleep(1)
for j in range(7):
pins[j].value(digit0[j])
sleep(1)
green_led.off()
sleep(1)
for a in range(5):
yellow_led.on()
screen.fill(0)
screen.text("WAIT", 45, 30, 1)
screen.show()
sleep(0.5)
yellow_led.off()
sleep(0.5)
red_led.on() # Red Traffic Light
screen.fill(0)
screen.text("STOP", 45, 30, 1 ,)
screen.show()
sleep(1)
for j in range(7):
pins[j].value(digit9[j])
sleep(1)
for j in range(7):
pins[j].value(digit8[j])
sleep(1)
for j in range(7):
pins[j].value(digit7[j])
sleep(1)
for j in range(7):
pins[j].value(digit6[j])
sleep(1)
for j in range(7):
pins[j].value(digit5[j])
sleep(1)
for j in range(7):
pins[j].value(digit4[j])
sleep(1)
for j in range(7):
pins[j].value(digit3[j])
sleep(1)
for j in range(7):
pins[j].value(digit2[j])
sleep(1)
for j in range(7):
pins[j].value(digit1[j])
sleep(1)
for j in range(7):
pins[j].value(digit0[j])
sleep(1)
red_led.off()
sleep(1)
else:
green_led.on() # Green Traffic Light
screen.fill(0)
screen.text("GO", 45, 30, 1)
screen.show()
sleep(1)
for j in range(7):
pins[j].value(digit9[j])
sleep(1)
for j in range(7):
pins[j].value(digit8[j])
sleep(1)
for j in range(7):
pins[j].value(digit7[j])
sleep(1)
for j in range(7):
pins[j].value(digit6[j])
sleep(1)
for j in range(7):
pins[j].value(digit5[j])
sleep(1)
for j in range(7):
pins[j].value(digit4[j])
sleep(1)
for j in range(7):
pins[j].value(digit3[j])
sleep(1)
for j in range(7):
pins[j].value(digit2[j])
sleep(1)
for j in range(7):
pins[j].value(digit1[j])
sleep(1)
for j in range(7):
pins[j].value(digit0[j])
sleep(1)
green_led.off()
sleep(1)
for a in range(5):
yellow_led.on()
screen.fill(0)
screen.text("WAIT", 45, 30, 1)
screen.show()
sleep(0.5)
yellow_led.off()
sleep(0.5)
red_led.on() # Red Traffic Light
screen.fill(0)
screen.text("STOP", 45, 30, 1 ,)
screen.show()
sleep(1)
for j in range(7):
pins[j].value(digit9[j])
sleep(1)
for j in range(7):
pins[j].value(digit8[j])
sleep(1)
for j in range(7):
pins[j].value(digit7[j])
sleep(1)
for j in range(7):
pins[j].value(digit6[j])
sleep(1)
for j in range(7):
pins[j].value(digit5[j])
sleep(1)
for j in range(7):
pins[j].value(digit4[j])
sleep(1)
for j in range(7):
pins[j].value(digit3[j])
sleep(1)
for j in range(7):
pins[j].value(digit2[j])
sleep(1)
for j in range(7):
pins[j].value(digit1[j])
sleep(1)
for j in range(7):
pins[j].value(digit0[j])
sleep(1)
red_led.off()
sleep(2)