ユーザーの追加 - 入力
このセクションでは、ボタンを動作させて、ハードウェアと対話できるようにすることに焦点を当てます!
この実装例は、こちらにあります: 5_led_with_buttons.rs。
ボード上のボタンは、オンボード LED と同じように番号付きのピンです。それらのピンは p0.11、p0.12、p0.24、p0.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 が点灯し、ボタンが押されていないときは消灯するように、プログラムを書き続けてください。