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

ユーザーの追加 - 入力

このセクションでは、ボタンを動作させて、ハードウェアと対話できるようにすることに焦点を当てます!

この実装例は、こちらにあります: 5_led_with_buttons.rs

ボード上のボタンは、オンボード LED と同じように番号付きのピンです。それらのピンは p0.11p0.12p0.24p0.25 です。

p0 関連を含む gpio モジュールをスコープに取り込み、p0 ピンにアクセスできるようにする行を fn main() に追加してください。

✅ ボタン用の型と静的メソッドを作成してください。この静的メソッドは任意の設定のピンを受け取り、それらをプルアップ入力に変換します。

#![allow(unused)]
fn main() {
pub struct Button(Pin<Input<PullUp>>);

impl Button {
    fn new<Mode>(pin: Pin<Mode>) -> Self {
        Button(pin.into_pullup_input())
    }
}
}

✅ ボタンのインスタンスを作成してください。

#![allow(unused)]
fn main() {
let button_1 = Button::new(pins.p0_11.degrade());
}

効果を得るには、まずボタンの状態を知る必要があります。ボタンは押されているのでしょうか、それとも押されていないのでしょうか?次に、イベントをボタンの状態に結び付ける必要があります。

impl Button ブロック内に、ボタンが押されている場合に true を返すインスタンスメソッドを実装してください。

#![allow(unused)]
fn main() {
pub fn is_pressed(&self) -> bool {
    self.0.is_low().unwrap()
}
}

struct Button には名前付きフィールドがないことに注意してください。関連する型にアクセスするには、0 でインデックス指定します。

fn main() 内に、オンボード LED の 1 つを実装してください。

✅ ボタンが押されているときは LED が点灯し、ボタンが押されていないときは消灯するように、プログラムを書き続けてください。