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!