add breathing

This commit is contained in:
sigil-03 2025-11-06 18:42:20 -07:00
parent a7cd209989
commit 713f3882a2
2 changed files with 44 additions and 17 deletions

View file

@ -312,6 +312,7 @@ pub struct App {
interfaces: Interfaces, interfaces: Interfaces,
} }
use settings::Level;
impl App { impl App {
pub fn new( pub fn new(
config: Config, config: Config,
@ -396,29 +397,53 @@ impl App {
println!("usb adc service"); println!("usb adc service");
} }
if self.timers.led0_timer.need_service() { if self.timers.led0_timer.need_service() {
self.timers.led0_timer.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.next();
self.services.led0.set_amplitude( self.sequences.led0.get_value() / 6
self.sequences.led0.get_value() / self.settings.brightness.as_brightness_divisor(), }
); };
self.timers.led0_timer.service();
self.services.led0.set_amplitude(out);
// #[cfg(feature = "enable_print")] // #[cfg(feature = "enable_print")]
// println!("led0 sevice {}", self.sequences.led0.get_value()); // println!("led0 sevice {}", self.sequences.led0.get_value());
} }
if self.timers.led1_timer.need_service() { if self.timers.led1_timer.need_service() {
self.timers.led1_timer.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.next();
self.services.led1.set_amplitude( self.sequences.led1.get_value() / 6
self.sequences.led1.get_value() / self.settings.brightness.as_brightness_divisor(), }
); };
self.timers.led1_timer.service();
self.services.led1.set_amplitude(out);
// #[cfg(feature = "enable_print")] // #[cfg(feature = "enable_print")]
// println!("led1 service"); // println!("led1 service");
} }
if self.timers.led2_timer.need_service() { if self.timers.led2_timer.need_service() {
self.timers.led2_timer.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.next();
self.services.led2.set_amplitude( self.sequences.led2.get_value() / 6
self.sequences.led2.get_value() / self.settings.brightness.as_brightness_divisor(), }
); };
self.timers.led2_timer.service();
self.services.led2.set_amplitude(out);
// #[cfg(feature = "enable_print")] // #[cfg(feature = "enable_print")]
// println!("led2 service"); // println!("led2 service");
} }
@ -461,8 +486,7 @@ impl App {
if self.services.synth0.need_service() { if self.services.synth0.need_service() {
let out = match self.services.synth0.service() { let out = match self.services.synth0.service() {
Some(value) => value / 10, Some(value) => value / 6 / self.settings.volume.as_volume_divisor(),
// Some(value) => value / self.settings.volume.as_volume_divisor(),
None => 0, None => 0,
}; };
self.interfaces self.interfaces
@ -472,7 +496,7 @@ impl App {
if self.services.sample_player.need_service() { if self.services.sample_player.need_service() {
self.services.sample_player.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 self.interfaces
.pwm_core .pwm_core
.write_amplitude(ch32_hal::timer::Channel::Ch4, out as u8); .write_amplitude(ch32_hal::timer::Channel::Ch4, out as u8);
@ -541,7 +565,10 @@ impl App {
pub fn coin_detect(&mut self) { pub fn coin_detect(&mut self) {
#[cfg(feature = "enable_print")] #[cfg(feature = "enable_print")]
println!("coin detect"); 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);
} }
} }

View file

@ -234,7 +234,7 @@ fn app_main(mut p: hal::Peripherals) -> ! {
// coin debouncer (100ms) // coin debouncer (100ms)
let mut sense_coin_input = 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) // main button debouncer (100ms)
let mut main_btn_input = let mut main_btn_input =
DebouncedGPIO::new(main_btn_pin.degrade(), core_config.tick_rate_hz, 20); DebouncedGPIO::new(main_btn_pin.degrade(), core_config.tick_rate_hz, 20);