Passo a passo para configurar o código de comunicação com Arduino e Vixen Lights para controlar módulo de relés 8 canais.
Nota: O passo a passo menciona 8 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 (8 relés)
#define NUM_CANAIS 8
// Pinos dos relés
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9};
// 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 8 canais:
📂 Código Para Controle de Relés 8 Canais com Vixen Lights
Passo 1: Definir o número de canais (relés) e pinos:
#define NUM_CANAIS 8
Define o número de canais a serem controlados. No caso, são 8 canais (relés).
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9};
Cria um vetor de inteiros pinosReles[] que armazena os pinos do Arduino onde os 8 relés estão conectados. Os pinos vão de 2 a 9.
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 (8).
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 8 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 8 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 8 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 8 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 8
Quantidade de relés conectado nas portas do Arduino.
&
int pinosReles[NUM_CANAIS] = {2, 3, 4, 5, 6, 7, 8, 9};
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 8 Módulos Relés
Tópicos relacionados:
📌 Ligação de Módulo Relé 8 Canais com Arduino e Fonte Externa
📌Ligação de Módulo Relé 16 Canais com Arduino e Fonte Externa