ELEGOO (Arduino)で始めるマイコン入門 5:3色LED
今回は、ブレッドボードにLEDや抵抗を設置し、3色LEDを光らせます。LEDを光らせるために、LEDの簡単な構成と光らせる手段である、PWM (Pulse Width Modulation) について説明をします。
LEDとは:アノードとカソード
LEDは、+極、-極の代わりに、アノードとカソードという言葉を使います。これは電子の動きを表す言葉ですが、電子工作やマイコンでは、アノードを+極(正極)、カソードをー極(負極)と捉えて問題ありません。LEDは豆電球とは異なり、+とーをきちんと揃えないと光りません。豆電球は電池の正負を入れ替えても光りましたが、同じことをLEDでやると、光らなくなるので注意が必要です。
では、LEDのアノードとカソードはどうやって見分けるのでしょうか。一般的なLEDは、足の長いほうがアノード、短いほうがカソードです。ですが、今回使用する3色LEDはアノードが3本、カソードが1本あるため、下の画像のように、一番長い脚がカソードになっています。このように、LEDの種類によってアノードとカソードが変わるため、毎回確認するようにしましょう。こちらのサイト(http://www.my-craft.jp/html/aboutled/led_kyokusei.html)がLEDのアノードとカソードの見分け方を詳しく紹介しているので、参考にしてもよいでしょう。
PWM (Pulse Width Module) :パルス幅変調
マイコンが出力できる電圧は、0Vか5Vのどちらかです。では、中間の3Vが欲しい場合はどうすればいいのでしょうか。これを解決するのが、PWM(パルス幅変調)です。これは、HIGHになっている時間の比率で、全体の電圧を変えるという方法です。下の画像を見てください。
上から順に、5V (HIGH)になっている時間が、100%、50%、30%となっています。この値のことをduty比と呼び、この時間間隔は非常に短く、電圧を受ける側には、それぞれ5V、5V×50%=2.5V、5V×30%=1.5Vが入力されているように見えます。このように電圧を上げている時間を調整して、任意の電圧を出力するのが、PWMです。(実際には、電力換算で何割、となります)これをLEDに対して入力すると、とても短い時間間隔で、点滅を繰り返しますが、私たちの目には明るさが暗くなったように感じられます。
ブレッドボードでのLED点灯回路作成
LEDを光らせるために電源をつなげるのですが、そのままつなげると、非常に大きな電流、電圧がかかり、LEDが破壊されます。これを防ぐため、抵抗を繋げて電圧を調整します。そして、カソードにはー極であるGND(Ground つまり0V点です)、3つあるアノードにはマイコンボードの出力端子につなげます。これが下の画像です。
つなげる箇所は下の画像のようです。3,5,6につなげているのは、PWMの出力が可能な端子だからです。(~印が付いている個所はPWMで出力電圧の調整ができ、それ以外はDIGITALとあるように、LOWかHIGHの2種類しか出力しません。)
3色LED点灯プログラム
では、理論を把握し、回路を構築したところで、プログラムを書いていきます。
#define BLUE 3
#define GREEN 5
#define RED 6
void setup()
{
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
}
void loop() {
int i, red, green, blue,delay_time;
red = 255;
green = 0;
blue = 0;
delay_time = 10;
for (i = 0; i < 255; i++){
analogWrite (RED, 0);
analogWrite (GREEN, green);
green++;
delay(delay_time);
}
for (i = 0; i < 255; i++){
analogWrite (GREEN, green);
analogWrite (BLUE, blue);
blue++;
green--;
delay(delay_time);
}
red = 0;
for (i = 0; i < 255; i++){
analogWrite (RED, red);
analogWrite (BLUE, blue);
blue--;
red++;
delay(delay_time);
}
}
analogWrite(ピン番号, value) は、valueを0から255までの整数で指定します。0の時、duty比は0、つまり0Vが出力され、255の時はduty比が1、つまり最大電圧が出力されます。
これでLEDを色とりどりに変化させることができました。