58 lines
1.1 KiB
Rust
58 lines
1.1 KiB
Rust
#![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.gpio0,
|
|
pins.gpio1,
|
|
pins.gpio2,
|
|
pins.gpio3,
|
|
pins.gpio4,
|
|
pins.gpio5,
|
|
pins.gpio6,
|
|
pins.gpio7,
|
|
pins.gpio8,
|
|
pins.gpio9,
|
|
pins.gpio10,
|
|
pins.gpio11,
|
|
);
|
|
traffic_controller.phase_start = timer.get_counter().ticks();
|
|
traffic_controller.apply_phase(&PHASES[0]);
|
|
|
|
loop {
|
|
traffic_controller.read_inputs();
|
|
traffic_controller.execute_cycle(&timer);
|
|
}
|
|
}
|