Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

課題

これで、課題に立ち向かうための準備は万端です!あなたのタスクは、この章の冒頭でお見せした アプリケーションを実装することです。

ここで何が起きているのかよくわからない場合は、かなり遅くしたバージョンがあります。

LED ピンを個別に扱うのはかなり面倒なので (特に今回のように実質的にそのほとんどすべてを使わなければならない場合は) BSP が提供する display 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 を 1000ms 表示する
        display.show(&mut timer, light_it_all, 1000);
        // ディスプレイを再びクリアする
        display.clear();
        timer.delay_ms(1000_u32);
    }
}

この API を使えば、あなたのタスクは基本的に、適切な 画像マトリクスを計算してそれを BSP に渡すだけです。