サーボ式ライトゲージ
CoddyのArduinoジャーニー「出力」セクションの一部。レッスン 24/24。
アームに針を取り付けると、サーボは車のスピードメーターのような計器になります。ここでは、明るさを示します。
ナイトライトの場合と同様に、このモジュールのAOは、光が明るいほど低い値を読み取ります。暗闇では約1023、光が十分に当たると0近くです。計器は明るいほど高い値を指すべきなので、変換は逆向きになります。照度計の場合と同じように、map()に新しい範囲を逆さまに指定します。
int angle = map(reading, 0, 1023, 180, 0);読み取り値が0(光が十分に当たっている状態)のときは180度になり、1023(暗闇)のときは0になります。その間の値も、逆向きに対応する値になります。
チャレンジ
中級光センサーのAOはA0に、サーボはピン9に接続されています。アームを光度計にしましょう。
- 暗いときはアームを0度に、明るさが最大のときは180度に向ける
- 新しい範囲を逆にして
map()を使う - 角度を出力し、その都度50 ms待つ
実行を押してセンサーの光量スライダーを動かし、次に確認を押します。
自分で試してみよう
#include <Servo.h>
const int lightPin = A0;
Servo arm;
void setup() {
arm.attach(9);
Serial.begin(9600);
}
void loop() {
// 光の値を読み取り、180..0の範囲に逆向きに変換し、アームを動かして角度を出力する
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
出力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド