【Arduino電子工作】LED暗く光らせる(PWM)
目的
LEDを単純に光らせるのではなく、暗く光らせる(analogWrite)
今回使うもの
前回と全く同じ
設計・計算
前回と全く同じ
書くことがあまりないので、PWMの説明をしておきます(もっと詳しくってかたは他のサイト等参照のこと、わたしも完璧には理解してない)
5VでうごくArduinoのピン出力は必ず5Vです。3Vとか1.5Vなど5Vより低い電圧はだせません。
しかし、PWM機能を使えば5V以下の電圧を実現することができます。
普通に5V出しっぱなしにしていると5Vですが、周期的に短い時間だけ5V、それ以外を0Vにすると、平均でみたときに5V以下になるのです(文章力なくてわかりにくい)
絵を描きました(iPadで)
上の絵の、0~255という数値(パルス幅)はプログラムで決めます。
今回書いたArduinoのプログラムでいうと analogWrite(led1, 10);の10の部分です。
周期のタイミングなどは勝手に決まっているので気にしません
こちらが気にするのは0~255の値をどうしようかなって悩むだけです
1周期あたり、5Vをどれだけの時間出すかによって最終的な電圧がきまります
ちなみに0と255それぞれ指定するとどうなるのかは上の絵の通りです。
0は0V
255は5V出しっぱなし、つまり5Vです
(128あたりを指定すれば2.5V出力になるとおもう)
ちなみにArduinoでPWMを使えるピンは限られています。
ピン配置図をみるとわかりますが、ピンのところにPWMと書かれているものしかつかえません。
今回つかっているArduino Microの場合、3,5,6,9,10,11,13のピンでPWMを使うことができます。
回路
前回と全く同じ
プログラム
/*
目的:LED PWM
http://www.isopro91.com
2015/5/28
*/
int led1 = 13; //変数名led1に13を代入して宣言
void setup() {
}
void loop() {
analogWrite(led1, 10); //LED点灯 0(0V)~255(5V)
delay(1000); //1秒待つ
digitalWrite(led1, 0); //LED消灯
delay(1000);
}
実際の動作
ちなみに下の記事のロボットはanalogWriteで目を光らせています。
最初暗く光り、徐々に明るくしていくということができます。
おわり