4*4*4の LED CUBE 作りに挑戦してみようかな(5)
4×4×4のLEDキューブ製作、いよいよ佳境に差し掛かってきました。
前回、不安定だったLED1個を正常なLEDへと交換し(キューブの内側だったけど、まだ4*4*4だから何とかハンダコテが届いたけど、これ以上大きいと致命的な可能性も)、すべてのLEDが正常に配線されていることを確認し、これでハード的には完成。
Arduinoと接続するとこんな感じに。うーん、イメージと違う。なんか、2階建ての建物みたいになっちゃった。やっぱり基板にピンヘッダを直接ハンダ付けしてArduinoと接続、の方が美しいな。

続いていよいよArduinoのプログラム(スケッチ)に入っていきます。
ということで、出来上がったLEDキューブの構造確認から。前々回載せたキューブとArduinoとの配線図を、もう少し分かりやすく立体的に描画してみました。

基本的な考え方は、GNDに接続状態になったLayerと、プラス電圧がかかっているColumnとが交差している箇所のLEDが点灯する仕組みになっています。例えばLayer3とColumn6だと、3段目の6番LEDが点灯。
Layer1~4に対応するArduinoのピン(A0~A3)をHIGHにすると、トランジスタのベースに電流が流れ、それによりコレクタとエミッタがショートした状態になり、Layer(カソード)がGNDと接続。
因みにオリジナルの記事では2N2222A というトランジスタを使っていますが、ここではここで紹介したS8050 を使っています。
両者の増幅率(hFE)に大した違いはないようだし、負荷となるコレクタ電流は、2N2222A が 600mA で S8050 が 500mA なので、大勢に影響はないと思います。
なーんて、偉そうなことが言えるのも、ここでトランジスタのことを学んだお陰。最初にメロディICを使って音を出してみようとした時は、回路図にICが入っているから入れましたって感じで、意味も役割も分かっていませんでした。
いやいや、私も成長したもんだなー(って、遠い目をして自己満足に浸ってます)。
Arduinoのデジタル出力ピンは、通常0から13番までしかありませんが、pinMode()で設定することで、アナログ入力の6個のピン(A0~A5番ピン)もデジタル出力用に切り替えることができます。
この場合、順番にデジタル出力14~19番のピンとして扱うことができ、合計で20個のデジタル出力が可能になるんだそうです(これが、上図に書き加えたピン番号)。
Layer1に接続されているトランジスタにベース電流を流した状態(pin14をHIGH)で、Column1から順に電流を流していく(pin0→pin1→pin2→・・・→pin19)と、一番下の階層のLEDが順番に点灯していきます。
Column16までいったらLayer1をOFF(pin14をLOW)にして、代わりにLayer2をON(pin15をHIGH)にしておいて、同じくColumn1から順に電流を流していくと、今度は2段目の階層が順番に点灯していきます。
これを繰り返すことで、64個のLEDが下から順番に点灯していきます。これをスケッチにしたのが下のものです。
因みに上の表示は、Gistというウェブサービスを使っています。こんなことも出来るんですね。
で、Arduinoに書き込み、LED CUBE 初点灯。結構、緊張する。
何とか動いてくれました。ホッと一安心。
次回、本チャンのプログラムを書き込んでいきます。
前回、不安定だったLED1個を正常なLEDへと交換し(キューブの内側だったけど、まだ4*4*4だから何とかハンダコテが届いたけど、これ以上大きいと致命的な可能性も)、すべてのLEDが正常に配線されていることを確認し、これでハード的には完成。
Arduinoと接続するとこんな感じに。うーん、イメージと違う。なんか、2階建ての建物みたいになっちゃった。やっぱり基板にピンヘッダを直接ハンダ付けしてArduinoと接続、の方が美しいな。

続いていよいよArduinoのプログラム(スケッチ)に入っていきます。
先ずはLayer(階層)をHIGHにしておいて
今回の製作のお手本としている LED CUBE CODE GENERATOR には、キューブの制御プログラムがあるのですが、構造の確認も含め、先ずは自分でテストプログラムを組んでみようかと。ということで、出来上がったLEDキューブの構造確認から。前々回載せたキューブとArduinoとの配線図を、もう少し分かりやすく立体的に描画してみました。

基本的な考え方は、GNDに接続状態になったLayerと、プラス電圧がかかっているColumnとが交差している箇所のLEDが点灯する仕組みになっています。例えばLayer3とColumn6だと、3段目の6番LEDが点灯。
Layer1~4に対応するArduinoのピン(A0~A3)をHIGHにすると、トランジスタのベースに電流が流れ、それによりコレクタとエミッタがショートした状態になり、Layer(カソード)がGNDと接続。
因みにオリジナルの記事では2N2222A というトランジスタを使っていますが、ここではここで紹介したS8050 を使っています。
両者の増幅率(hFE)に大した違いはないようだし、負荷となるコレクタ電流は、2N2222A が 600mA で S8050 が 500mA なので、大勢に影響はないと思います。
なーんて、偉そうなことが言えるのも、ここでトランジスタのことを学んだお陰。最初にメロディICを使って音を出してみようとした時は、回路図にICが入っているから入れましたって感じで、意味も役割も分かっていませんでした。
いやいや、私も成長したもんだなー(って、遠い目をして自己満足に浸ってます)。
次は、Column(縦方向)を順番にHIGHに
さて話は戻り、縦方向の(1~16の内のどこかの)Columnに対応するArduinoの出力ピン(pin 0~13,18,19:例えばColumn4→pin3)をHIGHにすると、Arduinoから5Vの電圧がColumunに出力されます。Arduinoのデジタル出力ピンは、通常0から13番までしかありませんが、pinMode()で設定することで、アナログ入力の6個のピン(A0~A5番ピン)もデジタル出力用に切り替えることができます。
この場合、順番にデジタル出力14~19番のピンとして扱うことができ、合計で20個のデジタル出力が可能になるんだそうです(これが、上図に書き加えたピン番号)。
以上のことを踏まえて
さて、これらのことを踏まえて、Arduinoのテストプログラムを組んでみましょう。Layer1に接続されているトランジスタにベース電流を流した状態(pin14をHIGH)で、Column1から順に電流を流していく(pin0→pin1→pin2→・・・→pin19)と、一番下の階層のLEDが順番に点灯していきます。
Column16までいったらLayer1をOFF(pin14をLOW)にして、代わりにLayer2をON(pin15をHIGH)にしておいて、同じくColumn1から順に電流を流していくと、今度は2段目の階層が順番に点灯していきます。
これを繰り返すことで、64個のLEDが下から順番に点灯していきます。これをスケッチにしたのが下のものです。
因みに上の表示は、Gistというウェブサービスを使っています。こんなことも出来るんですね。
で、Arduinoに書き込み、LED CUBE 初点灯。結構、緊張する。
何とか動いてくれました。ホッと一安心。
次回、本チャンのプログラムを書き込んでいきます。
- 関連記事
-
-
ユニバーサル基板の臭いに悩まされながら74HC595の使い方を
-
4*4*4の LED CUBE 作りに挑戦してみようかな(6)
-
4*4*4の LED CUBE 作りに挑戦してみようかな(5)
-
4*4*4の LED CUBE 作りに挑戦してみようかな(4)
-
4*4*4の LED CUBE 作りに挑戦してみようかな(3)
-