Merge pull request #4 from nicholasmello/multiple-buttons
Multiple buttons part 1
This commit is contained in:
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
52
src/main.rs
52
src/main.rs
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user