| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #![no_std]
- #![no_main]
- pub mod button;
- pub mod buzzer;
- use crate::button::Button;
- use crate::buzzer::Buzzer;
- use embassy_executor::Spawner;
- use embassy_futures::select::{select3, Either3};
- use embassy_rp::gpio::Pull;
- use {defmt_rtt as _, panic_probe as _};
- struct SideButtons<'a> {
- pub set_function: Button<'a>,
- pub up: Button<'a>,
- pub down: Button<'a>,
- }
- #[embassy_executor::main]
- async fn main(_spawner: Spawner) -> ! {
- let peripherals = embassy_rp::init(Default::default());
- let mut buzzer = Buzzer::new(peripherals.PIN_14);
- let mut side_buttons = SideButtons {
- set_function: Button::new(peripherals.PIN_2, Pull::Up),
- up: Button::new(peripherals.PIN_17, Pull::Up),
- down: Button::new(peripherals.PIN_15, Pull::Up),
- };
- loop {
- defmt::info!("Set-Function: {}", side_buttons.set_function.get_level());
- defmt::info!("Up: {}", side_buttons.up.get_level());
- defmt::info!("Down: {}", side_buttons.down.get_level());
- let which = select3(
- side_buttons.set_function.wait_for_any_edge(),
- side_buttons.up.wait_for_any_edge(),
- side_buttons.down.wait_for_any_edge(),
- )
- .await;
- if let Either3::First(_) = which
- && side_buttons.set_function.is_low()
- {
- buzzer.toggle();
- }
- }
- }
|