import time
import machine
#import _thread
time.sleep(0.1) # Wait for USB to become ready
# define button pressed to false
button_pressed = False
# define which pins are used for each Led on board and set pins to output mode
led_red_1 = machine.Pin(14,machine.Pin.OUT)
led_yellow_1 = machine.Pin(13,machine.Pin.OUT)
led_green_1 = machine.Pin(12,machine.Pin.OUT)
led_red_2 = machine.Pin(17,machine.Pin.OUT)
led_yellow_2 = machine.Pin(18,machine.Pin.OUT)
led_green_2 = machine.Pin(19,machine.Pin.OUT)
#Define push buttons and buzzer and the pins they are attached to
push_button_blue = machine.Pin(16,machine.Pin.IN,machine.Pin.PULL_DOWN)
push_button_green = machine.Pin(15,machine.Pin.IN,machine.Pin.PULL_DOWN)
buzzer = machine.Pin(20,machine.Pin.OUT)
#define 7 segment displays
top_segment_A = machine.Pin(5,machine.Pin.OUT,value=1)
top_right_segment_B = machine.Pin(6,machine.Pin.OUT,value=1)
top_left_segment_F = machine.Pin(4,machine.Pin.OUT,value=1)
middle_segment_G = machine.Pin(3,machine.Pin.OUT,value=1)
bottom_right_segment_C = machine.Pin(0,machine.Pin.OUT,value=1)
bottom_left_segment_E = machine.Pin(2,machine.Pin.OUT,value=1)
bottom_segment_D = machine.Pin(1,machine.Pin.OUT,value=1)
def crossing_sequence():
#segment order = [top,top left,top right, middle, bottom left, bottom right, bottom] digits =[1,2,3,4,5]
digits =['1111111','0001000','1101101','0100010','0100100','1000101','0010100']
for i in range(8):
buzzer.value(1)
time.sleep(0.5)
buzzer.value(0)
time.sleep(0.5)
for i in range(7):
number = digits[6-i]
top_segment_A.value(int(number[0]))
top_left_segment_F.value(int(number[1]))
top_right_segment_B.value(int(number[2]))
middle_segment_G.value(int(number[3]))
bottom_left_segment_E.value(int(number[4]))
bottom_right_segment_C.value(int(number[5]))
bottom_segment_D.value(int(number[6]))
buzzer.value(1)
time.sleep(0.5)
buzzer.value(0)
time.sleep(0.5)
button_pressed = False
def traffic_light_sequence():
led_yellow_1.value(0)
led_red_1.value(1)
led_red_2.value(1)
time.sleep(1)
led_yellow_2.value(1)
time.sleep(2)
led_green_2.value(1)
led_red_2.value(0)
led_yellow_2.value(0)
time.sleep(1)
led_green_2.value(0)
led_yellow_2.value(1)
time.sleep(2)
led_yellow_2.value(0)
led_red_2.value(1)
time.sleep(1)
led_yellow_1.value(1)
time.sleep(2)
led_red_1.value(0)
led_yellow_1.value(0)
led_green_1(1)
time.sleep(1)
led_yellow_1.value(1)
led_green_1.value(0)
time.sleep(2)
while True:
if push_button_green.value() == 1 or push_button_blue.value()==1:
button_pressed = True
if button_pressed == True:
led_red_1.value(1)
led_red_2.value(1)
led_yellow_1(0)
crossing_sequence()
button_pressed=False
#Traffic light sequence
traffic_light_sequence()
######################################################################
#button_pressed = False
#while True:
# if push_button_1.value() == 1 or push_button_2.value()==1:
# button_pressed = True
# time.sleep(0.1)
#
# if button_pressed == True:
# for i in range(10):
# buzzer.value(1)
# time.sleep(0.2)
# buzzer.value(0)
# time.sleep(0.2)
# button_pressed = False
#######################################################################
##############################################################################
#Code to run if button has been pressed to act as pedestrian crossing sequence
#if button_pressed == True:
# led_red_1.value(1)
# led_red_2.value(1)
# for i in range(10):
# buzzer.value(1)
# time.sleep(0.2)
# buzzer.value(0)
# time.sleep(0.2)
#global button_pressed
#button_pressed = False
###############################################################################
#############################################################################
#global button_pressed = False
#define function to be run in new thread to check if a button has been pressed
#def button_reader_thread():
# global button_pressed
# while True:
# if push_button_1.value()==1 or push_button_2.value() ==1:
# button_pressed = True
# time.sleep(0.1)
#_thread.start_new_thread(button_reader_thread, ())
############################################################################