Merge pull request #4 from nicholasmello/multiple-buttons

Multiple buttons part 1
This commit is contained in:
2026-07-25 15:17:09 -05:00
committed by GitHub
3 changed files with 47 additions and 10 deletions

View File

@@ -21,6 +21,7 @@ pub struct Keyboard<'d, const KEY_N: usize> {
num_keys: usize, num_keys: usize,
} }
#[derive(Debug, defmt::Format)]
pub enum KeyboardError { pub enum KeyboardError {
MaxKeys, MaxKeys,
} }

View File

@@ -45,18 +45,54 @@ async fn main(_spawner: Spawner) {
let driver = Driver::new(p.USB, Irqs); let driver = Driver::new(p.USB, Irqs);
let mut usb_buf = usb::UsbKeyboardBuf::new(); let mut usb_buf = usb::UsbKeyboardBuf::new();
let usbkey = usb::UsbKeyboard::create_usb(&mut usb_buf, driver); let usbkey = usb::UsbKeyboard::create_usb(&mut usb_buf, driver);
let mut keyboard = Keyboard::<6>::new();
// Set up the signal pin that will be used to trigger the keyboard. let mut signal_pin = Input::new(p.PIN_15, Pull::None);
let mut signal_pin = Input::new(p.PIN_16, Pull::None);
// Enable the schmitt trigger to slightly debounce.
signal_pin.set_schmitt(true); signal_pin.set_schmitt(true);
let mut keyboard = Keyboard::<1>::new();
match keyboard.add_key(signal_pin, 'a') { match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"), Ok(()) => info!("Key 'a' registered"),
Err(_) => { Err(e) => {
defmt::panic!("Failed to register key!"); defmt::panic!("Failed to register key! {:?}", e);
}
}
let mut signal_pin = Input::new(p.PIN_16, Pull::None);
signal_pin.set_schmitt(true);
match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"),
Err(e) => {
defmt::panic!("Failed to register key! {:?}", e);
}
}
let mut signal_pin = Input::new(p.PIN_17, Pull::None);
signal_pin.set_schmitt(true);
match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"),
Err(e) => {
defmt::panic!("Failed to register key! {:?}", e);
}
}
let mut signal_pin = Input::new(p.PIN_18, Pull::None);
signal_pin.set_schmitt(true);
match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"),
Err(e) => {
defmt::panic!("Failed to register key! {:?}", e);
}
}
let mut signal_pin = Input::new(p.PIN_19, Pull::None);
signal_pin.set_schmitt(true);
match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"),
Err(e) => {
defmt::panic!("Failed to register key! {:?}", e);
}
}
let mut signal_pin = Input::new(p.PIN_20, Pull::None);
signal_pin.set_schmitt(true);
match keyboard.add_key(signal_pin, 'a') {
Ok(()) => info!("Key 'a' registered"),
Err(e) => {
defmt::panic!("Failed to register key! {:?}", e);
} }
} }

View File

@@ -27,8 +27,8 @@ pub enum KeyboardAction {
impl From<Level> for KeyboardAction { impl From<Level> for KeyboardAction {
fn from(value: Level) -> Self { fn from(value: Level) -> Self {
match value { match value {
Level::Low => KeyboardAction::Depress, Level::High => KeyboardAction::Depress,
Level::High => KeyboardAction::Press, Level::Low => KeyboardAction::Press,
} }
} }
} }