# main.py - Hoofdapplicatie
import time
import config
import verkeerslicht
import input_manager
import state_machine
def initialiseer_systeem():
"""Initialiseer alle componenten"""
print("Start sturing kruispunt")
# Initialiseer alle modules
verkeerslicht.initialiseer_verkeerslichten()
input_manager.initialiseer_input()
state_machine.initialiseer_state_machine()
# Start in state 0
verkeerslicht.pas_verkeerslichten_aan_state(state_machine.get_huidige_state())
print("Systeem geïnitialiseerd")
def hoofd_loop():
"""Hoofdloop van de applicatie"""
initialiseer_systeem()
time_stamp = time.ticks_ms()
knipper_timer = time.ticks_ms()
while True:
# Lees knoppen met debouncing
snelheid_modus, knipper_modus = input_manager.lees_knoppen()
huidige_snelheid = input_manager.get_snelheid()
if knipper_modus:
# Knipper modus actief - stop normale werking
if time.ticks_ms() - knipper_timer > config.KNIPPER_SNELHEID:
knipper_timer = time.ticks_ms()
verkeerslicht.knipper_oranje()
continue
else:
# Normale werking
knipper_timer = time.ticks_ms()
# Check timing voor state overgang
if time.ticks_ms() - time_stamp > state_machine.get_huidige_timing():
time_stamp = time.ticks_ms()
if state_machine.is_nieuwe_state():
print(f"New state={state_machine.get_huidige_state()}")
verkeerslicht.pas_verkeerslichten_aan_state(state_machine.get_huidige_state())
# Ga naar volgende state
nieuwe_timing, beschrijving = state_machine.volgende_state(huidige_snelheid)
print(f"Transition: {beschrijving}, timing: {nieuwe_timing}ms")
print(f"Snelheid: {input_manager.get_snelheid_modus()} ({huidige_snelheid}ms)")
# Start applicatie
if __name__ == "__main__":
hoofd_loop()VL2
VL1
SLOW/FAST
ORANGE ON/OFF
slow
fast