いそぷろのブログ

おもしろいことを考えていきたい

【Arduino電子工作】可変抵抗器でLEDの明るさ調整

目的

可変抵抗器の値を参照してLEDの光の明るさを調節する

analogReadとmapをつかいます

 

今回使うもの

過去記事と全く同じ

www.isopro91.com

 

設計・計算

過去記事と全く同じ

一応LED回路部分は以下の記事を参照している

www.isopro91.com

 

回路

実際の回路と、fritzingで描いたブレッドボード図と回路図

【Arduino電子工作】可変抵抗器でLEDの明るさ調整

【Arduino電子工作】可変抵抗器でLEDの明るさ調整

【Arduino電子工作】可変抵抗器でLEDの明るさ調整

 

プログラム

/*
目的:可変抵抗器からの入力を読み、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のリファレンス参照のこと

 

実際の動作

 

おわり