12x8 LED Matrix¶
アルドゥイーノUNO R4 WiFiには、組み込みの12x8 LEDマトリクスが付属しており、さまざまなグラフィックやアニメーションを表示したり、インターフェースとして機能したり、ゲーム体験をサポートしたりするようプログラムできます。
このガイドでは、LEDマトリクス上に所望のパターンを表示するのを助けるための簡単な例を提供します。
アルドゥイーノでLEDマトリクスデータを保存する方法¶
LEDマトリクスを使用するには、Renesasコアと一緒にインストールされる Arduino_LED_Matrix
ライブラリが必要です。
UNO R4 WiFiのLEDマトリクスライブラリは、フレームを作成し、それらを表示するためのバッファにロードすることによって動作します。フレームは通常「画像」とも呼ばれ、マトリクス上に現在表示されている内容を表します。複数の画像から成るアニメーションでは、各画像がフレームと見なされます。
UNO R4 WiFiの12x8 LEDマトリクスを制御するために、少なくとも96ビットのメモリスペースが必要です。ライブラリはこのために2つのアプローチを提供しています。
1つのアプローチは、2次元配列を使用 し、対応するLEDがオフまたはオンかを示す0と1を使用します。各数字はLEDマトリクス上のLEDに対応します。次の配列はハート形のパターンを示しています。
// Use a two-dimensional array to represent a 12x8 LED matrix.
byte frame[8][12] = {
{ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
{ 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
{ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
別のアプローチは、32ビット整数の配列を使用 してLEDマトリクスの状態を保持します。この方法はよりコンパクトですが、やや複雑です。各 unsigned long
は32ビットを格納します。したがって、96個のLEDを含む12x8 LEDマトリクスの場合、少なくとも3つの unsigned long
変数が必要です。
各
unsigned long
は32ビットを含み、これらのビットはLEDマトリクス内の特定の部分の状態を表すと考えることができます。これらの
unsigned long
変数は、完全なLEDマトリクスの状態をカプセル化する配列を形成します。
以下は、12x8 LEDマトリクスを表すために3つの unsigned long
変数を使用するコードスニペットです。
// Use an array of 32-bit integers to store the LED matrix.
unsigned long frame[] = {
0x3184a444, // State of the first 32 LEDs
0x42081100, // State of the next 32 LEDs
0xa0040000 // State of the last 32 LEDs
};
LEDの状態をより視覚化するために、これらの値をバイナリ形式に変換することができます。各ビットは、左から右へ、上から下へと順番に各LEDの状態を示します。0はオフ、1はオンを示します。
0x3184a444 -> 110001100001001010010001000100
0x42081100 -> 1000010000010000001000100000000
0xa0040000 -> 10100000000001000000000000000000
LEDマトリクスにパターンを表示する¶
パターンが準備できたら、次のステップはこれらのデータを12x8 LEDマトリクスに送信することです。通常、これにはライブラリ関数を呼び出し、LEDの状態を含む配列または変数をこれらの関数に渡すことが含まれます。
2次元配列を使用する
2D配列に格納されたパターンを表示するには、次のコードを使用できます:
#include <Arduino_LED_Matrix.h> ArduinoLEDMatrix matrix; // Pre-defined 2D array byte frame[8][12] = { { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; void setup() { // Initialize LED matrix matrix.begin(); } void loop() { // Display pattern on the LED matrix matrix.renderBitmap(frame, 8, 12); delay(1000); }
このコードでは、
matrix.renderBitmap(frame, 8, 12);
関数を使用してLEDマトリクスを表示します。ここでは、8と12はそれぞれLEDマトリクスの行と列を表します。32ビット整数の配列を使用
unsigned long
配列に格納されたパターンを表示するには、次のコードを使用します:#include "Arduino_LED_Matrix.h" ArduinoLEDMatrix matrix; void setup() { matrix.begin(); } const uint32_t heart[] = { 0x3184a444, 0x44042081, 0x100a0040 }; void loop(){ matrix.loadFrame(heart); delay(500); }
この場合、LEDマトリクス上にパターンを表示するために
matrix.loadFrame(heart)
関数を使用する必要があります。
Arduino LED Matrix Editor¶
LEDマトリクスの状態を格納するために unsigned long
配列を使用することをお勧めします。これにより、Arduinoのメモリを節約できます。この方法は直感的でないかもしれませんが、 unsigned long
配列を生成するのに役立つ Arduino LED Matrix Editor を使用することができます。
Arduino LED Matrix Editor と Arduino_LED_Matrix
ライブラリを使用すると、アイコンやアニメーションを簡単に作成してUNO R4 WiFiボード上に表示できます。描画し、 .h
ファイルをダウンロードし、スケッチ内で matrix.play()
関数を呼び出すだけで、次のプロジェクトを簡単に構築できます。
アニメーションの表示¶
前のステップで、フレームとその持続時間を含む .h
ファイルを取得しました。次に、それらをLEDマトリクス上に表示しましょう。
まず、スケッチを作成します。パス
elite-explorer-kit-main\r4_new_feature\04-led_matrix
の下にある04-led_matrix.ino
ファイルを開くか、このコードを Arduino IDE にコピーできます。コードを
elite-explorer-kit-main\r4_new_feature\04-led_matrix
パスから使用している場合、Arduino IDEにはanimation.h
という名前のタブがあります。これを開き、ウェブサイトから取得した .h ファイルで既存のコードを置き換えます。独自のスケッチを作成した場合、ウェブページから取得した
.h
ファイルをスケッチと同じディレクトリにコピーする必要があります。Arduino IDEで好みのコードを設定し、それをArduino UNO R4 WiFiにアップロードすると、LEDマトリクスに定義したパターンが表示されるはずです。
おめでとうございます!Arduino UNO R4 WiFiの12x8 LEDマトリクスを正常にプログラムしました!
参照
その他のプロジェクト
ゲーム - スネーク (楽しいプロジェクト)