2012年1月26日木曜日

LEDの明るさを調整してみる

前回のLED点滅はデジタル出力でしたが、アナログ出力を行いLEDの明るさの調整をしてみます。

デジタルの場合は、HIGHかLOWでした。いわゆる10の世界だったので、ちょっと暗くとかはできませんでした。ちょっと暗くを実現するには、アナログ出力する必要があります。


今回も、ちょいちょい検索し、配線図とスケッチを入手しました。ほんと、インターネットってすごいです。みんなの知識を共有できます。

ついでに、アナログ入力も試すことにしました。Arduinoにつないだ可変抵抗をぐるぐる回すとLEDの明るさか調整できるって、本格的な気がしたからです。
注意:本格的の意味は人によって異なります(笑)

配線図

アナログ出力するLEDについては、Arduinoの3番pinを使うことにしました。抵抗220ΩはLED点滅で使ったのと同じ。
Arduinoの基盤を見ると、3番pinのところにはアナログが使えるPWMの記載がありました。

LEDを回ってきてArduinoのGNDに戻ってくるのは同じです。

アナログ入力のところは、Arduinoの5VとGNDのpinへの接続と、グルグルと可変抵抗10KΩをまわしたときに変化する抵抗値を読み取るアナログ入力として0番pinへ接続しました。

グルグルまわすと抵抗値が変わり、0番pinへの入力電圧が変わるのは、感覚的にわかります。

スケッチ


int val=0; //入力値の変数を用意し、0に設定

void setup(){
  //pinMode()の設定は不要
}

void loop(){
  //ANALOG INの0番ピンを読み取りvalに代入
  val=analogRead(0);
  //アナログ出力(PWM)の3番ピンを出力とし
  //valを4で割った値を入れる
  analogWrite(3,val/4);
  //0.1秒ループにする
  delay(100);
}


//pinMode() ・・・ LED点滅の時に使った、pinMode命令はアナログの場合には不要
                         とのことです。なので、コメントにしています。

val=analogRead(0) ・・・ この命令によって、アナログ入力(0番pin)の値を読み取り、
                                  valという変数へ代入しています。読み取り値は0~1023と
                                  のことです。

analogWrite(3,val/4) ・・・ 3番pinへアナログ出力しています。アナログ出力できる
                                     のは、0~255なので、4で割っているわけです。

void loop() ・・・ 入力値の読み取りと出力を100msで繰り返しています。


実際に配線して、スケッチをArduinoにuploadしてみました。
見事にだんだん暗くしたり、明るくしたりができました。LEDの明るさ調整、成功
気が済むまで、グルグルしました(笑)


デジタルだけでなくアナログも簡単に扱えるArduinoってすごい!!

ランキングに参加しています。ぼちっとお願います→

0 件のコメント:

コメントを投稿