ダイナミックトライアングルアート
コンポーネントと消耗品
| × | 45 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
| ||||
|
このプロジェクトについて
はじめに
このプロジェクトでは、ArduinoUNOによって制御される45個のAPA-106プログラマブルLEDを使用します。これらのLEDは、個別にプログラム可能なLEDストリップに似ているため、AdafruitのNeo-pixelライブラリを使用してそれらを制御しています。単一のデータラインがチェーン内のすべてのLEDに接続されるため、UNOの単一のピンがディスプレイ全体をプログラムします。
このデザインのインスピレーションは、私の以前の2つのプロジェクトでした。私の2番目の5x5x5RGBキューブ(別の5x5x5 RGBキューブ)はAPA-106プログラマブルLEDを使用し、約75個の追加部品が残っていました。それらから4x4x4の立方体を構築することもできましたが、最近はたくさんの立方体を構築しました。私のサーボモーターアートプロジェクトは三角形として構築され、その三角形のデザインは多くの興味深いパターンを作成しました。そのため、このプロジェクトでは、三角形のパターンに配置された45個のAPA-106 LEDを使用して、三角形のアートをさらに探求します。
<図>これは、ハードウェアとソフトウェアの両方の観点から、かなり簡単なプロジェクトです。最初にハードウェアを見て、次にソフトウェアを見てみましょう。
ハードウェア
ハードウェアは、UNOと45個のLEDのみで構成されています。これらのLEDはフルパワーでめちゃくちゃ明るいので、ディスプレイ全体の明るさを0から255のスケールで30に設定しています。そのレベルでは、UNOとすべてのLEDはUNOのUSB入力から直接電力を供給できるため、1アンペアから5ボルトの電源装置はオプションです。
<図>建設の最初のステップは、1/4インチの合板に穴を開けることです。ボード自体は、各エッジで12インチです。 LEDは、慎重に構築された正三角形で1インチ間隔で配置されています。 LEDは8mmなので、8 mmの穴を開けて、LEDをぴったりとフィットさせました。押し込んだ後は、まったく動かなかったのです。
<図>左上はAPA-106LEDです。長いリード線は研磨されています。データ出力は、パッケージの平らな端の隣の右側のリードです。左側の最初のリード線はデータ入力であり、データ入力とグランドの間の次のリード線は+ 5Vです。これらの4本のリード線は右図のように曲がっています。アース線には、最後に2番目の曲がりがあります。すべて曲がった後は、アース線を確認するのが難しいため、その目的はアース線を識別することだけです。
<図>上の画像は、ボードの配線方法を示しています。まず、LEDがチェーンされているため、青色のデータラインが前後に移動していることに注意してください。つまり、奇数行ではデータが左から右に流れ、偶数行ではデータが右から左に流れます。これにより、奇数行と偶数行で電源レールが異なります。奇数列の場合、グランドリードが上がり、+ 5vリードが下がり、偶数列の場合は逆になります。
<図>上の写真は配線を示しています。それはすべて22ゲージの裸の錫メッキされた銅線で行われます。左側にアースレール、右側に+ 5Vレールを集めました。正反対のことをする必要があります。ボード上のすべてのデータライン接続は電源レールを経由する必要がありましたが、アースを右に、+ 5vを左に切り替えると、データラインは何も交差する必要がなくなります!
<図>上は配線の拡大図です。右側のデータラインが5ボルトの電源レールの上部と交差していることに注目してください。
<図>上の写真は完成したボードを示しています。私はUNOのスタンドオフとしていくつかの小さなプラスチック片を使用し、少しのホットグルーでUNOをボードに取り付けました。
<図>上の写真はケースの三角形を示しています。これは、ここに含まれている.stlファイルからの3Dプリントです。合板から簡単に作ることもできます。
ソフトウェア
Adafruitのネオピクセルライブラリのおかげで、ソフトウェアは非常に簡単です。これにより、setPixelColor(チェーン内の#、color)を使用して、任意の1つのLEDの色を定義し、show()を使用してディスプレイ全体を最新の変更に更新します。ライブラリは、符号なし32ビット番号を使用してLEDの色を表し、赤、緑、青の強度ごとに8ビットを格納します。私はこのスキームを原色の明るくしたり暗くしたりするために直接使用しましたが、他のすべてには、LEDキューブから借りた独自の単純なカラーマネジメントスキームを使用しました。これは単純なスキームで、1から42までの数字はレインボーカラーパレットを表し、黒(すべてオフ)の場合は0、白(すべてオン)の場合は43を追加します。
上の配線図で、LEDが上部の0から始まり、行ごとに左から右に番号が付けられていることに気付いたかもしれません。これは、私がLEDを識別するために使用した番号付けシステムです。データラインのように行き来しないので、番号の割り当てによってLEDを参照し、0〜43のカラーパレットを使用して色を指定できる独自のバージョンのsetPixelColorを作成しました。
ビデオに表示されるほとんどすべてのアニメーションまたはエフェクトは、テーブル駆動型です。 1つの表は、上隅からスイープする方法を示しています。他の2つの表は、その効果を他の2つのコーナーに変換します。別の表は、外側の三角形、中央、最も内側の三角形のLEDを示しています。これらのさまざまなテーブルはすべて、RAMではなくプログラムメモリに保存されます。私は当初、これらすべてのテーブルが貴重なプログラムスペースを占有しすぎるのではないかと心配していました。しかし、このテーブルアプローチを使用すると、非常に効率的であり、プログラムスペースが問題になることはありませんでした。
プログラムまたはスケッチは、ArduinoIDEで4つのファイルまたはタブに分割されています。 1つ目は、宣言、テーブル、およびセットアップルーチンです。 2つ目は、さまざまなアニメーションのリストを呼び出すだけのメインループです。 3つ目はアニメーションそのものです。 4つ目は、すべてのアニメーションをサポートする汎用関数またはサブルーチンです。
上のビデオでは、15のアニメーションを含む元の番組を見ることができます。繰り返す前に約3分続きます。それ以来、私はショーを拡大して、下のビデオで見ることができるいくつかの新しいアニメーションを含めました。
上記のビデオのすべてのアニメーションは、rotation()と呼ばれる単一のサブルーチンを呼び出すことですべて実行されます。三角形は、24個のLEDの外側の三角形、15個のLEDの中央の三角形、および6個のLEDの内側の三角形で構成されています。これら3つの数値の最小公分母は120です。したがって、120ステップで、三角形全体の内容を360度回転させることができます。これがrotate()ルーチンが行うことです。開始パターンを変更し、回転方向を変更し、回転速度を変更すると、上のビデオに表示されるすべての効果が得られます。
ダウンロードされた番組には、元の番組と上記のすべてのアニメーションが含まれ、繰り返される前に5分間続く26のアニメーションを含む番組が作成されます。
コード
- アートトライアングルのArduinoコード
アートトライアングルのArduinoコード Arduino
これは、テストルーチン、26のアニメーションを含むショー、およびNeo-pixelライブラリの使用手順を含むzipファイルですプレビューなし(ダウンロードのみ)。
カスタムパーツとエンクロージャー
エンクロージャーの.stlファイル 回路図
製造プロセス