Passo a passo para configurar o código de comunicação com Arduino e Vixen Lights para controlar 4 Fitas de LED RGB.
Código abaixo:
//==========================> Definição dos pinos e nomes das variáveis
// LED RGB 01
int LedVermelho1 = 2;
int LedVerde1 = 3;
int LedAzul1 = 4;
// LED RGB 02
int LedVermelho2 = 5;
int LedVerde2 = 6;
int LedAzul2 = 7;
// LED RGB 03
int LedVermelho3 = 8;
int LedVerde3 = 9;
int LedAzul3 = 10;
// LED RGB 04
int LedVermelho4 = 11;
int LedVerde4 = 12;
int LedAzul4 = 13;
int i = 0;
int incomingByte[12]; // Array para armazenar os 12 valores RGB
void setup() {
//==========================> Velocidade da comunicação Serial
Serial.begin(9600);
//==========================> Definir os pinos como saída
// LED RGB 01
pinMode(LedVermelho1, OUTPUT);
pinMode(LedVerde1, OUTPUT);
pinMode(LedAzul1, OUTPUT);
// LED RGB 02
pinMode(LedVermelho2, OUTPUT);
pinMode(LedVerde2, OUTPUT);
pinMode(LedAzul2, OUTPUT);
// LED RGB 03
pinMode(LedVermelho3, OUTPUT);
pinMode(LedVerde3, OUTPUT);
pinMode(LedAzul3, OUTPUT);
// LED RGB 04
pinMode(LedVermelho4, OUTPUT);
pinMode(LedVerde4, OUTPUT);
pinMode(LedAzul4, OUTPUT);
}
void loop() {
// Verifica se há 12 bytes disponíveis na comunicação serial
if (Serial.available() >= 12) {
// Ler os 12 valores RGB e armazená-los no array incomingByte[]
for (int i = 0; i < 12; i++) {
incomingByte[i] = Serial.read();
}
// LED RGB 01
analogWrite(LedVermelho1, incomingByte[0]); // Pino 2
analogWrite(LedVerde1, incomingByte[1]); // Pino 3
analogWrite(LedAzul1, incomingByte[2]); // Pino 4
// LED RGB 02
analogWrite(LedVermelho2, incomingByte[3]); // Pino 5
analogWrite(LedVerde2, incomingByte[4]); // Pino 6
analogWrite(LedAzul2, incomingByte[5]); // Pino 7
// LED RGB 03
analogWrite(LedVermelho3, incomingByte[6]); // Pino 8
analogWrite(LedVerde3, incomingByte[7]); // Pino 9
analogWrite(LedAzul3, incomingByte[8]); // Pino 10
// LED RGB 04
analogWrite(LedVermelho4, incomingByte[9]); // Pino 11
analogWrite(LedVerde4, incomingByte[10]); // Pino 12
analogWrite(LedAzul4, incomingByte[11]); // Pino 13
}
}
Download do código para 4 Fitas de LED RGB:
📂 Código Arduino Para Controle de 4 Fitas de LED RGB com Vixen Lights
Passo 1: Definição dos pinos e variáveis
No início do código, são definidos os pinos do Arduino aos quais as fitas de LED RGB estão conectadas, além de um array para armazenar os valores RGB que serão recebidos.
Código:
// LED RGB 01
int LedVermelho1 = 2;
int LedVerde1 = 3;
int LedAzul1 = 4;
// LED RGB 02
int LedVermelho2 = 5;
int LedVerde2 = 6;
int LedAzul2 = 7;
// LED RGB 03
int LedVermelho3 = 8;
int LedVerde3 = 9;
int LedAzul3 = 10;
// LED RGB 04
int LedVermelho4 = 11;
int LedVerde4 = 12;
int LedAzul4 = 13;
int i = 0;
int incomingByte[12]; // Array para armazenar os 12 valores RGB
LED RGB 01: Os LEDs estão conectados nos pinos 2, 3 e 4 do Arduino, onde o pino 2 controla o vermelho, o pino 3 o verde e o pino 4 o azul da fita 1.
LED RGB 02: Similarmente, os LEDs da fita 2 estão nos pinos 5, 6 e 7.
LED RGB 03: Os LEDs da fita 3 estão nos pinos 8, 9 e 10.
LED RGB 04: E os LEDs da fita 4 nos pinos 11, 12 e 13.
O array incomingByte[12] vai armazenar os valores RGB recebidos da comunicação serial, onde cada grupo de 3 bytes corresponde a uma fita de LED.
Passo 2: Configuração inicial no setup()
Código:
void setup() {
//==========================> Velocidade da comunicação Serial
Serial.begin(9600);
//==========================> Definir os pinos como saída
// LED RGB 01
pinMode(LedVermelho1, OUTPUT);
pinMode(LedVerde1, OUTPUT);
pinMode(LedAzul1, OUTPUT);
// LED RGB 02
pinMode(LedVermelho2, OUTPUT);
pinMode(LedVerde2, OUTPUT);
pinMode(LedAzul2, OUTPUT);
// LED RGB 03
pinMode(LedVermelho3, OUTPUT);
pinMode(LedVerde3, OUTPUT);
pinMode(LedAzul3, OUTPUT);
// LED RGB 04
pinMode(LedVermelho4, OUTPUT);
pinMode(LedVerde4, OUTPUT);
pinMode(LedAzul4, OUTPUT);
}
Serial.begin(9600); : Inicia a comunicação serial entre o Arduino e o computador (ou outro dispositivo), com uma taxa de transmissão de 9600 bauds.
pinMode() : Cada pino que controla um LED é configurado como OUTPUT, ou seja, o Arduino irá enviar sinais para esses pinos. Isso é feito para todos os LEDs RGB das 4 fitas (um pino para cada cor de cada fita).
Passo 3: Função loop()
A função loop() é executada repetidamente, e nela o código verifica se há dados disponíveis na comunicação serial. Quando os dados são recebidos, o código lê esses dados e ajusta as cores dos LEDs.
Código:
void loop() {
// Verifica se há 12 bytes disponíveis na comunicação serial
if (Serial.available() >= 12) {
// Ler os 12 valores RGB e armazená-los no array incomingByte[]
for (int i = 0; i < 12; i++) {
incomingByte[i] = Serial.read();
}
// LED RGB 01
analogWrite(LedVermelho1, incomingByte[0]); // Pino 2
analogWrite(LedVerde1, incomingByte[1]); // Pino 3
analogWrite(LedAzul1, incomingByte[2]); // Pino 4
// LED RGB 02
analogWrite(LedVermelho2, incomingByte[3]); // Pino 5
analogWrite(LedVerde2, incomingByte[4]); // Pino 6
analogWrite(LedAzul2, incomingByte[5]); // Pino 7
// LED RGB 03
analogWrite(LedVermelho3, incomingByte[6]); // Pino 8
analogWrite(LedVerde3, incomingByte[7]); // Pino 9
analogWrite(LedAzul3, incomingByte[8]); // Pino 10
// LED RGB 04
analogWrite(LedVermelho4, incomingByte[9]); // Pino 11
analogWrite(LedVerde4, incomingByte[10]); // Pino 12
analogWrite(LedAzul4, incomingByte[11]); // Pino 13
}
}
Funções dentro do loop() :
Serial.available() >= 12 : Verifica se há pelo menos 12 bytes disponíveis para leitura na comunicação serial. Isso é necessário porque cada fita de LED precisa de 3 valores (um para cada cor: vermelho, verde e azul), totalizando 12 bytes para controlar as 4 fitas de LED RGB.
for (int i = 0; i < 12; i++) { incomingByte[i] = Serial.read(); } : Se houver 12 bytes disponíveis, o código entra em um laço que lê cada byte da comunicação serial e armazena no array incomingByte. Cada índice do array corresponde ao valor de intensidade de uma cor para uma fita de LED:
incomingByte[0] , incomingByte[1], incomingByte[2] são os valores RGB para o LED RGB 01.
incomingByte[3], incomingByte[4], incomingByte[5] são os valores RGB para o LED RGB 02.
incomingByte[6], incomingByte[7], incomingByte[8] são os valores RGB para o LED RGB 03.
incomingByte[9], incomingByte[10], incomingByte[11] são os valores RGB para o LED RGB 04.
analogWrite(pino, valor); : Para cada fita de LED, a função analogWrite() é usada para enviar um valor PWM (Pulse Width Modulation) ou (Modulação de Largura de Pulso) para os pinos correspondentes. O valor de cada cor (vermelho, verde e azul) é ajustado conforme o valor recebido pela comunicação serial:
Para a fita 1, o LedVermelho1 recebe incomingByte[0], o LedVerde1 recebe incomingByte[1] e o LedAzul1 recebe incomingByte[2], e assim por diante para as outras fitas.
Resumo
Objetivo: Controlar 4 fitas de LED RGB (totalizando 12 pinos) com um Arduino. A cor de cada fita é controlada por 3 valores (RGB), e esses valores são recebidos via comunicação serial.
Como funciona:
A comunicação serial é configurada a 9600 bauds.
O Arduino espera que 12 bytes sejam recebidos via serial (representando os valores RGB para 4 fitas).
Cada conjunto de 3 bytes é enviado para os pinos correspondentes de cada fita de LED RGB, controlando a intensidade de cada cor (vermelho, verde e azul).
Concluído com sucesso!
Acesse o próximo tópico abaixo para continuar com o processo.
📌 Adicionar Fita de LED RGB no Vixen Lights para controlar com Arduino
Tópicos relacionados:
📌 Código Sequencial para Fitas de LED RGB com Arduino - 4 Canais RGB
📌 Esquema de Ligação de Fita de LED RGB no Arduino