# main.py - Hoofdprogramma
import time
import verkeerslicht
import knoppen
print("Start sturing kruispunt")
# Variabelen
state = 0
last_state = -1
time_stamp = 0
time_knipper_stamp = 0
vorige_knipper_status = False
# Tijden
TIJD_NORMAAL = 1000
TIJD_SLOW = 2000
TIJD_KNIPPER = 500
# Initialiseer
knoppen.initialiseer_knoppen()
verkeerslicht.set_lights(r1=1, r2=1) # Start met beide rood
while True:
# Lees knoppen
is_wait_long, is_knippering = knoppen.lees_knoppen() #Tuple unpacking
# Check of knipper modus net is uitgezet
if vorige_knipper_status != is_knippering:
vorige_knipper_status = is_knippering
if is_knippering == 0: # Net uitgezet
print("Knipper uit - reset naar state 0")
state = 0
last_state = -1
verkeerslicht.set_lights(o1=0, o2=0, r1=1, r2=1) # Oranje UIT, beide rood AAN
time_stamp = time.ticks_ms() # Timer resetten
if is_knippering:
# Knipper modus - alle lichten uit behalve knipperende oranje
if time.ticks_ms() - time_knipper_stamp > TIJD_KNIPPER:
time_knipper_stamp = time.ticks_ms()
verkeerslicht.knipper_oranje()
else:
# Normale modus
time_knipper_stamp = time.ticks_ms()
# Bepaal wachttijd
tijd_groen = TIJD_SLOW if is_wait_long else TIJD_NORMAAL
# State machine
if time.ticks_ms() - time_stamp > tijd_groen:
time_stamp = time.ticks_ms()
if state != last_state:
last_state = state
print("Nieuwe state:", state)
# Alleen de lichten zetten die veranderen!
if state == 0:
verkeerslicht.set_lights(r1=1, r2=1, o2=0) # Beide rood, VL2 oranje uit
elif state == 1:
verkeerslicht.set_lights(r1=0, g1=1) # VL1 groen
elif state == 2:
verkeerslicht.set_lights(g1=0, o1=1) # VL1 oranje
elif state == 3:
verkeerslicht.set_lights(o1=0, r1=1) # VL1 rood
elif state == 4:
verkeerslicht.set_lights(r2=0, g2=1) # VL2 groen
elif state == 5:
verkeerslicht.set_lights(g2=0, o2=1) # VL2 oranje
# Volgende state
state = (state + 1) % 6VL2
VL1
SLOW/FAST
ORANGE ON/OFF
slow
fast