top of page

Controle 8 Relés no Vixen 3

Público·1 membro

Light Show Brasil
Adicionou sua exibição de Natal ao mapa para todos os visitantes.

Espírito de Natal

Administrador

Configuração do Código para Controlar Módulo Relés de 8 Canais com Arduino no Vixen Lights

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
  }
}
  1. 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:


  1. 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.

  1. 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.

  1. 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).

  1. 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


86 visualizações

membros

bottom of page