55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
#![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);
|
|
}
|
|
}
|