いそぷろのブログ

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

【Arduino電子工作】LED暗く光らせる(PWM)

目的

LEDを単純に光らせるのではなく、暗く光らせる(analogWrite)

 

今回使うもの

前回と全く同じ

 

設計・計算

前回と全く同じ

書くことがあまりないので、PWMの説明をしておきます(もっと詳しくってかたは他のサイト等参照のこと、わたしも完璧には理解してない)

5VでうごくArduinoのピン出力は必ず5Vです。3Vとか1.5Vなど5Vより低い電圧はだせません。

しかし、PWM機能を使えば5V以下の電圧を実現することができます。

普通に5V出しっぱなしにしていると5Vですが、周期的に短い時間だけ5V、それ以外を0Vにすると、平均でみたときに5V以下になるのです(文章力なくてわかりにくい)

絵を描きました(iPadで)

【Arduinoでロボット】LED暗く光らせる(PWM)

上の絵の、0~255という数値(パルス幅)はプログラムで決めます。

今回書いたArduinoのプログラムでいうと analogWrite(led1, 10);の10の部分です。

周期のタイミングなどは勝手に決まっているので気にしません

こちらが気にするのは0~255の値をどうしようかなって悩むだけです

 

【Arduinoでロボット】LED暗く光らせる(PWM)

1周期あたり、5Vをどれだけの時間出すかによって最終的な電圧がきまります

【Arduinoでロボット】LED暗く光らせる(PWM)

ちなみに0と255それぞれ指定するとどうなるのかは上の絵の通りです。

0は0V

255は5V出しっぱなし、つまり5Vです

(128あたりを指定すれば2.5V出力になるとおもう)

 

ちなみにArduinoでPWMを使えるピンは限られています。

ピン配置図をみるとわかりますが、ピンのところにPWMと書かれているものしかつかえません。

【Arduinoでロボット】LED暗く光らせる(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で目を光らせています。

最初暗く光り、徐々に明るくしていくということができます。

 

おわり