Rainbowduino v3.0
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Rainbowduinoボードは、プロフェッショナルな多重化LEDドライバーを備えたArduino互換のコントローラーボードです。8x8 RGB LEDマトリックスまたは4x4x4 RGB LEDキューブを共通アノードモードで駆動することができます。Rainbowduino v3.0は、12チャンネル(R/G/B x 4)の定電流適応パルス密度変調(APDM)を提供するMY9221チップを2つ使用しています。Rainbowduino v3.0は、I2Cインターフェースを使用してさらに多くのボードをカスケード接続するための準備が整っています。
Rainbowduino v3.0はArduinoブートローダーがフラッシュされており、Arduino IDEを使用してスケッチを簡単にプログラムできます。他のLEDドライバーとは異なり、スケッチをプログラムするためのUSBからUART(FT232RL)が内蔵されています。
Rainbowduino v3.0 底面
特徴
パラメータ | 値 |
---|---|
定電流出力 | 20.8mA |
ピンヘッダー | 2 x 16(多重化LED接続用) |
最大LED駆動能力 | 192(例:8x8x3) |
対応LEDディスプレイ | 4x4x4 RGBキューブ & 8x8 RGB LEDマトリックス |
USBからUART | FT232RL |
DC電源 | USB給電または外部6V~12V DC |
内蔵電圧レギュレーター | 5V / 1A |
応用アイデア
- 汎用LEDドライバー
- 4x4x4 RGBキューブを接続
- 8x8 RGBマトリックスを接続
- 複数のRainbowduino v3.0を連結してLED看板を作成
使用方法
ハードウェアセットアップ
Rainbowduino v3.0をプログラムする際は、スライドスイッチを常にUSB位置に設定してください。スライドスイッチをHOST位置に設定すると、オンボードのFT232がUartSBeeとして動作します(この機能はRainbowduino v3.0の通常操作には必要ありません)。
LEDマトリックスへの接続は非常に簡単です。
- RGB LEDマトリックスの接続 RGBマトリックスの2x16オスピンヘッダーを以下のようにRainbowduinoに接続します(RGBマトリックスの背面を確認し、「2088RGB」テキストマークに近い16オスピンヘッダーをRainbowduinoのDRIVE - GREEN - DRIVEピンヘッダーに接続してください)。
Rainbowduino v3.0が8x8 RGB LEDマトリックスに接続された状態
または
- RGB LEDキューブの接続 Rainbow Cube Kitの2x16オスピンヘッダーを以下のようにRainbowduinoに接続します。
2x16ピンヘッダーの位置
RainbowduinoがRainbow Cube Kitに正しく接続された状態
- プログラム用にRainbowduinoにUSBケーブルを接続します。
ソフトウェアセットアップ
- Arduino IDE --> ツール --> ボードメニューで「DuemilanoveまたはDiecimila」を選択します。
- リソースセクションからRainbouduino 3.0ライブラリをダウンロードしてインストールします。
プログラミング
RGB LEDキューブでの使用
RGB LEDキューブを使用した簡単な例から始めましょう:
- リソースからRainbowduino v3.0ライブラリをダウンロードします。
- Cube1.inoスケッチを開きます(そのコピーを以下に再現しています)。
- スケッチをコンパイルしてアップロードします。そのコピーを以下に再現しています:
/*
Rainbowduino v3.0 Library examples: Cube1
Sets pixels on 3D plane (4x4x4 cube)
*/
#include <Rainbowduino.h>
void setup()
{
Rb.init(); //Rainbowduinoドライバーを初期化
}
void loop()
{
// (Z,X,Y):(0,0,0) ピクセルをBLUEに設定
Rb.setPixelZXY(0,0,0,0x0000FF); //24ビットRGBカラーコードを使用
// (Z,X,Y):(0,3,0) ピクセルをREDに設定
Rb.setPixelZXY(0,3,0,0xFF,0,0); //R, G, Bカラーのバイトを使用
// (Z,X,Y):(3,0,3) ピクセルをGREENに設定
Rb.setPixelZXY(3,0,3,0x00FF00); //24ビットRGBカラーコードを使用
}
出力:
Cube1.pdeデモ
Rainbowduino v3.0ライブラリはRGB LEDキューブを使用するための多くのAPIを提供しています。以下のセクションではそれらをリストアップし説明します:
API | 説明 |
---|---|
Rb.init(void) | Rainbowduinoドライバーを初期化します。これはsetup()内に配置する必要があります。 |
Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, unsigned char colorR, unsigned char colorG, unsigned char colorB) | 各チャンネル(カラー)を8ビット数で指定してピクセル(z,x,y)を設定します。 |
Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, uint32_t colorRGB) | 24ビットRGBカラーコードを指定してピクセル(z,x,y)を設定します。 |
Rb.blankDisplay(void) | すべてのLEDを消灯するために使用される関数です。 |
setPixelZXY() デモ
- (Z,X,Y) ピクセルアドレス指定を理解するために、別の例を見てみましょう。このデモでは、レイヤー 0 (Z-0) が緑色に塗られ、レイヤー 3 が青色に塗られます。
/*
Rainbowduino v3.0 ライブラリ例: Cube2
3D 平面 (4x4x4 キューブ) 上のピクセルを設定
*/
#include <Rainbowduino.h>
void setup()
{
Rb.init(); // Rainbowduino ドライバを初期化
}
unsigned int z,x,y;
void loop()
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
// レイヤー 0 を緑色に塗る
Rb.setPixelZXY(0,x,y,0x00FF00); // 24ビット RGB カラーコードを使用
}
}
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
// レイヤー 3 を青色に塗る
Rb.setPixelZXY(3,x,y,0x0000FF); // 24ビット RGB カラーコードを使用
}
}
}
出力:
Cube2.pde デモ
setPixelZXY() ランダムカラー デモ
- このデモでは、すべての LED がランダムな色で塗られます。5秒の遅延後、キューブ全体が再びランダムな色で塗り直されます。
/*
Rainbowduino v3.0 ライブラリ例: Cube3
3D 平面 (4x4x4 キューブ) 上のピクセルを設定
*/
#include <Rainbowduino.h>
void setup()
{
Rb.init(); // Rainbowduino ドライバを初期化
}
unsigned int z,x,y;
void loop()
{
for(z=0;z<4;z++)
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
// ランダムな色で塗る
Rb.setPixelZXY(z,x,y,random(0xFF),random(0xFF),random(0xFF)); // R, G, B カラーバイトを使用
}
}
}
delay(5000);
Rb.blankDisplay(); // LED をクリア (すべてを空白にする)
}
出力:
Cube3.pde デモ
ナイトランプ / ムードランプ デモ
/*
Rainbowduino v3.0 ライブラリ例: ムードランプ
*/
#include <Rainbowduino.h>
// HSV から RGB 配列への変換
unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
void setup()
{
Rb.init(); // Rainbowduino ドライバを初期化
}
unsigned int z,x,y;
void loop()
{
for(z=0; z<64 ;z++)
{
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
// ランダムな色で塗る
//Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); // R, G, B カラーバイトを使用
Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); // R, G, B カラーバイトを使用
}
}
delay(100);
}
for(z=63; z > 0 ;z--)
{
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
// ランダムな色で塗る
//Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); // R, G, B カラーバイトを使用
Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); // R, G, B カラーバイトを使用
}
}
delay(100);
}
}
プラズマキューブ
/*
Rainbowduino v3.0 ライブラリ例: 3D プラズマ
*/
#include <Rainbowduino.h>
// HSV から RGB 配列への変換
unsigned char RED[64] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
unsigned char GREEN[64] = {0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
unsigned char BLUE[64] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
unsigned char plasma[4][4][4];
void setup()
{
Rb.init(); // Rainbowduino ドライバを初期化
for(unsigned char x = 0; x < 4; x++)
{
for(unsigned char y = 0; y < 4; y++)
{
for(unsigned char z = 0; z < 4; z++)
{
int color = int(32.0 + (32.0 * sin(x / 1.0))+ 32.0 + (32.0 * sin(y / 1.0)) + 32.0 + (32.0 * sin(z / 1.0))) / 3;
plasma[x][y][z] = color;
}
}
}
}
unsigned char x,y,z,colorshift=0;
void loop()
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
for(z=0;z<4;z++)
{
Rb.setPixelZXY(z,x,y,(RED[plasma[x][y][z] + colorshift]) % 256,(GREEN[plasma[x][y][z] + colorshift]) % 256,(BLUE[plasma[x][y][z] + colorshift]) % 256); // R, G, B カラーバイトを使用
}
}
}
delay(100);
colorshift= colorshift + 1;
}
出力:
PlasmaCube.pde デモ
RGB LED マトリックスでの使用
Rainbowduino v3.0 ライブラリは、RGB LED マトリックスを使用するための多くの API を提供します。以下のセクションでは、それらをリストアップし説明します:
API | 説明 |
---|---|
Rb.init(void) | Rainbowduino ドライバを初期化します。setup() 内に配置する必要があります。 |
Rb.setPixelXY(unsigned char x, unsigned char y, unsigned char colorR, unsigned char colorG, unsigned char colorB) | 各チャンネル (色) を 8ビット数値で指定してピクセル (x,y) を設定します。 |
Rb.setPixelXY(unsigned char x, unsigned char y, uint32_t colorRGB) | 24ビット RGB カラーコードを指定してピクセル (x,y) を設定します。 |
Rb.blankDisplay(void) | すべての LED を空白にするために使用されます。 |
Rb.drawChar(unsigned char ascii, unsigned int poX, unsigned int poY, uint32_t colorRGB) | (poX,poY) に uint32_t カラーの ASCII 文字を描画します。 |
Rb.drawCircle(int poX, int poY, int r, uint32_t color) | (poX,poY) に半径 r の uint32_t カラーの円を描画します。 |
Rb.fillCircle(int poX, int poY, int r, uint32_t color) | (poX,poY) に半径 r の塗りつぶし uint32_t カラーの円を描画します。 |
Rb.drawLine(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1, uint32_t color) | (x0,y0) から (x1,y1) までの線を描画します。 |
Rb.drawVerticalLine(unsigned int poX, unsigned int poY,unsigned int length, uint32_t color) | (poX,poY) から長さピクセルの水平線を描画します。 |
Rb.drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width, uint32_t color) | (poX,poY) から長さと幅ピクセルの矩形線を描画します。 |
Rb.fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, uint32_t color) | (poX,poY) から長さと幅ピクセルの塗りつぶし矩形を描画します。 |
Shapes デモ
/*
Rainbowduino v3.0 ライブラリの例:
2D 平面 (8x8 マトリックス) に図形を描画
*/
#include <Rainbowduino.h>
void setup()
{
Rb.init();
}
unsigned char x,y,z;
void loop()
{
Rb.drawCircle(3, 4, 3, 0xFF0000); // (3,4) の位置に半径 3 の赤い円を描画
delay(1000);
Rb.blankDisplay();
Rb.fillCircle(3, 4, 2, 0x0000FF); // (3,4) の位置に半径 2 の青い塗りつぶし円を描画
delay(1000);
Rb.blankDisplay();
Rb.drawLine(0, 0, 7, 7, 0x00FF00); // (0,0) から (7,7) までの線を描画
delay(1000);
Rb.blankDisplay();
Rb.drawVerticalLine(0, 0, 7, random(0xFFFFFF)); // (0,0) から長さ 7 ピクセルの垂直線を描画
delay(1000);
Rb.blankDisplay();
Rb.drawHorizontalLine(0, 0, 7, random(0xFFFFFF)); // (0,0) から長さ 7 ピクセルの水平線を描画
delay(1000);
Rb.blankDisplay();
Rb.drawRectangle(0, 0, 4, 6, random(0xFFFFFF)); // (0,0) から長さ 4、幅 6 ピクセルの矩形を描画
delay(1000);
Rb.blankDisplay();
Rb.fillRectangle(0, 0, 7, 7, random(0xFFFFFF)); // (0,0) から長さと幅が 7 ピクセルの塗りつぶし矩形を描画
delay(1000);
Rb.blankDisplay();
}
出力:
図形
drawChar デモ
/*
Rainbowduino v3.0 ライブラリの例:
2D 平面 (8x8 マトリックス) に文字を描画
*/
#include <Rainbowduino.h>
void setup()
{
Rb.init();
}
unsigned char x,y,z;
void loop()
{
for(int i= 0x20; i<=0x7E; i++) // すべての印刷可能な文字の ASCII 値を生成
{
Rb.drawChar(i,0,1,random(0xFFFFFF));
delay(500);
Rb.blankDisplay();
}
}
出力:
回路図オンラインビューア
リソース
- Arduino IDE 1.0 以上用 Rainbowduino V3.0 ライブラリ
- Arduino 1.0 用 Rainbowduino3.0 SnakeGame ライブラリ
- Eagle フォーマットの Rainbowduino V3.0 回路図とレイアウト
- PDF フォーマットの Rainbowduino V3.0 回路図
- MY9221 LED ドライバ データシート
その他関連製品、リソース、プロジェクト:
技術サポートと製品ディスカッション
弊社の製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートをご提供しております。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルをご用意しています。