Master & slave arduino mega with rs485 and relay connected with vixen

Hello i am trying to build a controller with a master and for now a slave with between RS485 connection to master and slave.
And for last the slave is connected also to the relay 8channels, Vixen responsive ...but i cant control the relay with vixen and i dont know why
can somebody help me?

code

Heres my code

//Master

#include <A2a.h>
#include <SoftwareSerial.h>
#include “Arduino.h”

// DEFINIÇÕES DE PINOS
#define pinLED 2 //aqui coloca-se o primeiro pin do primeiro Relé
#define n_arduinos 1
#define n_canais_por_arduino 8
#define N_canais_total (n_arduinos*n_canais_por_arduino)
#define end_inicial 0x08 // aqui coloca-se o endereço do primeiro slave , pode ser alterado, apenas tem de coincidir com o que está no programa do slave 1

//canas do rele a usar
#define n_canais_por_arduino 2 //pmw
#define n_canais_por_arduino 3//pmw
#define n_canais_por_arduino 4//pmw
#define n_canais_por_arduino 5 //pmw
#define n_canais_por_arduino 6 //pmw
#define n_canais_por_arduino 7 //pmw
#define n_canais_por_arduino 8 //pmw
#define n_canais_por_arduino 9 //pmw

//variaveis novas que poderam faltar

//pins de comunicação do RS4585
//#define Pino_RS485_RX 10 // mudar para 12
//#define Pino_RS485_TX 11 //mudar para 13

//#define RS485Transmit HIGH
//#define RS485Receive LOW

// INSTANCIANDO OBJETOS
A2a arduinoSlave;

//Pino de controle transmissao/recepcao
#define SSerialTxControl A4
SoftwareSerial mySerial(11,12); // RX, TX

#define NOT_INVERTED 0
#define INVERTED 1
#define MODE NOT_INVERTED

// DECLARAÇÃO DE VARIÁVEIS
//declaracao dos canais rele
int channels = {n_canais_por_arduino,n_canais_por_arduino,n_canais_por_arduino,n_canais_por_arduino,n_canais_por_arduino ,n_canais_por_arduino,n_canais_por_arduino,n_canais_por_arduino};

byte endereco[n_arduinos];
byte rxValue;
byte txvalue;

byte incomingByte[N_canais_total];
int i=0;
int counter = 0;

void setup() {
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);
pinMode( n_canais_por_arduino, OUTPUT);

for (int i=0;i<n_arduinos;i++){

endereco[i]=(end_inicial)+i;

}

arduinoSlave.begin();
Serial.begin(9600);
while (!Serial){
}
{
Serial.println(“Modulo Transmissor”);
Serial.println(“A enviar dados!”);
}
for (byte nS = 0 ; nS < n_arduinos ; nS++) {

for(byte i=0;i<n_canais_por_arduino;i++){
arduinoSlave.pinWireMode(endereco[nS], pinLED+i, OUTPUT);
delay(100);
arduinoSlave.digitalWireWrite(endereco[nS], pinLED+i, LOW);
}

}
if (MODE == NOT_INVERTED){
for (byte nS = 0 ; nS < n_arduinos ; nS++) {
for(byte i=0;i<n_canais_por_arduino;i++){
arduinoSlave.digitalWireWrite(endereco[nS], pinLED+i, HIGH);
delay(500);
arduinoSlave.digitalWireWrite(endereco[nS], pinLED+i, LOW);
}
}

}
}

void loop(){
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
counter++;
delay(1000);

if (Serial.available() >= 8)
counter++;
{
for (int i=0; i<8;i++)
{
incomingByte[i] = Serial.read();

  // incomingByte[i] = 255 - Serial.read(); 
}                                       // Arduino pins
digitalWrite(n_canais_por_arduino, incomingByte[0]);  // Pin 2
digitalWrite(n_canais_por_arduino, incomingByte[1]);  // Pin 3
digitalWrite(n_canais_por_arduino, incomingByte[2]);  // Pin 4
digitalWrite(n_canais_por_arduino, incomingByte[3]);  // Pin 5
digitalWrite(n_canais_por_arduino, incomingByte[4]);  // Pin 6
digitalWrite(n_canais_por_arduino, incomingByte[5]);  // Pin 7
digitalWrite(n_canais_por_arduino, incomingByte[6]);  // Pin 8
digitalWrite(n_canais_por_arduino, incomingByte[7]);  // Pin 9

int arduino=n_arduinos;
int N_canais_arduino=n_canais_por_arduino;
int n_canais_total=N_canais_total;

for(;;){

    if(Serial.available() >= n_canais_total){

                  
                for(int i=0;i<n_canais_total;i++){

                      incomingByte[i]=Serial.read();
                  
                }
                 if (MODE == NOT_INVERTED) {
                for(int nS=0;nS<arduino;nS++){
                      for(int i=0;i<N_canais_arduino;i++){
                           int j=nS*N_canais_arduino,p=i+j;
                            if(incomingByte[p]==0){arduinoSlave.digitalWireWrite(endereco[nS], pinLED+i, LOW);
                            }else{arduinoSlave.digitalWireWrite(endereco[nS], pinLED+i, HIGH);
                            
                            
                            }
                       }
                
                 }
                
          }
            
     }
          }

}
}

Slave code

#include <A2a.h>
#include <SoftwareSerial.h>
#include “Arduino.h”

#define endereco 0x08 // MODIFICAR O ENDEREÇO PARA CADA SLAVE

A2a arduinoMaster;

//Pinos de comunicacao serial do modulo RS485
//#define Pino_RS485_RX 10
//#define Pino_RS485_TX 11

//Pino de controle transmissao/recepcao
#define SSerialTxControl A4

//#define RS485Transmit LOW
//#define RS485Receive HIGH

SoftwareSerial mySerial(11, 12); // RX, TX

void setup() {
Serial.begin(9600);
while (!Serial);

Serial.println(“Modulo receptor”);
Serial.println(“A enviar dados…”);
mySerial.begin(9600);
mySerial.println(“recebido”);
{

arduinoMaster.begin(endereco);
}
}

void loop() {
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}

void receberDados() {
arduinoMaster.receiveData();
}

void enviarDados() {
arduinoMaster.sendData();
}

From what I can see on how it is connected and how the software interacts I am at a loss. Sharing the schematic, not a frizzy thing and the code would help us help you.

i made an update at the post you can see now the code, some variavel are in my native language so if you have any trouble with it u can message me!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.