ちょっと Tea Time!? 【備忘録】新春工作。マイコン内蔵LEDをつかってみる。 2026.1.21
秋月にまだ福袋あるかな〜と思っていましたが、さすがにもうないようです。
ということで、いつもの2Fに行ってみましたが、あまりめぼしいものはなさそうです。
まあ、遊びで買ってみようということでマイコン内蔵LEDを買ってみました。

マイコン内蔵LEDです。20個で200円です。OSTW3535C1Aです。
データシート
形状は小さいですが、蛇の目基板に直接実装できそうです。

ある程度のサイズがあるので、蛇の目基板に実装できそうです。
使うには高速なマイコンが必要
データは24Bitのシリアル転送で行います。1,0はH,Lのパルスの幅で決定されますが、
この時間幅が小さいです(最小で300nSくらい)。実はこれに類似したLEDを以前にPICで動かしてみたことがありますが、
さすがにPICだと遅いので、点灯させるのが精一杯でした。
今回はRP2040をつかって見ようかと思います。

シリアル転送で動かします。パルス幅が短いので高速なマイコンが必要です。
とりあえず半田付けしてみましょう

こんな形で一袋分の20個をとりつけてみました。

RP2040マイコンはこれをつかいます。

マイコンをとりつけて完成です。

LEDの配線はこんな感じになっています。
動かしてみましょう! 2026.1.22
24bitデータを送出するプログラムを作成です。
タイミングは仕様の下限を狙います。そうすれば、伝送速度があげられますからね。
下記のcpu_led_dataout()関数が1つのデータを送ります。
| void cpu_led_high() { int i; for(i=0;i<7;i++) output_high(LED); for(i=0;i<2;i++) output_low(LED); } void cpu_led_low() { int i; for(i=0;i<2;i++) output_high(LED); for(i=0;i<7;i++) output_low(LED); } void cpu_led_dataout(int data) { int i; int j=0x800000; for(i=0;i<24;i++){ if(data&j) cpu_led_high(); else cpu_led_low(); j = j >> 1; } } |
上記のプログラムでのタイミングです。

0コード送出時
H=200ns弱(220ns-380ns) ちょと短い
L=580ns(580ns〜1.6us) 下限ぎりぎり

1コード送出時
H=500ns(580ns-1.6us) ちょと短い
L=300ns(220ns-420ns) 大丈夫
このタイミングで1データ(24Bit)を送出する時間は下記のようになりました。
20個のLEDを点灯させるわけですから、これを20個連続で送りますから
最大で19us*20=380us必要ですが、フレーム時間を100fpsに設定すると10ms毎でのデータ送出
になりますから、CPUの占有率は4%程度とかなりすくないです。
さすがにRP2040は速いです。

24bitのコードの送出では、0x000000と0xffffffではそれぞれ17usと19usの時間がかかります。
実際に点灯させると、あれ?
20個のLEDを流れるように点灯させるプログラムを組んでみましたが、
なぜか最後の4個のLEDが点灯しません。半田付けをチェックしてみましたが問題なしです。
LEDの端子の信号をオシロで調べてみましたが、信号はきているようです。
それと、点灯しているLEDも後方部分ではすこし色調がおかしく点灯するものがあります
(白色指定しているが、それ以外の色がみえる)。

20個あるうちの後方の4個のLEDが点灯しません。それにすこし色調がおかしいLEDもあります。
LED交換とクロックタイミング変更
まずクロックタイミングをすこし変更して、仕様内に収まるようにしました。そうすると、点灯しないLEDは
そのままですが、点灯しているLEDはすべて白色になりました。やはりタイミングは仕様内にいれないと
いけないようです。
つぎに点灯しなかった最初のLEDを取り替えました。そうすることで、20個すべてが点灯するようになりました。
やはり1個不良品があったと思われます。でも、長期保管というだけで壊れるかな?ひょっとして、そういった
事例がみつかったからジャンクとして安価に売っているのかな?このあたりは、よくわかりません。

ようやく全点灯しました。ついでに、裏面にパスコンなどを挿入しています。
ちなみに、変更後のプログラムです。
| void cpu_led_high() { int i; for(i=0;i<10;i++) output_high(LED); for(i=0;i<2;i++) output_low(LED); } void cpu_led_low() { int i; for(i=0;i<4;i++) output_high(LED); for(i=0;i<7;i++) output_low(LED); } void cpu_led_dataout(int data) { int i; int j=0x800000; for(i=0;i<24;i++){ if(data&j) cpu_led_high(); else cpu_led_low(); j = j >> 1; } } |
実際のタイミングは下記になりました。

0コード送出時 H=300ns(220ns-380ns) L=600ns(580ns〜1.6us)

1コード送出時 H=680ns(580ns-1.6us) L=260ns(220ns-420ns)
さて、動くようになりましたが、これで何をさせようかな?
不良率高そうだなあ〜
色を変化させて点灯させてみると、1個だけ点灯色が異なるものがあった。
輝度を落として白色発光でみてみると、どうやら緑のLEDが点灯してないようだ。

1個のLEDの緑成分が点灯していません。
交換するのも面倒だなあ〜。それにしても、結構不良率が高そうだなあ〜。
買ってみよう! 2026.1.31
このLEDですが1個10円程度なので、マトリックス状の基板でもつくって点灯させたら
面白いかな〜と思いましたが、調べてみるとすでにそういったものがあるようです。
さらに、LED1個あたりの値段にすると10円以下です。
ということもあり思わず買ってみました。

8x8のマトリックスLEDです。これで500円程度でした。

配線の端子は基板の裏面についています。

ついでにテープ状のものも買ってみました。長さは3mあります。

1mあたり60個のLEDがついています。全部で180個ですが、
セール品で800円ほどでした。LED1個あたり5円程度です。

IP65なので、野外でもそのままつかえそうです。
動かしてみましょう!
ドライバーソフトはまったく同じなので、そのまま繋ぎかえるだけです。
もちろん、LEDの数だけ段数は増やします。

8x8のマトリックスLEDも抜けはありませんでした。

180個のLEDも問題なしでした。
これらをつかって、家で電飾したら面白いだろうなあ〜。
絶対変わり者っていわれるだろうなあ〜(笑。
さてさて、本当に何につかおうか?
消費電流は? 2026.2.2
まずは8x8マトリックスLED基板を8枚ほど準備して、キューブ状に張り合わせた
電飾箱を作ろうかと試案中です。そして、どこからにぶら下げれば白色光だと
照明代わりにもなるし、色を変化させればイルミネーションにもなります。
パターンはリモコンで変更できるようにすればいいかな〜。
しかし、このLEDはどのくらいの消費電流なのだろう?
ということで、一度はかってみることに。

全点灯させてみました。結構、明るいです。

ちょっと見にくいですが、1.788Aでした。こりゃ、大食いです。
1枚のパネルを全点灯させたら1.8Aほど電流が流れました。
結構大きいなあ〜。
まあ、考えたら当たり前かもです。LED各素子に10mA流すとすると
RGBで30mA。これが8x8=64あるわけですから、1.92Aくらいは流れることになります。
しかし、これが8枚だと1.8A/枚としても14.4Aかあ〜。
20Aクラスの5V電源が必要になるし、また配線もかなり太くなりそうです。
まずは電源をどうしようか?
これを買ってみましょう! 2026.2.3
AMAZONで探していたら、こんなのがありました。
さらに割引クーポンがついていたので、600円ほど値引きがありました。

5V20Aでよかったのだけど、これが安かったです。
色々と準備 2026.2.6

5V30Aのスイッチング電源が届きました。

追加のLEDパネルも届きました。なんかLEDの色が違うなあ〜。

ついでに60個LED/mの5mリールも購入です。

IP30なので防水処理はありません。まあ、その分安価です。
テープ状のLEDは5mありますが、電源ラインの両端間の抵抗を測定したら2.3Ωありました。
電源ラインとGNDの両方だと4.6Ωになります。結構、抵抗が大きいので電流が流れると
かなりの電圧降下が生じてしまいます。LEDは5mで300個ありますが、全灯できるのは
10個程度でしょう。
LEDキューブも面白いかな? 2026.2.8
面で点灯させるのもいいけど、3Dで点灯させるのも面白いかもです。
下記のようなキットも色々とでています。
まあ、作るのは大変だろうなあ〜。

LEDキューブのキットも色々あるようです。作るのは試練だなあ〜。
ちなみに、いま手元にどのくらいのLEDがあるかを調べてみました。
主に福袋についていた赤色LEDがほとんどですが、結構な数がありそうです。

部品箱にたまっているLED。秋月の福袋などについていたものがほとんどです。
ざっと個数を調べてみました。LED20個の重量が5.87gだったので、
総重量から推測すると、およそ950個でした。1000個まではなさそうです。
1000個あれば10x10x10の3Dができたのだけどなあ〜。
まあ、作るとすれば回路的にすっきりする8x8x8が順当でしょう。
そうすればLEDは512個で足りますから、現状でも十分たります。

0.01gの分解能がある秤です。部品の個数を数えるのに便利です。
とりあえず並べて 2026.2.14
もともと8x8のLEDマトリックスはキュービック状にしようかと思いましたが、
とりあえず並べて動かしてみることにしました。

テープでつなげて連結です。

裏面はこんな感じで接続です。電源ラインはφ0.5mmの銅線をつかって、そこから各LED基板に給電です。

とりあえず点灯させてみました。
せめて文字パターンが流れて表示できるようにしようかなあ〜。
(つづく)