Pular para o conteúdo principal

Rainbowduino v3.0

A placa Rainbowduino é uma placa controladora compatível com Arduino com driver LED multiplexado profissional. Ela pode controlar uma matriz de LED RGB 8x8 ou um cubo de LED RGB 4x4x4 em modo ânodo comum. A Rainbowduino v3.0 usa dois chips MY9221, que são um driver de 12 canais (R/G/B x 4) de corrente constante com Modulação de Densidade de Pulso Adaptativa (APDM). A Rainbowduino v3.0 possui recursos para emendar (cascatear) mais placas desse tipo com interface I2C.

A Rainbowduino v3.0 vem gravada com o bootloader do Arduino, o que torna fácil programar sketches usando a IDE do Arduino. Diferente de outros drivers de LED, ela vem com um USB para UART (FT232RL) integrado para programar os sketches.

Parte inferior da Rainbowduino v3.0

Características

ParâmetroValor
Saída de corrente constante20,8 mA
Cabeçalhos de pinos2 x 16 para conectar LEDs multiplexados
Capacidade máxima de LEDs192 (ou seja, 8x8x3)
Mostradores de LED suportadosCubo RGB 4x4x4 e Matriz de LED RGB 8x8
USB para UARTFT232RL
Alimentação CCAlimentado por USB ou 6V~12V CC externa
Regulador de tensão integrado5V / 1A

Ideias de aplicação

  • Driver de LED de uso geral
    • Conectar Cubo RGB 4x4x4
    • Conectar Matriz RGB 8x8
  • Criar painéis de letreiro de LED encadeando mais de uma Rainbowduino v3.0

Uso

Configuração de hardware

nota

Sempre coloque a chave deslizante na posição USB para programar a Rainbowduino v3.0. Colocar a chave deslizante na posição HOST faz com que o FT232 onboard atue como UartSBee (este recurso não é necessário para a operação normal da Rainbowduino v3.0)

A conexão com a matriz de LED é muito simples.

  • Conectando a Matriz de LED RGB Conecte o cabeçalho macho 2x16 da Matriz RGB à Rainbowduino como mostrado abaixo (veja a parte de trás da matriz RGB, o cabeçalho macho de 16 pinos mais próximo da marcação de texto "2088RGB" deve ser conectado ao cabeçalho de pinos DRIVE - GREEN - DRIVE da Rainbowduino.)

Rainbowduino v3.0 conectada à Matriz de LED RGB 8x8

(ou)

  • Conectando o Cubo de LED RGB Conecte o cabeçalho macho 2x16 do Rainbow Cube Kit à Rainbowduino como mostrado abaixo.

Posicionamento do cabeçalho de pinos 2x16

Uma Rainbowduino conectada corretamente ao Rainbow Cube kit

  • Conecte um cabo USB à Rainbowduino para programação.

Configuração de software

  • Na IDE do Arduino --> menu Tools --> Board, selecione "Duemilanove or Diecimila".
  • Baixe e instale a biblioteca Rainbouduino 3.0 a partir da seção de recursos.

Programação

Usando com o Cubo de LED RGB


Vamos começar com um exemplo simples com o Cubo de LED RGB:

  • Baixe a biblioteca Rainbowduino v3.0 a partir dos recursos.
  • Abra o sketch Cube1.ino (uma cópia dele é reproduzida abaixo):
  • Compile e carregue o sketch, cuja cópia é reproduzida abaixo:
/*
Rainbowduino v3.0 Library examples: Cube1

Sets pixels on 3D plane (4x4x4 cube)
*/

#include <Rainbowduino.h>

void setup()
{
Rb.init(); //initialize Rainbowduino driver
}

void loop()
{
//Set (Z,X,Y):(0,0,0) pixel BLUE
Rb.setPixelZXY(0,0,0,0x0000FF); //uses 24bit RGB color Code

//Set (Z,X,Y):(0,3,0) pixel RED
Rb.setPixelZXY(0,3,0,0xFF,0,0); //uses R, G and B color bytes

//Set (Z,X,Y):(3,0,3) pixel GREEN
Rb.setPixelZXY(3,0,3,0x00FF00); //uses 24bit RGB color Code
}

Saída:

Demo Cube1.pde

A biblioteca Rainbowduino v3.0 fornece muitas APIs para usar o cubo de LED RGB. A seção seguinte as lista e descreve:

APIDescrição
Rb.init(void)Inicializa o driver Rainbowduino; isso deve ser colocado dentro de setup()
Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, unsigned char colorR, unsigned char colorG, unsigned char colorB)Define o pixel (z,x,y) especificando cada canal (cor) com um número de 8 bits.
Rb.setPixelZXY(unsigned char z, unsigned char x, unsigned char y, uint32_t colorRGB)Define o pixel (z,x,y) especificando um código de cor RGB de 24 bits.
Rb.blankDisplay(void)Esta função é usada para apagar todos os LEDs.

Demo de setPixelZXY()

  • Para entender o endereçamento de pixels (Z,X,Y), vejamos outro exemplo. Neste demo, a Camada 0 (ou seja, Z-0) é pintada de verde e a Camada 3 é pintada de azul.
/*
Rainbowduino v3.0 Library examples: Cube2

Sets pixels on 3D plane (4x4x4 cube)
*/

#include <Rainbowduino.h>

void setup()
{
Rb.init(); //initialize Rainbowduino driver
}

unsigned int z,x,y;

void loop()
{
for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
//Paint layer 0 Green
Rb.setPixelZXY(0,x,y,0x00FF00); //uses 24bit RGB color Code
}
}

for(x=0;x<4;x++)
{
for(y=0;y<4;y++)
{
//Paint layer 3 Blue
Rb.setPixelZXY(3,x,y,0x0000FF); //uses 24bit RGB color Code
}
}
}

Saída:

Demo Cube2.pde

Demo de Cores Aleatórias com setPixelZXY()

  • Neste demo, todos os LEDs são pintados com alguma cor aleatória. Após cinco segundos de atraso, todo o cubo é repintado com cores aleatórias.
    /*
Rainbowduino v3.0 Library examples: Cube3

Sets pixels on 3D plane (4x4x4 cube)
*/

#include <Rainbowduino.h>

void setup()
{
Rb.init(); //initialize Rainbowduino driver
}

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++)
{
//Paint random colors
Rb.setPixelZXY(z,x,y,random(0xFF),random(0xFF),random(0xFF)); //uses R, G and B color bytes
}
}
}
delay(5000);
Rb.blankDisplay(); //Clear the LEDs (make all blank)
}

Saída:

Demo Cube3.pde

Demo de Abajur Noturno / Luminária de Humor

/*

Rainbowduino v3.0 Library examples : Mood Lamp

*/

#include <Rainbowduino.h>


// HSV to RGB array

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(); //initialize Rainbowduino driver
}

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++)
{
//Paint random colors
//Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
}
}
delay(100);
}

for(z=63; z > 0 ;z--)
{
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
//Paint random colors
//Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
}
}
delay(100);
}

}

Cubo de Plasma

/*

Rainbowduino v3.0 Library examples : 3D Plasma

*/

#include <Rainbowduino.h>

// HSV to RGB array

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(); //initialize Rainbowduino driver

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); //uses R, G and B color bytes
}
}
}
delay(100);
colorshift= colorshift + 1;
}

Saída:

Demonstração PlasmaCube.pde

Usando com matriz de LEDs RGB

A biblioteca Rainbowduino v3.0 fornece muitas APIs para usar a matriz de LEDs RGB. A seção a seguir as lista e descreve:

APIDescrição
Rb.init(void)Inicializa o driver do Rainbowduino, isto deve ser colocado dentro de setup()
Rb.setPixelXY(unsigned char x, unsigned char y, unsigned char colorR, unsigned char colorG, unsigned char colorB)Define o pixel(x,y) especificando cada canal(cor) com um número de 8 bits.
Rb.setPixelXY(unsigned char x, unsigned char y, uint32_t colorRGB)Define o pixel(x,y) especificando um código de cor RGB de 24 bits.
Rb.blankDisplay(void)Esta função é usada para apagar todos os LEDs.
Rb.drawChar(unsigned char ascii, unsigned int poX, unsigned int poY, uint32_t colorRGB)Desenha um caractere ASCII de cor uint32_t em (poX,poY).
Rb.drawCircle(int poX, int poY, int r, uint32_t color)Desenha um círculo de cor uint32_t com raio r em (poX,poY).
Rb.fillCircle(int poX, int poY, int r, uint32_t color)Desenha um círculo preenchido de cor uint32_t com raio r em (poX,poY).
Rb.drawLine(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1, uint32_t color)Desenha uma linha de (x0,y0) até (x1,y1).
Rb.drawVerticalLine(unsigned int poX, unsigned int poY,unsigned int length, uint32_t color)Desenha uma linha horizontal a partir de (poX,poY) com comprimento em pixels.
Rb.drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width, uint32_t color)Desenha o contorno de um retângulo a partir de (poX,poY) com comprimento e largura em pixels.
Rb.fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, uint32_t color)Desenha um retângulo preenchido a partir de (poX,poY) com comprimento e largura em pixels.

Demonstração de formas

    /*
Rainbowduino v3.0 Library examples:

Print Shapes on 2D plane (8x8 matrix)

*/

#include <Rainbowduino.h>

void setup()
{
Rb.init();
}

unsigned char x,y,z;

void loop()
{

Rb.drawCircle(3, 4, 3, 0xFF0000); // draw a red circle of radius 3 at (3,4).
delay(1000);
Rb.blankDisplay();

Rb.fillCircle(3, 4, 2, 0x0000FF); // draw a filled blue circle of radius 2 at (3,4).
delay(1000);
Rb.blankDisplay();

Rb.drawLine(0, 0, 7, 7, 0x00FF00); // draw a line from (0,0) to (7,7).
delay(1000);
Rb.blankDisplay();

Rb.drawVerticalLine(0, 0, 7, random(0xFFFFFF)); // draw a vertical line from (0,0) of length 7 pixels
delay(1000);
Rb.blankDisplay();

Rb.drawHorizontalLine(0, 0, 7, random(0xFFFFFF)); // draw a horizontal line from (0,0) of length 7 pixels
delay(1000);
Rb.blankDisplay();

Rb.drawRectangle(0, 0, 4, 6, random(0xFFFFFF)); // draw a rectangle line from (0,0) of length 4 and width 6 pixels
delay(1000);
Rb.blankDisplay();

Rb.fillRectangle(0, 0, 7, 7, random(0xFFFFFF)); // draw a filled rectangle line from (0,0) of length and width 7 pixels
delay(1000);
Rb.blankDisplay();

}

Saída:

Formas

Demonstração drawChar

    /*
Rainbowduino v3.0 Library examples:

Print Chars on 2D plane (8x8 matrix)

*/

#include <Rainbowduino.h>

void setup()
{
Rb.init();
}

unsigned char x,y,z;

void loop()
{

for(int i= 0x20; i<=0x7E; i++) //generates ASCII value of all printable characters
{
Rb.drawChar(i,0,1,random(0xFFFFFF));
delay(500);
Rb.blankDisplay();
}

}

Saída:

Visualizador de esquemático online

Recursos

Outros produtos, recursos e projetos relacionados:

Suporte técnico e discussão de produtos

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...