feat: changed the pins
This commit is contained in:
+29
-29
@@ -12,57 +12,57 @@ use crate::{
|
|||||||
pub struct TrafficController {
|
pub struct TrafficController {
|
||||||
pub phase_index: usize,
|
pub phase_index: usize,
|
||||||
pub phase_start: u64,
|
pub phase_start: u64,
|
||||||
pub main_traffic_light: TrafficLight<Gpio0, Gpio1, Gpio2>,
|
pub main_traffic_light: TrafficLight<Gpio2, Gpio3, Gpio4>,
|
||||||
pub north_traffic_light: TrafficLight<Gpio3, Gpio4, Gpio5>,
|
pub north_traffic_light: TrafficLight<Gpio5, Gpio6, Gpio7>,
|
||||||
pub south_traffic_light: TrafficLight<Gpio6, Gpio7, Gpio8>,
|
pub south_traffic_light: TrafficLight<Gpio8, Gpio9, Gpio10>,
|
||||||
pub pedestrian_light: PedestrianLight<Gpio9, Gpio10>,
|
pub pedestrian_light: PedestrianLight<Gpio11, Gpio12>,
|
||||||
pub button: Pin<Gpio11, FunctionSio<SioInput>, PullUp>,
|
pub button: Pin<Gpio13, FunctionSio<SioInput>, PullUp>,
|
||||||
pub button_state: bool,
|
pub button_state: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TrafficController {
|
impl TrafficController {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
gpio0: Pin<Gpio0, FunctionNull, PullDown>,
|
main_red: Pin<Gpio2, FunctionNull, PullDown>,
|
||||||
gpio1: Pin<Gpio1, FunctionNull, PullDown>,
|
main_yellow: Pin<Gpio3, FunctionNull, PullDown>,
|
||||||
gpio2: Pin<Gpio2, FunctionNull, PullDown>,
|
main_green: Pin<Gpio4, FunctionNull, PullDown>,
|
||||||
gpio3: Pin<Gpio3, FunctionNull, PullDown>,
|
north_red: Pin<Gpio5, FunctionNull, PullDown>,
|
||||||
gpio4: Pin<Gpio4, FunctionNull, PullDown>,
|
north_yellow: Pin<Gpio6, FunctionNull, PullDown>,
|
||||||
gpio5: Pin<Gpio5, FunctionNull, PullDown>,
|
north_green: Pin<Gpio7, FunctionNull, PullDown>,
|
||||||
gpio6: Pin<Gpio6, FunctionNull, PullDown>,
|
south_red: Pin<Gpio8, FunctionNull, PullDown>,
|
||||||
gpio7: Pin<Gpio7, FunctionNull, PullDown>,
|
south_yellow: Pin<Gpio9, FunctionNull, PullDown>,
|
||||||
gpio8: Pin<Gpio8, FunctionNull, PullDown>,
|
south_green: Pin<Gpio10, FunctionNull, PullDown>,
|
||||||
gpio9: Pin<Gpio9, FunctionNull, PullDown>,
|
pedestrian_red: Pin<Gpio11, FunctionNull, PullDown>,
|
||||||
gpio10: Pin<Gpio10, FunctionNull, PullDown>,
|
pedestrian_green: Pin<Gpio12, FunctionNull, PullDown>,
|
||||||
gpio11: Pin<Gpio11, FunctionNull, PullDown>,
|
pedestrian_button: Pin<Gpio13, FunctionNull, PullDown>,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
phase_index: 0,
|
phase_index: 0,
|
||||||
phase_start: 0,
|
phase_start: 0,
|
||||||
|
|
||||||
main_traffic_light: TrafficLight::new(
|
main_traffic_light: TrafficLight::new(
|
||||||
gpio0.into_push_pull_output(),
|
main_red.into_push_pull_output(),
|
||||||
gpio1.into_push_pull_output(),
|
main_yellow.into_push_pull_output(),
|
||||||
gpio2.into_push_pull_output(),
|
main_green.into_push_pull_output(),
|
||||||
),
|
),
|
||||||
|
|
||||||
north_traffic_light: TrafficLight::new(
|
north_traffic_light: TrafficLight::new(
|
||||||
gpio3.into_push_pull_output(),
|
north_red.into_push_pull_output(),
|
||||||
gpio4.into_push_pull_output(),
|
north_yellow.into_push_pull_output(),
|
||||||
gpio5.into_push_pull_output(),
|
north_green.into_push_pull_output(),
|
||||||
),
|
),
|
||||||
|
|
||||||
south_traffic_light: TrafficLight::new(
|
south_traffic_light: TrafficLight::new(
|
||||||
gpio6.into_push_pull_output(),
|
south_red.into_push_pull_output(),
|
||||||
gpio7.into_push_pull_output(),
|
south_yellow.into_push_pull_output(),
|
||||||
gpio8.into_push_pull_output(),
|
south_green.into_push_pull_output(),
|
||||||
),
|
),
|
||||||
|
|
||||||
pedestrian_light: PedestrianLight::new(
|
pedestrian_light: PedestrianLight::new(
|
||||||
gpio9.into_push_pull_output(),
|
pedestrian_red.into_push_pull_output(),
|
||||||
gpio10.into_push_pull_output(),
|
pedestrian_green.into_push_pull_output(),
|
||||||
),
|
),
|
||||||
|
|
||||||
button: gpio11.into_pull_up_input(),
|
button: pedestrian_button.into_pull_up_input(),
|
||||||
button_state: false,
|
button_state: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -34,8 +34,6 @@ fn main() -> ! {
|
|||||||
display.print("Hello Pico");
|
display.print("Hello Pico");
|
||||||
|
|
||||||
let mut traffic_controller = TrafficController::new(
|
let mut traffic_controller = TrafficController::new(
|
||||||
pins.gpio0,
|
|
||||||
pins.gpio1,
|
|
||||||
pins.gpio2,
|
pins.gpio2,
|
||||||
pins.gpio3,
|
pins.gpio3,
|
||||||
pins.gpio4,
|
pins.gpio4,
|
||||||
@@ -46,6 +44,8 @@ fn main() -> ! {
|
|||||||
pins.gpio9,
|
pins.gpio9,
|
||||||
pins.gpio10,
|
pins.gpio10,
|
||||||
pins.gpio11,
|
pins.gpio11,
|
||||||
|
pins.gpio12,
|
||||||
|
pins.gpio13,
|
||||||
);
|
);
|
||||||
traffic_controller.phase_start = timer.get_counter().ticks();
|
traffic_controller.phase_start = timer.get_counter().ticks();
|
||||||
traffic_controller.apply_phase(&PHASES[0]);
|
traffic_controller.apply_phase(&PHASES[0]);
|
||||||
|
|||||||
+16
-14
@@ -1,5 +1,7 @@
|
|||||||
use crate::lights::{PedestrianLightColor, TrafficLightColor};
|
use crate::lights::{PedestrianLightColor, TrafficLightColor};
|
||||||
|
|
||||||
|
const PHASE_DURATION: u64 = 1_000_000;
|
||||||
|
|
||||||
pub struct Phase {
|
pub struct Phase {
|
||||||
pub duration: u64,
|
pub duration: u64,
|
||||||
pub main: TrafficLightColor,
|
pub main: TrafficLightColor,
|
||||||
@@ -12,7 +14,7 @@ pub struct Phase {
|
|||||||
|
|
||||||
pub const PHASES: [Phase; 14] = [
|
pub const PHASES: [Phase; 14] = [
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::RedYellow,
|
main: TrafficLightColor::RedYellow,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -21,7 +23,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Green,
|
main: TrafficLightColor::Green,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -30,7 +32,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Yellow,
|
main: TrafficLightColor::Yellow,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -39,7 +41,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -48,7 +50,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::RedYellow,
|
north: TrafficLightColor::RedYellow,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -57,7 +59,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Green,
|
north: TrafficLightColor::Green,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -66,7 +68,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Yellow,
|
north: TrafficLightColor::Yellow,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -75,7 +77,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -84,7 +86,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::RedYellow,
|
south: TrafficLightColor::RedYellow,
|
||||||
@@ -93,7 +95,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Green,
|
south: TrafficLightColor::Green,
|
||||||
@@ -102,7 +104,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Yellow,
|
south: TrafficLightColor::Yellow,
|
||||||
@@ -111,7 +113,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -120,7 +122,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: true,
|
accepts_button_request: true,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
@@ -129,7 +131,7 @@ pub const PHASES: [Phase; 14] = [
|
|||||||
accepts_button_request: false,
|
accepts_button_request: false,
|
||||||
},
|
},
|
||||||
Phase {
|
Phase {
|
||||||
duration: 500_000,
|
duration: PHASE_DURATION,
|
||||||
main: TrafficLightColor::Red,
|
main: TrafficLightColor::Red,
|
||||||
north: TrafficLightColor::Red,
|
north: TrafficLightColor::Red,
|
||||||
south: TrafficLightColor::Red,
|
south: TrafficLightColor::Red,
|
||||||
|
|||||||
Reference in New Issue
Block a user