LEDマトリックス ディスプレイ にはさまざまな形やサイズがあり、さまざまな技術を利用して構築されています。ここで説明されているチャーリープレキシング は、興味深いテクニックの1つです。また、高性能ディスプレイの場合、単純なRGB LEDライト のグリッドでも十分な効果が得られます。もう1つの手法は、アドレス指定可能なLEDを行と列に順番に配置してグリッドを作成することです。
Arduino LEDマトリックス
ここでの欠点は、データを1つのLEDから別のLEDに渡す必要があり、チェーンが拡張するにつれて追加の電源ラインを配線する必要がある場合があることです。シンプルさ、あるいは純粋なパフォーマンスの点では、この構成に勝るものはありません。これにより、 Arduino Uno などのボードで、単一の出力で数百個のマルチカラーRGB LEDを制御できるようになります。
LEDストリップ マトリックス & LEDマトリックス電源
アドレス指定可能なLEDを使用したことがある場合、おそらく最初に WS2812B LED をストリップ状に配置していたはずです。入力データは最初のLEDに送信され、最初のLEDはこの情報 (自身のデータは除く) をチェーン内の2番目のライトに渡し、次に3番目のライトに渡し、というように最後のライトに到達するまで続きます。これらのストリップを前後に蛇行するように配置すると、任意の2D画像を表示するようにプログラムできる2D RGB LEDマトリックスが作成されます。
このタイプのLEDマトリックスをプログラムする前に、十分な電源が必要です。それ自体は特に電力を消費するわけではありませんが、個々のRGB LEDはそれぞれ最大60mAを消費することがあります。8x8マトリックスの場合、64個のLED、つまり3.84アンペアとなり、16x16マトリックス/256個のLEDの場合は、驚異的な15.36アンペアとなります。実際には、R、G、BチャネルのすべてのLEDが最大輝度で点灯することはまれです。AdafruitのNeoPixel Überguideによれば、超高輝度操作を計画していない限り、経験則として、この理論上の最大値の1/3を使用できます。この実験では、 Adafruit 1466 5V、4A電源、十分な電力を供給します 私が使用している8x8パネル最も明るいシナリオでも。
下図のように、DOUTピンの隣にある5VとGNDピンを介してシステムに5V電源を接続し、パネルと Arduinoボード DINピンの隣にある5VピンとGNDピンを介して。データはArduinoからDINピンに送られ、DOUTピンはデータをさらに別のマトリックスに渡すことができます。電源入力はDINとDOUTに関して逆になっているように見えるかもしれませんが、重要なことは、データが正しい方向に「流れる」ようにし、5VとGNDを逆にしないことです。
このように接続すると、プログラムが完了したら USBケーブル を取り外すことができます。安定した電力を供給するために、通常はDINと制御Arduinoの間に300 ~ 500オームの 抵抗器 を使用し、入力に1000µF以上の コンデンサ を使用することが推奨されます。画像ではこれらが見えない可能性もありますが、おそらくそうしておくとよいでしょう。
ArduinoピクセルLEDコントローラー
Arduino IDEのライブラリ マネージャー経由でインストールできるAdafruit_NeoPixelライブラリのstrandtestサンプルを使用して、このようなマトリックスでこれをテストできます。GitHubでも入手可能です。Arduino Uno を使用すると、ほとんど変更せずに動作します。LED_PINの値をマトリックスの制御に使用する出力に変更し、LED_COUNTをLEDの合計数に変更するだけです。ここで使用している8x8ストリップの場合、64個のLEDを意味します。制御にはArduinoピン2を使用することを選択しました。読み込まれると、パネル上でさまざまな色が動いて、パネルが正常であることを示す美しい表示が表示されます。
パターン的には、LEDパネルはさまざまな形状をとることができる。
ここから、0,0「ピクセル」方向を含むパネルのレイアウト方法、ストリップが「ジグザグ」パターンで前後に蛇行しているかどうか、またはLEDが常に一方から他方へ進む「プログレッシブ」方向であるかどうかを把握する必要があります。LEDが行として配置されているか列として配置されているかにも注意する必要があります。
何かをゼロから作った場合は、これらの答えがわかるでしょうし、購入したパネルにはそのような情報が文書化されているはずです。また、NeoPixelライブラリの「シンプルな」例を変更して、特定のピクセルに値を入力してこれを判断することもできます。以下の画像とコード スニペットに示すように、左上のLED 0を赤に、右上のピクセル7を緑に、右下隅のピクセル63を青に設定しました。
Arduino LED制御ライブラリ: カスタマイズされたライブラリの使用
どのピクセルがどこに配置されるかを計算するのはそれほど難しくありませんが、図形、パターン、さらにはテキストを描画する場合、必要な変換を行うことはすぐに困難になります。幸いなことに、そうする必要はありません。Adafruitは、NeoPixelライブラリを基盤として2Dパターンで配置されたアドレス指定可能なLEDの使用をはるかに容易にするNeoMatrixライブラリも作成しました。
これは、Arduino IDEのライブラリ マネージャーで Adafruit NeoMatrix を検索して見つけ、インストールできます。また、NeoPixelライブラリと、LCDおよびOLEDディスプレイにも使用される Adafruit GFX もインストールする必要があります。NeoMatrixライブラリはGFXライブラリと同じ座標系と描画関数を使用するため、GFXライブラリの使用に慣れている場合は非常に便利です。
このライブラリには、単一のマトリックスであるmatrixtextの例と、多数のタイルを並べて積み重ねて使用できるtiletestという別の例の両方が含まれています。上記のコードは、tiletestの例からの抜粋であり、その上の行で説明されているさまざまなパラメータ (実際のコードではさらに多くのパラメータ) を使用してマトリックス オブジェクトをインスタンス化します。57行目はタイルの配置について説明し、58行目はマトリックス自体のLEDの配置に焦点を当てています。
(単一の) matrixtestの例では、行57のパラメーターと、使用されるマトリックスの数 (1つだけ) を示す数字が省略されています。私の場合、マトリックスは最初のピクセルが左上隅に配置され、行に整理されていたため、これらのパラメーターは問題なく機能しました。最後のパラメータをNEO_MATRIX_ZIGZAGからNEO_MATRIX_PROGRESSIVEに変更し、幅の値を5から8に切り替える必要がありました。
「ハウディ」の始まり
次に、忠実に「Howdy」というテキストを画面全体にスクロールしました。テキストは簡単に好きなように変更できます。3番目の例は、ライブラリのその他の多くの機能を紹介するMatrixGFXDemoです。
さらに進む: ビットマップLEDマトリックスとその他のLEDマトリックス プロジェクト
ドットと線の生成が完了したら、ビットマップ画像の操作に進むことができます。確かに可能ですが、一般的にはもう少し手間がかかり、Arduino Unoよりも強力なハードウェアが必要になる可能性があります。LED制御のもう1つの優れたオプションは、 FastLEDライブラリ です。また、ESP8266またはESP32を使用してLEDを動的に制御するためのWLEDもチェックしてみてください。
LEDマトリックスをどのように制御して使用するかに関わらず、プロジェクトに豊富な色彩を加えることが保証されます。可能性は無限大です!