Cardkb driver for no_std rust
example
use cardkb_driver::CardKb;
use esp_hal::i2c::master::I2c;
esp_bootloader_esp_idf::esp_app_desc!();
#[esp_hal_embassy::main]
async fn main(spawner: Spawner){
esp_alloc::heap_allocator!(size: 64 * 1024);
let config = esp_hal::Config::default().with_cpu_clock(CpuClock::max());
let peripherals = esp_hal::init(config);
let timer0 = SystemTimer::new(peripherals.SYSTIMER);
esp_hal_embassy::init(timer0.alarm0);
let mut i2c = I2c::new(
peripherals.I2C0,
esp_hal::i2c::master::Config::default().with_frequency(Rate::from_khz(400)),
)
.unwrap()
.with_sda(peripherals.GPIO17)
.with_scl(peripherals.GPIO18)
.into_async();
let kb = CardKb::new(0x5F);
loop {
if let Ok(Some(key)) = kb.read_key(&mut i2c).await {
let c = key as char;
info!("key: {}", c);
}
Timer::after(Duration::from_millis(20)).await;
}
}