#![no_std] #![no_main] mod boilerplate; mod controller; mod display; mod lights; mod phases; use boilerplate::*; use controller::*; use phases::*; use rp2040_hal::Clock; use crate::display::DisplayModule; #[rp2040_hal::entry] fn main() -> ! { let PicoParts { timer, pins, i2c0, mut resets, clocks, } = setup(); let mut display = { let sda = pins.gpio16.reconfigure(); let scl = pins.gpio17.reconfigure(); let freq = clocks.system_clock.freq(); DisplayModule::new(sda, scl, i2c0, &mut resets, freq) }; display.print("Hello Pico"); let mut traffic_controller = TrafficController::new( pins.gpio2, pins.gpio3, pins.gpio4, pins.gpio5, pins.gpio6, pins.gpio7, pins.gpio8, pins.gpio9, pins.gpio10, pins.gpio11, pins.gpio12, pins.gpio13, ); traffic_controller.phase_start = timer.get_counter().ticks(); traffic_controller.apply_phase(&PHASES[0]); loop { traffic_controller.read_inputs(); traffic_controller.execute_cycle(&timer); } }