Menu
CoddyTech

照度計

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が必要です。

challenge icon

チャレンジ

中級

光センサーモジュールの AO は A0 に接続され、バーのLEDはピン10、11、12に接続されています。

  • int lightPercent(): 暗いときは0、明るいときは100
  • void 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 待つ
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

入力のすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド