課題
さあ課題に挑戦する準備はできました! この章の最初にお見せしたこのアプリケーションを実装してください。
もしもなにが起きているのかわかりづらければ、動きを遅くしたこちらを見てください。
LEDを駆動するピンをそれぞれ個別に操作するのは(とくに全部のLEDとなると)めんどうですから、BSPが提供するディスプレイAPIを使うといいです。こういうふうになります。
#![deny(unsafe_code)] #![no_main] #![no_std] use cortex_m_rt::entry; use rtt_target::rtt_init_print; use panic_rtt_target as _; use microbit::{ board::Board, display::blocking::Display, hal::{prelude::*, Timer}, }; #[entry] fn main() -> ! { rtt_init_print!(); let board = Board::take().unwrap(); let mut timer = Timer::new(board.TIMER0); let mut display = Display::new(board.display_pins); let light_it_all = [ [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], ]; loop { // light_it_allを1000ミリ秒表示 display.show(&mut timer, light_it_all, 1000); // ディスプレイをクリアする display.clear(); timer.delay_ms(1000_u32); } }
このAPIがあれば、あとは適切な画像マトリクスを計算して、それをBSPに渡してやるだけです。