#![no_main] #![no_std] use cortex_m_rt::entry; use embedded_hal::digital::InputPin; use microbit::{Board, display::blocking::Display, hal::Timer}; use panic_halt as _; const NEUTRAL: [[u8; 5]; 5] = [ [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ]; const RIGHT: [[u8; 5]; 5] = [ [0, 0, 1, 0, 0], [0, 1, 0, 0, 0], [1, 1, 1, 1, 1], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], ]; const LEFT: [[u8; 5]; 5] = [ [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [1, 1, 1, 1, 1], [0, 0, 0, 1, 0], [0, 0, 1, 0, 0], ]; #[entry] fn main() -> ! { let board = Board::take().unwrap(); let mut timer = Timer::new(board.TIMER0); let mut display = Display::new(board.display_pins); let mut button_a = board.buttons.button_a; let mut button_b = board.buttons.button_b; loop { display.clear(); let a_pressed = button_a.is_low().unwrap(); let b_pressed = button_b.is_low().unwrap(); let display_out = match (a_pressed, b_pressed) { (false, false) | (true, true) => NEUTRAL, (true, false) => RIGHT, (false, true) => LEFT, }; display.show(&mut timer, display_out, 10); } }