(4×4×4のLEDキューブを作る)
今回は、4×4×4のLEDキューブを作っていきたいと思います。
材料は、
・5㎜発光ダイオード ×64個
・130x250mmユニバーサル基板 ×1枚
・arduino uno ×1個
・ジャンパ線 ×20本
・針金 ×1個
・工具:半田ごて、はんだ、ニッパー、グルーガン、ドリル、ラジオペンチ etc
手順は、書くのに時間がかかるので今回は、プログラミングのところを
重点的にやっていきたいと思います。
もともとはこのようになっているはずなのですが、下から配線すると
やりにくかったので上からジャンパ線で配線することにしました。
配線は、このようにします。
各層との接続は、下から1層、2層、3層、4層とすると
arduinoとの接続は、このようになります。
それでは、ソースコードを書いていきましょう。
|
|
このコードを説明すると
まず
int layer[4] = {A3, A2, A1, A0};
int column[16] = {13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, A5, A4};
は各層と縦棒がArduino nanoのどのピンと接続をしているかを示しています。
次にsetup()内では最初に定義したピンが全てOUTPUTであるということを示し、
randomSeed(analogRead(0));
は
random
関数を使う際に必要なものです。
random関数は乱数を生成する関数ですが、Arduinoを起動した後、一旦乱数を生成してしまうと、その数値がArduinoを再起動したあとも同じで固定になってしまいます。randomSeed
関数により、毎回違う乱数を生成することができるのです。
次にloop()内では
allOff();
flickerOn();
randomflicker();
と3つのメソッドの呼び出しを行っています。
まず、allOff()から見ていきます。
for (int i = 0; i < 16; i++) {
digitalWrite(column[i], LOW);
}
for (int i = 0; i < 4; i++) {
digitalWrite(layer[i], LOW);
}
となっており、全ての層と縦棒がLOWになっておりどこにも電気が流れてない状態になっています。
名前の通り、全てのLEDがOFFの状態になっています。
次にflickerOn()
を見ますと、
int i = 150;
while (i != 0) {
allOn();
delay(i);
allOff();
delay(i);
i -= 5;
}
となっています。
allOn()
は先ほどのallOff()
と反対に全てのLEDがONの状態になっていることを示します。
ここではwhile文を使って最初に設定したi = 150が0になるまで繰り返し、LEDのON/OFFを繰り返しています。
最後の文のi -= 5
により徐々にON/OFFの間隔が短くなっています。
これが0になるまで繰り返されるので計30回ON/OFFを繰り返しています。
最後にrandomflicker()
を見ていきます。
allOff();
int x = 10;
for (int i = 0; i != 750; i += 2) {
int randomLayer = random(0, 4);
int randomColumn = random(0, 16);
digitalWrite(layer[randomLayer], HIGH);
digitalWrite(column[randomColumn], LOW);
delay(x);
digitalWrite(layer[randomLayer], LOW);
digitalWrite(column[randomColumn], HIGH);
}
まず、random関数によって各層と縦棒のうち1つをランダムで選択し、10ミリ秒点灯させ、その後OFFにするということをfor文によって繰り返しています。
つまり、このプログラムは
全てのLEDの点滅→任意のLEDの点滅を繰り返しているプログラムになります。
完成したものがこちら
配線を上にしたので配線が見えて気になるのですが綺麗です。
LEDキューブ本体は、半年前くらいに作ったことがあるのですが、その時は、
arduino nano でやってソースコードのインクルードができなくて使えなくて
あきらめていたのですがarduino uno が余っていたのでarduino unoで作りました。
参考サイト
・4×4×4のLEDキューブを作る(前編) | 物を作る者 (novicengineering.com)
・4×4×4のLEDキューブを作る(後編) | 物を作る者 (novicengineering.com)
・How to Make a LED Cube at Home - YouTube