🚨
フルカラーLEDの使い方
ランダム色にスムーズに変化する
仕様
- 注意点
- 色によって推奨する電圧が異なる
- (カソード|アノード)コモン型の違い ← 重要
抵抗値の求め方
- わかっていること
- 電源: 5V
- 推奨電圧: 赤2.0V 緑3.6V 青3.6V
- 推奨電流: 20mA
- 抵抗値の計算
- 赤 (5 - 2.0) / 0.02 = 150Ω
- 緑 (5 - 3.6) / 0.02 = 70Ω
- これによって弱い赤を守るには150Ω以上の抵抗が必要だとわかる
- もし70Ωで統一してしまうと赤が死ぬ
- (5 - 2.0) / 70 = 43mA となって推奨電流 20mA の倍以上になってしまう
- しかしなぜかキリの良い抵抗がないので220Ωを使うことにする
- この辺は適当でいいらしい
- 抵抗値を上げるぶんにはそんな問題ない
- 暗くなるだけ
- 下げすぎるとLEDが燃える
- 220Ωだったときの実際の電流
- 赤 (5 - 2.0) / 220 = 14mA
- 緑 (5 - 3.6) / 220 = 6mA
- 20mA ほしいところで 6mA しかないけど明るさはそんな変わらない
配線
- なぜ3つある?
- フルカラーLEDは3つのLEDがぎゅうぎゅう詰めになったもの
- なので赤・緑・青を個別に接続したときの配線とまったく同じ
- カソードコモン型とは?
- ぎゅうぎゅう詰めの利点としてマイナス側の線は物理的に一本にまとめることができる
- 言い変えると「マイナス側を共用」なので「カソードコモン型」
- プラス側も一本になってない?
- それぞれに抵抗を与えないといけないので一本化できない
- もしLED側に抵抗を内蔵していれば一本化できるはず
- でも電源電圧がわからないと抵抗値はあらかじめ決められない
- だから抵抗入りのLEDはない(?)
- もしプラス側を一本化したら白黒になる?
- そもそも3つの電圧をそれぞれ変更しないと色味が表現できない
- 仮にプラス側を一本化できたとしたら暗いか明るいかだけになってしまう
- だから両端を一本化したフルカラーLEDはない
- もし抵抗を右側というかマイナス側に繋ぐとしたら今度は「プラス側を共用」できるので「アノードコモン型」になる
- それぞれに抵抗を与えないといけないので一本化できない
コード
void setup() {
}
int count = 0;
void loop() {
analogWrite(6, 128 + sin(2 * PI / 60 * count * 0.5) * 127);
analogWrite(5, 128 + sin(2 * PI / 60 * count * 0.6) * 127);
analogWrite(3, 128 + sin(2 * PI / 60 * count * 0.7) * 127);
count++;
delay(1000 / 60);
}
コードからは一体型のフルカラーLEDなのか3つのLEDなのかはわからない
LEDかどうかもわからない
雑感
これまでLEDの色は外側の樹脂の着色で決まってんじゃないかと怪しんでいたがフルカラーLEDの樹脂は透明なのでつまり本当に発色していることがわかった。
Discussion