チャーリープレクシングでクリスマスツリー用LEDイルミネーションを作る(回路検討編)
◆まえがき
そろそろクリスマスツリーを飾る時期になりました。うちにはArduinoでLEDを点滅させている小さなクリスマスツリーがあって、去年はその表示パターンを増やしました。
・クリスマスツリー

こんなツリーですが、これ以上改良する余地は無さそうです。
そんなことで、これをそのまま飾るしか無いかと思っていたのですが、3年間同じツリーを飾るのもちょっと寂しいです。ならば、新らしい物が作れないか考えてみました。
◆Arduinoで多数のLEDを点灯させる方法
既に作ってあるイルミネーションは Arduinoの(正確にはAtmega328Pの)ポートのプルアップ抵抗を使ってLEDを点灯させているのが特徴です。しかし、Make などでお話を聞くと、そういうのはチャーリープレクシング (Charlieplexing) でやる方が良いという意見が多かったです。
そんなことで、私もチャーリープレクシングのまとめ記事のようなものを書いたりしています。ただ、まとめ記事を書いてはみたものの、実際に自分でプログラムを書いてチャーリープレクシングを動かしたことはありませんでした。だったら丁度良い機会なので、クリスマスツリーのイルミネーションをチャーリープレクシングで点灯させてみることにしました。
なお、まだツリーのイルミネーションとしては完成していないので、製作の過程をいくつかの記事に分けて紹介していきます。
◆チャーリープレクシング
自分でプログラムまで作ったことは無いのですが、完成モジュールなら持っています。
・LOL (Lot of LEDs)シールドと 8x7 LEDアレイ

左はLOLシールドで、9x14 のマトリクスになっています。これを使って、簡単なLEDプロジェクターを作ったことがあります。右は SparkFan の 8x7 LED アレイ(のパチ物)です。
これらのモジュールではLED は長方形に配置されているので、クリスマスツリーのように三角形に配置することは難しそうです。不要な部分の LED を省略して三角形にする手はありますが、あまりスマートな方法ではありません。
◆三角形に配置する方法を考える
そんなことで、チャーリープレクシングで LED を三角形に配置する回路図が出来ないか考えてみます。SparkFan の 8x7 アレイを出発点に検討して行きます。
・長方形の配置 (SparkFan 8x7 array )

この回路図の右端の列の LED を下端を中心に時計回りに90度回転させてみます。回路図に書いた青い線の位置で展開したのが次の回路図です。
・直角三角形に変形

直角三角形に変形出来ました。逆並列に接続した2個のLEDをペアとした階段状の構造になっています。これならクリスマスツリーに取り付け易くなります。
◆Arduinoに接続
左右対称にしておいた方が使い易いので、上の回路図を2等辺三角形に変形させ、Arduinoに接続したのが次の回路図です。なお、1段減らしています。

やっとクリスマスツリーらしくなってきました。ポートを6個使うだけで、30個のLEDを自在に点灯出来ることになります。
ポートの数を増やせばLEDの数をもっと増やすことが出来ます。ソフトの作り易さを考慮して、一番下のLEDの数の最大を16個とすると、全体のLEDの数は72個になり、ポートは9本(例えばD2からD10)で駆動出来ることになります。
なお、この回路にはLEDの電流制限抵抗を入れていませんが、小さなデューティでダイナミック点灯させているので、問題無いと判断しています。また、出力ポートには適度に電流制限がかかっているので、壊れることは無いと思います。
◆配線
本物のツリーに取り付ける前に、仮配線して動作確認します。
・配線中

空中配線では形を保つのが大変なので、スーパーの食品トレイを切ってベースとして使い、配線しました。

配線完了です。なお、仮配線なのでLEDの足は切らないで使っています。
◆点灯テスト
簡単なプログラムを書いて、チャーリープレクシングで点灯させてみました。

全LED点灯(裏から見た写真です)

縦3本バーを横スクロール。
◆まとめ
LEDを三角形に配置したチャーリープレクシングの回路が完成しました。名前を付けても良いなら、トライアングルプレクシング (TrianglePlexing) とでも呼びましょうか。これならクリスマスツリーに取り付けやすいはずです。
ちなみに、もっとたくさんのLEDを使った方がプログラム作りのモチベーションが上がるのですが、手持ちのLEDの数では現在のサイズが限界です。実は AliExpressにLEDを発注しているのですが、これが届くまでは大きなサイズのテストが出来ない状態です。
ともかく回路の接続方法、大げさに言うと接続のトポロジーは出来ました。次の記事ではチャーリープレクシングでツリーを点灯させるためのベースとなるプログラム(関数)を作る予定です。
そろそろクリスマスツリーを飾る時期になりました。うちにはArduinoでLEDを点滅させている小さなクリスマスツリーがあって、去年はその表示パターンを増やしました。
・クリスマスツリー

こんなツリーですが、これ以上改良する余地は無さそうです。
そんなことで、これをそのまま飾るしか無いかと思っていたのですが、3年間同じツリーを飾るのもちょっと寂しいです。ならば、新らしい物が作れないか考えてみました。
◆Arduinoで多数のLEDを点灯させる方法
既に作ってあるイルミネーションは Arduinoの(正確にはAtmega328Pの)ポートのプルアップ抵抗を使ってLEDを点灯させているのが特徴です。しかし、Make などでお話を聞くと、そういうのはチャーリープレクシング (Charlieplexing) でやる方が良いという意見が多かったです。
そんなことで、私もチャーリープレクシングのまとめ記事のようなものを書いたりしています。ただ、まとめ記事を書いてはみたものの、実際に自分でプログラムを書いてチャーリープレクシングを動かしたことはありませんでした。だったら丁度良い機会なので、クリスマスツリーのイルミネーションをチャーリープレクシングで点灯させてみることにしました。
なお、まだツリーのイルミネーションとしては完成していないので、製作の過程をいくつかの記事に分けて紹介していきます。
◆チャーリープレクシング
自分でプログラムまで作ったことは無いのですが、完成モジュールなら持っています。
・LOL (Lot of LEDs)シールドと 8x7 LEDアレイ

左はLOLシールドで、9x14 のマトリクスになっています。これを使って、簡単なLEDプロジェクターを作ったことがあります。右は SparkFan の 8x7 LED アレイ(のパチ物)です。
これらのモジュールではLED は長方形に配置されているので、クリスマスツリーのように三角形に配置することは難しそうです。不要な部分の LED を省略して三角形にする手はありますが、あまりスマートな方法ではありません。
◆三角形に配置する方法を考える
そんなことで、チャーリープレクシングで LED を三角形に配置する回路図が出来ないか考えてみます。SparkFan の 8x7 アレイを出発点に検討して行きます。
・長方形の配置 (SparkFan 8x7 array )

この回路図の右端の列の LED を下端を中心に時計回りに90度回転させてみます。回路図に書いた青い線の位置で展開したのが次の回路図です。
・直角三角形に変形

直角三角形に変形出来ました。逆並列に接続した2個のLEDをペアとした階段状の構造になっています。これならクリスマスツリーに取り付け易くなります。
◆Arduinoに接続
左右対称にしておいた方が使い易いので、上の回路図を2等辺三角形に変形させ、Arduinoに接続したのが次の回路図です。なお、1段減らしています。

やっとクリスマスツリーらしくなってきました。ポートを6個使うだけで、30個のLEDを自在に点灯出来ることになります。
ポートの数を増やせばLEDの数をもっと増やすことが出来ます。ソフトの作り易さを考慮して、一番下のLEDの数の最大を16個とすると、全体のLEDの数は72個になり、ポートは9本(例えばD2からD10)で駆動出来ることになります。
なお、この回路にはLEDの電流制限抵抗を入れていませんが、小さなデューティでダイナミック点灯させているので、問題無いと判断しています。また、出力ポートには適度に電流制限がかかっているので、壊れることは無いと思います。
◆配線
本物のツリーに取り付ける前に、仮配線して動作確認します。
・配線中

空中配線では形を保つのが大変なので、スーパーの食品トレイを切ってベースとして使い、配線しました。

配線完了です。なお、仮配線なのでLEDの足は切らないで使っています。
◆点灯テスト
簡単なプログラムを書いて、チャーリープレクシングで点灯させてみました。

全LED点灯(裏から見た写真です)

縦3本バーを横スクロール。
◆まとめ
LEDを三角形に配置したチャーリープレクシングの回路が完成しました。名前を付けても良いなら、トライアングルプレクシング (TrianglePlexing) とでも呼びましょうか。これならクリスマスツリーに取り付けやすいはずです。
ちなみに、もっとたくさんのLEDを使った方がプログラム作りのモチベーションが上がるのですが、手持ちのLEDの数では現在のサイズが限界です。実は AliExpressにLEDを発注しているのですが、これが届くまでは大きなサイズのテストが出来ない状態です。
ともかく回路の接続方法、大げさに言うと接続のトポロジーは出来ました。次の記事ではチャーリープレクシングでツリーを点灯させるためのベースとなるプログラム(関数)を作る予定です。