top of page

Controle 16 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 16 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 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
  }
}
  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 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.

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

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

121 visualizações

Oi boa tarde vc poderia me informar quais são as placas , módulos relé e Arduinos nescessário para fazer com fita led endereçável ?

membros

bottom of page