照度計
CoddyのArduinoジャーニー「入力」セクションの一部。レッスン 22/22。
このレッスンでは、光をパーセントで出力し、スマートフォンの電波表示のように3つのLEDのバーで示す照度計を作り上げます。
それぞれ1つのタスクを担う関数に処理を分割すると、loop()が説明文のように読めます。
void loop() {
int percent = lightPercent();
showLevel(percent);
// パーセントを表示する
}lightPercent()は照度モジュールのAOを読み取り、0(暗い)から100(明るい)までの値を返します。光が強くなるとAOの値は下がるため、逆向きにマッピングします。map(reading, 0, 1023, 100, 0)は1023を0に、0を100に変換します。
showLevel(int percent)では、バーの各LEDにそれぞれしきい値を設定します。1つ目は25を超えると、2つ目は50を超えると、3つ目は75を超えると点灯します。光が弱まったときにバーを再び短くできるよう、それぞれにelseが必要です。
チャレンジ
中級光センサーモジュールの AO は A0 に接続され、バーのLEDはピン10、11、12に接続されています。
int lightPercent(): 暗いときは0、明るいときは100void showLevel(int percent): 25を超えるとピン10、50を超えるとピン11、75を超えるとピン12が点灯しますloop()内で両方を呼び出し、パーセントを出力して200 ms待ちます
Runを押し、光のスライダーを動かしてから、Checkを押します。
自分で試してみよう
const int lowPin = 10;
const int midPin = 11;
const int highPin = 12;
// ここに int lightPercent() を書く
// ここに void showLevel(int percent) を書く
void setup() {
pinMode(lowPin, OUTPUT);
pinMode(midPin, OUTPUT);
pinMode(highPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 光の強さをパーセントで読み取り、バーに表示し、出力して、200 ms 待つ
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
入力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド