print("Lampu isyarat")
print("Date: 5/12/2023")
print('Created by DAMIA INANI')
import servo_library
import oled_library
from machine import Pin, PWM, SoftI2C
from utime import sleep
#Pin declaration
lampu_merah1 = Pin(25,Pin.OUT)
lampu_kuning1 = Pin(26,Pin.OUT)
lampu_hijau1 = Pin(27,Pin.OUT)
lampu_merah2 = Pin(5,Pin.OUT)
lampu_kuning2 = Pin(18,Pin.OUT)
lampu_hijau2 = Pin(19,Pin.OUT)
lampu_merah3 = Pin(4,Pin.OUT)
lampu_kuning3 = Pin(2,Pin.OUT)
lampu_hijau3 = Pin(15,Pin.OUT)
palang_trafik1= Pin(12, Pin.OUT)
palang_trafik2= Pin(13, Pin.OUT)
palang_trafik3= Pin(14, Pin.OUT)
Pin_scl_sda = SoftI2C (scl=Pin (22), sda=Pin (21))
#Creat an object name using OOP (Object Oriented Programming)
#library name.class name
monitor = oled_library.SSD1306_I2C(width=128, height=64, i2c=Pin_scl_sda)
penghalang1 = servo_library.Servo(pin = palang_trafik1)
penghalang2 = servo_library.Servo(pin = palang_trafik2)
penghalang3 = servo_library.Servo(pin = palang_trafik3)
#Main program
while True:
#Trafic light
lampu_hijau1.on()
monitor.fill (0) #0=black, 1=white
monitor.text ("Trafic 1 Go",10,30,1)
monitor.show ()
lampu_merah2.on()
penghalang2.move(90)
lampu_merah3.on()
penghalang3.move(90)
sleep (5) #5 sec of green light (GO!)
lampu_merah1.off()
lampu_kuning1.on()
lampu_hijau1.off()
sleep (1)
lampu_merah1.on()
penghalang1.move(90)
lampu_kuning1.off()
lampu_merah2.off()
penghalang2.move(0)
lampu_hijau2.on()
monitor.fill (0) #0=black, 1=white
monitor.text ("Trafic 2 Go",10,30,1)
monitor.show ()
lampu_merah3.on()
sleep (5) #5 sec of green light (GO!)
lampu_merah2.off()
lampu_kuning2.on()
lampu_hijau2.off()
sleep (1)
lampu_merah1.on()
lampu_merah2.on()
penghalang2.move(90)
lampu_kuning2.off()
lampu_merah3.off()
penghalang3.move(0)
lampu_hijau3.on()
monitor.fill (0) #0=black, 1=white
monitor.text ("Trafic 3 Go",10,30,1)
monitor.show ()
sleep (5) #5 sec of green light (GO!)
lampu_merah3.off()
lampu_kuning3.on()
lampu_hijau3.off()
sleep (1)
lampu_merah3.on()
penghalang3.move(90)
lampu_kuning3.off()
lampu_merah1.off()
penghalang1.move(0)
lampu_merah2.on()
sleep (5) #5 sec of green light (GO!)