つまみ式調光器
CoddyのArduinoジャーニー「出力」セクションの一部。レッスン 5/24。
つまみを回すと、analogRead()は0から1023までの数値を返しますが、analogWrite()が受け取るのは0から255までです。この2つの範囲は一致しないため、map()を使って一方をもう一方に変換します。
int reading = analogRead(A0);
int brightness = map(reading, 0, 1023, 0, 255);
analogWrite(9, brightness);つまみを一番下まで回すと値は0になり、LEDは消灯します。一番上まで回すと値は1023になり、255に変換されて最大の明るさで点灯します。その間の位置では、それに応じた明るさになります。
読み取り値をそのままLEDに書き込んでもうまくいきません。analogWrite()が受け取るのは0から255までなので、600のような読み取り値では明るさが正しくなりません。
チャレンジ
簡単つまみはA0に、LEDはピン9に接続されています。つまみで明るさを設定します。
- つまみの値を読み取る
map()で読み取り値を0から255の範囲に変換する- LEDに書き込み、その後10 ms待つ
Runを押してつまみを回し、その後Checkを押します。
自分で試してみよう
const int knobPin = A0;
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
// つまみの値を読み取り、0..255の範囲に変換してLEDに出力する
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
出力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド