どうも、なかしーです。
僕は自動車のマイコンにプログラミングをする組み込みエンジニアとして働きつつ、YouTubeでArduinoの使い方を解説しています。
ArduinoでフルカラーLEDを光らせるにはどうすればいいんだろう?
という悩みを解決します。
フルカラーLEDは光の三原色である赤、緑、青のLEDがひとつになった部品です。
普通のLEDとの違いは様々な色に変えることができます。
冬になると各地でイルミネーションが行われていますが、じわぁーっと色が変化する光はフルカラーLEDで再現可能です。
今回は「ArduinoでフルカラーLEDを使う方法」について解説します。
タップできるもくじ
フルカラーLEDの特徴
Arduinoに繋げてプログラミングする前に、フルカラーLEDの特徴について紹介します。
- 1つで3色を表示可能
- カソードが共通
- 光量を調整して好きな色に変化可能
1つで3色を表示可能
通常のLEDで赤、緑、青に光らせようと思うと3つ必要ですが、フルカラーLEDはたったの一つで3色を表示することができます。
カソードが共通
3色分のLEDが一つになっただけでなく、カソードは3色で1つだけです。
画像の右から2番目の一番長い足がカソードです。
(ちなみに右から赤→カソード→緑→青)
配線の数が減って便利ですね。
光量を調整して好きな色に変化可能
赤、緑、青だけではなく、光の明るさを調整することで好きな色に変えることができます。
赤色 | 緑色 | 青色 | 混ざった色 |
〇 | 〇 | ー | 黄色 |
〇 | ー | 〇 | 紫色 |
ー | 〇 | 〇 | 空色 |
〇 | 〇 | 〇 | 白色 |
これは光の三原色の特徴を利用しています。
テレビやスマホの画面も光の三原色で様々な色を表現しています。
ArduinoとフルカラーLEDの繋ぎ方
今回使用するフルカラーLEDの型番は「OSTA5131A」です。
ArduinoとLEDを繋げるときは、電流を制限するために抵抗をつなぐ必要があります。
抵抗を計算するときは、小学校で習った「オームの法則」を使います。
適切な抵抗値を求めるのに必要な電圧と電流はデータシートを確認しましょう!
色 | 電圧 | 電流 |
赤 | 2.1V | 20mA |
緑 | 3.1V | 20mA |
青 | 3.1V | 20mA |
データシートを確認したところ上の表の値が書いてありました。
この値を元にそれぞれ抵抗値を計算します。
Arduinoのデジタルポートの電圧は5Vなので、抵抗の計算式はこのようになります。
この式に電圧を代入して計算すると
- 赤・・・145Ω
- 緑と青・・・95Ω
この値より大きい抵抗を繋げば壊れることはありません。
Arduinoの入門キットに入っていた220Ω(赤 赤 黒 黒)の抵抗を繋ぎました!
あとは抵抗の反対側(フルカラーLEDと繋がっていない方)をArduinoのデジタルポートに接続すれば準備完了です。
ちなみに、波線(~)がついているデジタルポートにつないでおくと後から説明する明るさを調整する方法で繋ぎ直さなくて済みます。
よく分からない人は次のように繋いでください。
- 赤色・・・デジタルピン3
- 緑色・・・デジタルピン5
- 青色・・・デジタルピン6
フルカラーLEDを自在に操るプログラム
フルカラーLEDをArduinoに繋ぎ終わったらプログラムを作ってみましょう。
今回はdigitalWrite関数とanalogWrite関数を使う2パターンについて紹介します。
digitalWrite関数を使った方法
基本はLEDを光らせるときと同じで、デジタルポートをHIGHにしてあげると5Vの電圧を出力して、LEDが点灯します。
0.5秒ごとに色が切り替わるプログラムを作ってみました。
void setup() {
pinMode(3, OUTPUT); //赤色
pinMode(5, OUTPUT); //緑色
pinMode(6, OUTPUT); //青色
}
void loop() {
int i = 0;
for(i = 1; i < 8; i++) {
digitalWrite(3,i&0x01);
digitalWrite(5,i&0x02);
digitalWrite(6,i&0x04);
delay(500);
}
}
analogWriteを使った方法
analogWriteは引数に応じたパルス波を出力し、引数が0のときは明るさが0%で、255のときが100%となります。
これを使って光の明るさを調整することで様々な色を作り出すことができます。
じわぁーっとLEDの色が変化するプログラムを作ってみました。
void setup() {
pinMode(3, OUTPUT); //赤色
pinMode(5, OUTPUT); //緑色
pinMode(6, OUTPUT); //青色
}
void loop() {
int i = 0;
for(i = 1; i < 51; i++) {
analogWrite(3,i*5); //赤を0%から100%へ
delay(50);
}
analogWrite(6,0); //青を0%
for(i = 1; i < 51; i++) {
analogWrite(5,i*5); //緑を0%から100%へ
delay(50);
}
analogWrite(3,0); //赤を0%
for(i = 1; i < 51; i++) {
analogWrite(6,i*5); //青を0%から100%へ
delay(50);
}
analogWrite(5,0); //緑を0%
}
音量調整で使われるようなつまみ(可変抵抗器)で色を調整できるようにしてみると面白いと思いますよ。
そのためにはA/D変換が必要です。
ArduinoでA/D変換をする方法は「ArduinoでA/D変換する方法」を読んでみてください。
ArduinoでA/D変換する方法【電子工作の入門講座】フルカラーLEDを複数つなげる場合
Arduinoが出力できる最大の電流値は100mAとなっています。
フルカラーLED1つあたり最大で60mAなので、2つ以上繋げて5つ分光らせたら100mAを超えてしまいます。
それを回避するためには、外部電源とトランジスタを使った回路が必要となります。
時間があるときにトランジスタの使い方の記事と動画を投稿する予定です!
お楽しみに!
ArduinoでフルカラーLEDを使う方法|まとめ
この記事では「ArduinoでフルカラーLEDを使う方法」について解説しました。
フルカラーLEDは3色に発光するLEDが1つになっており、カソードも共通化されています。
テレビやスマホの画面に利用されている光の三原色のように、光の明るさを調整することで様々な色を表現することが可能です。
LEDを光らせるに電流を制限する抵抗を繋いで、digitalWrite関数もしくはanalogWrite関数を使うことでフルカラーLEDを自在に操ることが可能です。
Arduino関連の人気記事
>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】
>>Arduinoをゼロから勉強する方法を紹介【参考書は不要】
>>Arduinoのプログラムの書き方【基本的なルールは4つある】
当ブログで人気のArduino入門キット