Passo a passo para configurar o código de comunicação com Arduino e Vixen Lights para controlar módulo de relés 16 canais.
Nota: O passo a passo menciona 16 canais, mas você pode ajustar a quantidade de canais conforme a necessidade do seu projeto. Lembre-se de que cada modelo de Arduino possui um limite de pinos disponíveis para conexão com os módulos relés, portanto, verifique se a quantidade de canais desejada está dentro desse limite.
Código abaixo:
// Número de canais controlados pelo Vixen Lights (16 relés)
#define NUM_CANAIS 16
// Pinos dos relés
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3};
// Buffer para armazenar os dados recebidos
byte buffer[NUM_CANAIS];
void setup() {
// Inicializa a comunicação serial com o Vixen Lights
Serial.begin(115200);
// Configura os pinos dos relés como saída
for (int i = 0; i < NUM_CANAIS; i++) {
pinMode(pinosReles[i], OUTPUT);
digitalWrite(pinosReles[i], LOW); // Desliga os relés no início
}
}
void loop() {
// Verifica se há dados recebidos na porta serial
if (Serial.available() >= NUM_CANAIS) {
// Lê os dados enviados pelo Vixen Lights
Serial.readBytes(buffer, NUM_CANAIS);
// Atualiza o estado dos relés de acordo com os dados recebidos
for (int i = 0; i < NUM_CANAIS; i++) {
if (buffer[i] == 0) {
digitalWrite(pinosReles[i], HIGH); // Liga o relé quando o valor for 0
} else {
digitalWrite(pinosReles[i], LOW); // Desliga o relé quando o valor for diferente de 0
}
}
}
}
Download do código para 16 canais:
📂 Código Para Controle de Relés 16 Canais com Vixen Lights
Passo 1: Definir o número de canais (relés) e pinos:
#define NUM_CANAIS 16
Define o número de canais a serem controlados. No caso, são 16 canais (relés).
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3};
Cria um vetor de inteiros pinosReles[] que armazena os pinos do Arduino onde os 16 relés estão conectados. Os pinos vão de 2 a 13 e de A0 a A3.
byte buffer[NUM_CANAIS];
Cria um vetor de bytes buffer[] que irá armazenar os dados recebidos da comunicação serial. O tamanho do vetor é igual ao número de canais (16).
Passo 2: Função setup() - Configuração Inicial
A função setup() é executada uma única vez ao iniciar o código e serve para configurar os parâmetros iniciais.
Serial.begin(115200);
Inicia a comunicação serial a 115200 bps (bits por segundo). Isso é necessário para enviar e receber dados entre o Arduino e outro dispositivo (como um computador ou controlador de luzes).
for (int i = 0; i < NUM_CANAIS; i++) {
pinMode(pinosReles[i], OUTPUT);
digitalWrite(pinosReles[i], LOW); // Desliga os relés no início
}
O código dentro do laço for configura todos os pinos dos relés como saídas. Ele percorre o vetor pinosReles[] e para cada pino, chama a função pinMode() com o parâmetro OUTPUT (configurando o pino como saída). Em seguida, a função digitalWrite() é chamada para garantir que todos os relés comecem desligados (valor LOW).
Passo 3: Função loop() - Processamento Contínuo
A função loop() é chamada repetidamente, de forma contínua, e é onde o Arduino vai constantemente verificar e processar os dados recebidos.
if (Serial.available() >= NUM_CANAIS) {
Verifica se há pelo menos 16 bytes de dados disponíveis na porta serial. Se houver dados suficientes, o código prossegue para a leitura dos dados.
Serial.readBytes(buffer, NUM_CANAIS);
Lê os 16 bytes da porta serial e os armazena no vetor buffer[]. Cada byte do buffer irá representar o estado de um relé. Se o byte for 0, o relé será ligado, se for outro valor, o relé será desligado.
for (int i = 0; i < NUM_CANAIS; i++) {
if (buffer[i] == 0) {
digitalWrite(pinosReles[i], HIGH); // Liga o relé quando o valor for 0
} else {
digitalWrite(pinosReles[i], LOW); // Desliga o relé quando o valor for diferente de 0
}
}
O laço for percorre todos os elementos do vetor buffer[] e, dependendo do valor de cada byte:
Se o valor for 0, o relé correspondente é ligado (digitalWrite(pinosReles[i], HIGH)).
Se o valor for diferente de 0, o relé é desligado (digitalWrite(pinosReles[i], LOW)).
Resumo do Funcionamento do Código:
Configuração Inicial:
O Arduino é configurado para controlar 16 relés, conectados aos pinos especificados no vetor pinosReles[].
A comunicação serial é iniciada para permitir a troca de dados com um dispositivo externo.
Verificação de Dados Serial:
A cada loop, o Arduino verifica se há dados disponíveis na porta serial.
Se houver 16 bytes ou mais, ele lê os dados e os armazena no buffer.
Controle dos Relés:
O Arduino percorre os dados no buffer e, para cada byte, decide se o relé correspondente deve ser ligado (valor 0) ou desligado (qualquer valor diferente de 0).
Loop Contínuo:
Esse processo é repetido continuamente no loop(), permitindo que o Arduino controle os relés com base nos dados recebidos via serial.
Nota: As únicas linhas que você irá alterar nó código são:
#define NUM_CANAIS 16
Quantidade de relés conectado nas portas do Arduino.
&
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1, A2, A3};
Número das portas aonde os relés estão conectados.
Concluído com sucesso!
Acesse o próximo tópico abaixo para continuar com o processo.
📌 Configuração do Arduino no Vixen Lights para Controlar 16 Módulos Relés
Tópicos relacionados:
📌 Esquema de Ligação de Módulo Relés 16 Canais 5V com Arduino e Fonte Externa
📌 Esquema de Ligação de Módulo Relés 16 Canais 12V com Arduino e Fonte Externa