RED 485 Arduino Mega maestro, 3 arduinos 1 Esclavos (AYUDA)

Hola, quisiera saber si alguien me puede ayudar, resulta que necesito leer 3 entradas análogas, una por cada arduino uno(esclavos), y mandarlas al arduino mega(maestro), para esto tengo 3 direcciones diferentes y le pido a cada esclavo por separado que me mande la lectura. Hasta ahora es muy simple el codigo, pero funciona para dos maestros y cuando conecto el tercero, no se que sucede, me salen 3 valores iguales en este caso 255;255;255.

este es el codigo del maestro

int dato1=0;
byte dato;
int dato2=0;
int dato3=0;
int pinCONTROL=2;
int repeticiones=0;

void setup()
{
  Serial1.begin(9600);
  Serial.begin(9600);
  pinMode(pinCONTROL,OUTPUT);
}
void loop()
{

        if (repeticiones == 0)
        {
        dato=0;
        dato1=0;
        digitalWrite(pinCONTROL,HIGH);
        Serial1.write(5);
        delay(100);
        digitalWrite(pinCONTROL,LOW);
        delay(500);   
        dato=Serial1.read();
        while(dato==0)
        {
          dato=Serial1.read();
        }
        dato1=dato;
        Serial.println(dato); 
        repeticiones++;
        }  

        
        
        if (repeticiones == 1)
        {
        dato=0;
        dato2=0;
        digitalWrite(pinCONTROL,HIGH);
        Serial1.write(6);
        delay(100);
        digitalWrite(pinCONTROL,LOW);  
        delay(500); 
        dato=Serial1.read();
        while(dato==0)
        {
          dato=Serial1.read();
        }
        dato2=dato;
        Serial.println(dato); 
        repeticiones++;
        }
        
        
        
        if (repeticiones == 2)
        {
        dato=0;
        dato3=0;
        digitalWrite(pinCONTROL,HIGH);
        Serial1.write(7);
        delay(100);
        digitalWrite(pinCONTROL,LOW); 
        delay(500);  
        dato=Serial1.read();
        while(dato==0)
        {
          dato=Serial1.read();
        }
        dato3=dato;
        Serial.println(dato); 
        repeticiones++;
        }
        
        if (repeticiones == 3)
        {
        Serial.print(dato1);
        Serial.print(';');
        Serial.print(dato2);
        Serial.print(';');
        Serial.println(dato3);
        repeticiones++; 
        }        
}

Este es el codigo del esclavo

int pinCONTROL=2;
int val;
int cont;
int dat=0;

void setup()
{
pinMode(pinCONTROL,OUTPUT); 
digitalWrite(pinCONTROL,LOW);
Serial.begin(9600);
}


void loop() 
{
  
  if (Serial.available())
  {
    val = Serial.read();
    //Serial.println(val);
    delay(100);
    cont=0;
  }
  if(val==5 && cont<1)//direccion del esclavo
  {
    digitalWrite(pinCONTROL,HIGH);
    dat= analogRead(A0);
    Serial.write(dat);
    cont++;
    delay(100);
    digitalWrite(pinCONTROL,LOW);
  }

}

Gracias!

que protocolo estas usando???

ironfran:
que protocolo estas usando???

Esta usando el RS485, mira el titulo del post...

Me parece recordar que IgorR estuvo peleando con el RS485 incluso creo que hizo una libreria para RS485 pero no se si la licencio como open.

Yo tambien estoy empezando ahora con este protocolo y estoy recopilando informacion, pero recien acabo de empezar, te dejo este link que he encontrado a ver si te ayuda, en tanto esperaremos si algun compañero puede ampliar algo.

http://playground.arduino.cc/Code/ModbusMaster

Un saludo.