100円ショップで小さなクリスマスツリーを買ってきました。このままではちょっと寂しいので、LED を付けて点滅させてみます。
LEDの取り付け
秋月電子で購入した安い赤色 LED がたくさんあったので、これを 8 個利用しました。
適当なリード線を LED の足にハンダ付けし、ツリーに取り付けます。LED の足でツリーの枝を挟むようにしましたが、足はむき出しなのでショートには要注意です。本当は細いヒシチューブなどを被せるのが良いですね。
リード線はアノードとカソードで色を変え、1対ごとにねじってまとめておきましょう。でないと、後からどの線が何なのかわからなくなってしまいますよ (^_^;)
回路図
Arduino を使った回路図です。Arduino UNO になっていますが、実際に使っているのは Arduino Nano 。IDE の設定が異なる以外、ほとんど差異はありません。
回路に特段にかわったことはありません。D2 ~ D9 ピンに抵抗を介して LED を繋いでいるだけです。
抵抗は 470Ω で、LED 1 個に約 6mA 流しています。全体でも 50mA 程度。Arduino のデジタルピンの出力は 20mA ですので、Arduino から十分供給できます。もし、もっと大きな電流を流すようなら、スイッチング回路を追加したほうが良いでしょう。
なお、もし LED の足がショートした場合でも流れる電流は約 10mA ですので、Arduino を壊すことはありません。こうゆうのをフェールセーフといいます、ってね (^_^;)
写真は、ツリーの後ろ側とブレッドボードのようすです。
スケッチ
スケッチです。
- void setup() {
- for (int i=2; i<10; i++) {
- pinMode(i, OUTPUT);
- }
- randomSeed(analogRead(0));
- }
- void loop() {
- byte ptnData = random(1,256);
- digitalWrite(2, bitRead(ptnData,0));
- digitalWrite(3, bitRead(ptnData,1));
- delay(800);
- digitalWrite(4, bitRead(ptnData,2));
- digitalWrite(5, bitRead(ptnData,3));
- delay(1000);
- digitalWrite(6, bitRead(ptnData,4));
- digitalWrite(7, bitRead(ptnData,5));
- delay(800);
- digitalWrite(8, bitRead(ptnData,6));
- digitalWrite(9, bitRead(ptnData,7));
- delay(1000);
- }
random() で 1 ~ 255 の乱数を発生させて、それを 2 進数として各ビットの値で LED を点滅させています。8 個の LED を一気に変化させるのはちょっと忙しない感じでしたので、途中に delay() を入れてポツリポツリと変化するようにしました。
変化のさせ方をもっと工夫したり、PWM を使ってフワンフワンと点滅させたりすると楽しいかもしれませんね。
できあがり
写真は LED 全点灯状態です。
ツリーはテレビの横に置き、電源をテレビの USB 端子からとっています。こうしておくと、テレビに連動してツリーも点灯します。家に人がいるときはだいたいテレビがついていますので、入り切りを気にしなくて良くなります。
ちなみに俺んちのテレビでは、リモコンでテレビを消してから 15 分後ぐらいに USB の電源が切れますので、しばらくはツリーは点灯しています。
遊びにきた孫たちが「ちっちゃいねぇ、ちっちゃいツリーだねぇ」と宣まいやがっています。そりゃお前たちの家には大きなツリーがあるんだろうさっ (^_^;)