diff --git a/lab1.7/rustlings b/lab1.7/rustlings index f022d5c..0666f77 160000 --- a/lab1.7/rustlings +++ b/lab1.7/rustlings @@ -1 +1 @@ -Subproject commit f022d5c2bbffbac722dd131cabcb130721ba35b7 +Subproject commit 0666f77c425ac2c0e5dec30590c4b516fb848c4d diff --git a/lab1.8/ledjes/src/main.rs b/lab1.8/ledjes/src/main.rs index 552851a..9c25a88 100644 --- a/lab1.8/ledjes/src/main.rs +++ b/lab1.8/ledjes/src/main.rs @@ -12,16 +12,25 @@ use stm32f4xx_hal as hal; use crate::hal::{pac, prelude::*}; use cortex_m_semihosting::hprintln; +enum MainStates { + Rood, + Groen, + Orange, + BrugOpen_on, + BrugOpen_off +} + #[entry] fn main() -> ! { if let (Some(dp), Some(cp)) = ( pac::Peripherals::take(), cortex_m::peripheral::Peripherals::take(), - ) { + ) { //GPIOD ophalen let gpiod = dp.GPIOD.split(); - //pd12 is pin type - let mut led = gpiod.pd12.into_push_pull_output(); + let mut led_rood = gpiod.pd14.into_push_pull_output(); + let mut led_groen = gpiod.pd12.into_push_pull_output(); + let mut led_orange = gpiod.pd13.into_push_pull_output(); //Klok instellen let rcc = dp.RCC.constrain(); @@ -29,15 +38,50 @@ fn main() -> ! { // Create a delay abstraction based on SysTick let mut delay = cp.SYST.delay(&clocks); - let mut status:bool = false; + let mut main_state : MainStates = MainStates::Rood; loop { - //dit verschijnt in een van de open terminals in vscode - hprintln!("Led {:?}", status.then(|| "aan!").unwrap_or("uit!")); - - // On for 1s, off for 1s. - led.toggle(); - status ^= true; - delay.delay_ms(500_u32); + match main_state { + MainStates::Rood => { + hprintln!("Rood"); + led_rood.set_high(); + led_groen.set_low(); + led_orange.set_low(); + delay.delay(4.secs()); + main_state = MainStates::Groen; + }, + MainStates::Groen => { + hprintln!("Groen"); + led_rood.set_low(); + led_groen.set_high(); + led_orange.set_low(); + delay.delay(3.secs()); + main_state = MainStates::Orange; + }, + MainStates::Orange => { + hprintln!("Orange"); + led_rood.set_low(); + led_groen.set_low(); + led_orange.set_high(); + delay.delay(1.secs()); + main_state = MainStates::BrugOpen_on; + }, + MainStates::BrugOpen_on => { + hprintln!("Brug open - on"); + led_rood.set_high(); + led_groen.set_low(); + led_orange.set_low(); + delay.delay(2.secs()); + main_state = MainStates::BrugOpen_off; + }, + MainStates::BrugOpen_off => { + hprintln!("Brug open - off"); + led_rood.set_low(); + led_groen.set_low(); + led_orange.set_low(); + delay.delay(1.secs()); + main_state = MainStates::BrugOpen_on; + } + } } }