【Arduino電子工作】可変抵抗器でLEDの明るさ調整
目的
可変抵抗器の値を参照してLEDの光の明るさを調節する
analogReadとmapをつかいます
今回使うもの
過去記事と全く同じ
設計・計算
過去記事と全く同じ
一応LED回路部分は以下の記事を参照している
回路
実際の回路と、fritzingで描いたブレッドボード図と回路図
プログラム
/*
目的:可変抵抗器からの入力を読み、LEDの明るさを変更する
http://www.isopro91.com
2015/6/3
*/
int led1 = 13;
int pot1 = A0; //potはpotentiometer(可変抵抗)の略
int val = 0;
void setup() {
}
void loop() {
val = analogRead(pot1);
val = map(val, 0, 1023, 0, 255); //map文でvalに格納されている0~1023の数値を0~255の範囲に変換
analogWrite(led1, val);
}
プログラムのポイント
val = map(val, 0, 1023, 0, 255);が今回のミソである
val = analogRead(pot1);の処理ではvalに0~1023の数値がはいることは過去記事で実証されている
そしてLEDの明るさを変えるために使うのはanalogWriteだ
analogWriteは0~255の数値の範囲で電圧を調整することができる(0=0V, 255=5V)
analogRead(pot1)で読んだ数値は0~1023
analogWriteで使える数値は0~255
両者は数値の範囲が違うためそのまま利用すると、こちらの思った通りの動作をしてくれない
そのため、analogRead(pot1)で読んだ数値を0~255の範囲に変換する
そのときに使うのがmap文である
map文は多種多様なセンサを使う場合、使う機会がよくあるとおもう
具体的な解説等はArduinoのリファレンス参照のこと
実際の動作
おわり