どうもkohaniiです。
数年前に購入した5mmの色付きスモークタイプのLEDが少なくなってきたので、
AliExpressで面白そうなLEDを購入してみました。
3mmのスモークLEDで6色×10個入りで440円(+送料58円)と安いので試しに買ってみました。
内容は赤色、オレンジ色、黄色、緑色、青色、白色です。
オレンジ色は少し珍しいんじゃないでしょうか。
次に角形で発光部がドーム状になっているLEDで、5色×6個入りで134円(+送料138円)で試しに買ってみました。
内容は赤色、黄色、緑色、青色、白色です。
https://www.aliexpress.com/item/1005002084724414.html
届いた
まず3mmのLEDです。
色ごとにわざわざ小袋に分けられています。
商品の写真よりスモークが強め(不透明)でした。
そして角形のLEDです。
こちらは全ての色がまとめてチャック袋に入っています。
なぜか赤色のLEDだけリード線が短いです。
並べて写真を撮ってみました。
角形LEDの青色は周りの樹脂が少し紫っぽいです。
3mmのLEDのリード線は2.54mmピッチになっているので普通のユニバーサル基板に刺さります。
光らせてみる
ブレッドボードにRaspberry Pi PicoとLED、抵抗を配線しました。
抵抗は全て100Ωで、LEDをPicoのI/Oに接続しています。
ちなみにPicoのI/Oの電圧は3.3Vです。
試しに全てのLEDピンをハイにしてLEDを光らせてみました。
ほとんどのLEDはかなり眩しいですが、3mmの黄色と角形の黄色はそんなに眩しい感じはしないです。
中でも緑 青 白色はどちらのLEDもかなり眩しいです。
上から見たLEDです。
やはり上から見た方が明るいです。
途中で角形LEDの黄色を間違えて逆電圧をかけてしまい、正しい極性に直しましたがほとんど見えないほど暗く、壊れてしまったようです。
秋月電子で販売されている黄色LEDの耐逆電圧は5Vほどが多かったのですが、この黄色のLEDは3.3Vの逆電圧には耐えられなかったようです。
Raspberry Pi Picoとプログラム
Arduinoで開発したかったので、Raspberry Pi PicoをArduinoで使うためのボードをインストールしました。
arduino-pico
https://github.com/earlephilhower/arduino-pico
他にもMbed OSを利用したPico用のボードがあるのですが、Mbedベースで高度な事ができない(やりづらい)、digitalWriteの動作が遅いなどの問題があるため、
Raspberry Pi Pico SDKを使用しているこのボードを利用しています。
このボードは最近FreeRTOSがサポートされるなど高機能なのでおすすめです。
プログラム
LEDを光らせるためのプログラムです。
leds_pin配列に入っているピン番号にLEDが繋がっています。
const int leds_count = 11;
const int leds_pin[leds_count] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
void setup() {
analogWriteResolution(8);//bit
analogWriteFreq(40000);
for (int i = 0; i < leds_count; i++) {
pinMode(leds_pin[i], OUTPUT);
}
}
void loop() {
/*
//全て光らせる用
for (int i = 0; i < leds_count; i++) {
digitalWrite(leds_pin[i], HIGH);
}
return;
*/
for (int l = 0; l < 8; l++) {
for (int a = 0; a < leds_count; a++) {
for (int i = 0; i < leds_count; i++) {
analogWrite(leds_pin[i], i == a ? 255 : 0);
}
delay(60);
}
for (int a = leds_count - 2; a > 0; a--) {
for (int i = 0; i < leds_count; i++) {
analogWrite(leds_pin[i], i == a ? 255 : 0);
}
delay(60);
}
}
for (int c = 0; c < 1000; c++) {
float offset = sin((float)c / 1000 * 3.1415 * 2);
offset *= offset;
for (int i = 0; i < leds_count; i++) {
float phase = 0;
phase -= (float)i / leds_count;
phase += (float)offset * 5;
float n = 0.5 - (cos(phase * 3.1415 * 2) / 2);
n *= n * (0.5 + n / 2);
analogWrite(leds_pin[i], (int)(n * 255));
}
delay(10);
}
for (int l = 0; l < 8; l++) {
uint8_t r[leds_count];
for (int i = 0; i < leds_count; i++) {
r[i] = random(100) < 50 ? 1 : 0;
}
for (int a = 128 - 1; a >= 0; a--) {
for (int i = 0; i < leds_count; i++) {
analogWrite(leds_pin[i], r[i] ? (a * a) / 64 : 0);
}
delay(5);
}
}
}
動画
プログラムを書き込んで動画を撮ってみました。音は出ません。
ナイトライダーからのPWMでのスクロール、ランダム点滅で光ります。
Raspberry Pi PicoではPWMが16チャンネル(8スライス×2)使える様なので、このような豪華な使い方ができます。
これでLED在庫の危機は無くなりました。
色も良いので他の実験にも使ってみようと思います。
おわり
コメント