すべてを統合する
LED を快適温度インジケーターとして使用する
あなたは以下を学びました。
- RGB LED の点灯と配線。
- 温度センサーの使用。
- ユーザー入力の実装
個人的に快適だと感じる温度付近を、異なる光の色で示すプログラムを構築してください。
この実装例はこちらにあります: 9_comfy_temp_indicator.rs。
あなたが最も快適だと感じる温度は何度ですか? 最も快適だと感じる 2 度 (°C) の範囲を定義してください。その範囲の上下 2 度までの温度は許容範囲であり、この 6 度の範囲外の温度は暑すぎる、または寒すぎます。各ゾーンに信号色を割り当ててください。範囲は自由に調整してかまいません。
✅ LED のこの動作を最後のプログラムに統合してください。
1 つのファイルに多くのコードを書いてきました。これにより、全体が把握しにくくなり、コードの再利用も難しくなります。再利用する可能性が高いコードをモジュールに入れてリファクタリングしましょう。
✅ src/ の中に dk_button という名前の新しいフォルダーを作成してください。
✅ dk_button の中に mod.rs という名前のファイルを作成してください。
✅ struct Button の定義とその impl ブロックを src/bin/thermometer から dk_button/mod.rs に移動してください。
✅ 必要なすべてのモジュールをスコープに取り込んでください。
✅ 他のファイルからアクセスできるように、すべてのメソッドとすべての struct または enum の定義の前に pub を追加してください。
✅ scr/lib.rs に次の行を追加して、このモジュールをエクスポートしてください。
#![allow(unused)]
fn main() {
pub mod dk_button;
}
✅ src/bin/comfy_temp_indicator で、dk_button モジュールをスコープに取り込んでください。
#![allow(unused)]
fn main() {
use knurling_session_20q4::{
dk_button,
};
}
✅ ボタンをインスタンス化するための静的メソッドを呼び出している行を変更し、そのメソッドが dk_button モジュールから呼び出されるようにしてください。
#![allow(unused)]
fn main() {
let mut button_1 = dk_button::Button::new(pins.p0_11.degrade());
}
✅ 同じ方法で、LED 関連のコード用に rgb_led モジュールを作成し、単位変換用に number_representations モジュールを作成してください。単位変換のメソッドは、所有権が不要なため、temperature への参照だけを受け取るように変更するのが理にかなっています。