diff --git a/ch32v-insert-coin/src/app.rs b/ch32v-insert-coin/src/app.rs index 4cb1053..c48a073 100644 --- a/ch32v-insert-coin/src/app.rs +++ b/ch32v-insert-coin/src/app.rs @@ -312,6 +312,7 @@ pub struct App { interfaces: Interfaces, } +use settings::Level; impl App { pub fn new( config: Config, @@ -396,29 +397,53 @@ impl App { println!("usb adc service"); } if self.timers.led0_timer.need_service() { + let out = match self.settings.brightness { + Level::Off => 0, + Level::Low => 5, + Level::Medium => 25, + Level::High => 75, + Level::Maximum => { + self.sequences.led0.next(); + self.sequences.led0.get_value() / 6 + } + }; + self.timers.led0_timer.service(); - self.sequences.led0.next(); - self.services.led0.set_amplitude( - self.sequences.led0.get_value() / self.settings.brightness.as_brightness_divisor(), - ); + self.services.led0.set_amplitude(out); // #[cfg(feature = "enable_print")] // println!("led0 sevice {}", self.sequences.led0.get_value()); } if self.timers.led1_timer.need_service() { + let out = match self.settings.brightness { + Level::Off => 0, + Level::Low => 5, + Level::Medium => 25, + Level::High => 75, + Level::Maximum => { + self.sequences.led1.next(); + self.sequences.led1.get_value() / 6 + } + }; self.timers.led1_timer.service(); - self.sequences.led1.next(); - self.services.led1.set_amplitude( - self.sequences.led1.get_value() / self.settings.brightness.as_brightness_divisor(), - ); + self.services.led1.set_amplitude(out); + // #[cfg(feature = "enable_print")] // println!("led1 service"); } if self.timers.led2_timer.need_service() { + let out = match self.settings.brightness { + Level::Off => 0, + Level::Low => 5, + Level::Medium => 25, + Level::High => 75, + Level::Maximum => { + self.sequences.led2.next(); + self.sequences.led2.get_value() / 6 + } + }; self.timers.led2_timer.service(); - self.sequences.led2.next(); - self.services.led2.set_amplitude( - self.sequences.led2.get_value() / self.settings.brightness.as_brightness_divisor(), - ); + self.services.led2.set_amplitude(out); + // #[cfg(feature = "enable_print")] // println!("led2 service"); } @@ -461,8 +486,7 @@ impl App { if self.services.synth0.need_service() { let out = match self.services.synth0.service() { - Some(value) => value / 10, - // Some(value) => value / self.settings.volume.as_volume_divisor(), + Some(value) => value / 6 / self.settings.volume.as_volume_divisor(), None => 0, }; self.interfaces @@ -472,7 +496,7 @@ impl App { if self.services.sample_player.need_service() { self.services.sample_player.service(); - let out = self.services.sample_player.get_amplitude() / 5; + let out = self.services.sample_player.get_amplitude() / 2; self.interfaces .pwm_core .write_amplitude(ch32_hal::timer::Channel::Ch4, out as u8); @@ -541,7 +565,10 @@ impl App { pub fn coin_detect(&mut self) { #[cfg(feature = "enable_print")] println!("coin detect"); - self.services.sample_player.play_sample(); + // self.services.sample_player.play_sample(); + self.services + .sequencer + .play_sequence(&crate::sequences::COIN_CHIRP, 0); } } diff --git a/ch32v-insert-coin/src/main.rs b/ch32v-insert-coin/src/main.rs index 633ad7b..1e9e74c 100644 --- a/ch32v-insert-coin/src/main.rs +++ b/ch32v-insert-coin/src/main.rs @@ -234,7 +234,7 @@ fn app_main(mut p: hal::Peripherals) -> ! { // coin debouncer (100ms) let mut sense_coin_input = - DebouncedGPIO::new(sense_coin_pin.degrade(), core_config.tick_rate_hz, 100); + DebouncedGPIO::new(sense_coin_pin.degrade(), core_config.tick_rate_hz, 20); // main button debouncer (100ms) let mut main_btn_input = DebouncedGPIO::new(main_btn_pin.degrade(), core_config.tick_rate_hz, 20);