LED Cube 7x7x7
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 7 | ||||
| × | 1 | ||||
![]() |
| × | 49 | |||
![]() |
| × | 1 |
必要なツールとマシン
> ![]() |
|
このプロジェクトについて
私はいつも自分のLEDキューブを作りたかったのですが、今は私のプロジェクトをあなたと共有しています。
ステップ1
最初に行うことは、 LEDマトリックスを作成することです。
この場合、7つの7x7LEDマトリックスを作成しました。
アノードとカソードを分割し、それらを行と列にはんだ付けしたので、最後に、LEDマトリックスごとに7つのアノードと7つのシャトードがあります。


ステップ2
次に、LEDキューブを使用するために必要なハードウェアが必要です。
あなたが電子機器をよく知らないならば、これは最も難しい部分です。
しかし、私はこの部分を明確に説明しようとしています。
私は7つの74HC574を使用しました。
このICは8ビットのDフリップフロップで、8ビットのメモリです。このようにして、それらにいくつかのビットをロードして、キューブ上の画像を表示できます。 LEDマトリックスが7つあるので、74HC574が7つ必要です。
どの層をオンにするかを決定するために、7つのNPNトランジスタも必要です。
このように、マルチプレクサの手法を使用して、すべてのキューブ上の画像を視覚化できます。
最後に、74LS138も必要です。これは、3〜8ラインのデコーダーデマルチプレクサーです。データを保存するためにパルスも必要なため、3ビットですべてのフリップフロップを制御できます。
これはハードウェアのブロック図です:

自分で回路を作り、ArduinoのスタンドアロンATmega328Pを使用しました。

以下のすべての回路図を見ることができます。

ステップ3
ハードウェアとLEDキューブの構造も必要です。私はそれを作るためにいくつかの木片を使用しました。
その後、すべてを組み立てることができます。各LEDマトリックスを他のマトリックスの前に配置し、各層のカソードを同じトランジスタに接続する必要があります。

ステップ4
最後に、キューブを作成するためのコードを記述できます。上のブロック図は、コードの記述に役立ちます。
この部分はかなり混乱する可能性がありますが、ある程度の練習をすれば簡単になります。
以下のコードは、他のアニメーションが長すぎるため、最も簡単なアニメーションを表していますが、少しファンタジーがあれば、好きなことを行うことができます。
コード
- アニメーション
アニメーション Arduino
//このコードは、LEDの最も簡単なアニメーションを表しますCUBEint temp =50、cont =0; //この関数は、すべてのcubevoid load_all(void){//レイヤー1 digitalWrite(A2、LOW);をロードします。 digitalWrite(A1、LOW); digitalWrite(A0、LOW); delay(1); //レイヤー2digitalWrite(A2、HIGH); digitalWrite(A1、LOW); digitalWrite(A0、LOW); delay(1); //レイヤー3digitalWrite(A2、LOW); digitalWrite(A1、HIGH); digitalWrite(A0、LOW); delay(1); //レイヤー4digitalWrite(A2、HIGH); digitalWrite(A1、HIGH); digitalWrite(A0、LOW); delay(1); //レイヤー5digitalWrite(A2、LOW); digitalWrite(A1、LOW); digitalWrite(A0、HIGH); delay(1); //レイヤー6digitalWrite(A2、HIGH); digitalWrite(A1、LOW); digitalWrite(A0、HIGH); delay(1); //レイヤー7digitalWrite(A2、LOW); digitalWrite(A1、HIGH); digitalWrite(A0、HIGH); delay(1); //レイヤー8digitalWrite(A2、HIGH); digitalWrite(A1、HIGH); digitalWrite(A0、HIGH); delay(1);} //この関数は各レイヤーを1回アクティブにし、レイヤーがオンになる時間を決定できますvoid scrolling(int t){PORTB =0x00; digitalWrite(7、HIGH); delay(t); digitalWrite(7、LOW); digitalWrite(8、HIGH); delay(t); digitalWrite(8、LOW); digitalWrite(9、HIGH); delay(t); digitalWrite(9、LOW); digitalWrite(10、HIGH); delay(t); digitalWrite(10、LOW); digitalWrite(11、HIGH); delay(t); digitalWrite(11、LOW); digitalWrite(12、HIGH); delay(t); digitalWrite(12、LOW); digitalWrite(13、HIGH); delay(t); digitalWrite(13、LOW);} //このアニメーションは、一度に1つのレイヤーをオンにし、速度を上げるため、最終的にすべての立方体がオンになっていることがわかりますvoid one(void){PORTD =0xff; load_all(); while(1){scrolling(temp); temp =temp-2; if(temp <=0){temp =1;続き++; if(cont ==1000){cont =0; temp =100; }}}} void setup(){DDRD =0xff; DDRB =0xff; DDRC =0xff;} void loop(){one();}
カスタムパーツとエンクロージャー
gestione_mankWMoVhz.sch 回路図
コンポーネントの配置には画像を使用します 
製造プロセス