hola surbyte; disculpa por la demora de la respuesta es que estube de viaje con full trabajo dejando de lado mi proyecto, pero ahora mismo me incorpore y haciendo unas pruebas decidi poner un solo maestro, osea:
Dos balanzas van tener un peso encima( estas 2 van a ser con las que se van a ser las combinaciones). El maestro pregunta el peso a las dos balanzas patron( una ala vez, la que tenga peso mayor)y ese peso lo compara con 10 balanzas mas( aumente un poco el numero de balanzas) y las balanzas que sumen 500gramos( encienden 2 led).
Soy novato en arduino, pero quemando un poco de neuronas ya estoy obteniendo resultados,y funciona correctamente por momentos, pero esta un poco inestable, la verdad que el uso del goto no me da confianza, pero lo tuve que usar porque sino los led encienden correctamente y me parpadean, ademas que aveces al preguntar el peso a la segunda balanza se demora en apagar los led o aveces se cuelga.
Adjunto un poco de mi codigo aver si me hechas una mano.
void loop(){
inicio:
Wire.requestFrom(12,8); // Pedimos 8 bytes al esclavo 12(balanza 1)
pesoBal1(); //lo guardamos en una variable
if(balanza1 > 0.01){ //si es mayor a 0.01g hacemos las comparaciones
apagarLeds();
balanzaUno();
}
else{
//Serial.println("PESO DE ESCLAVO 12 ES BAJO");
goto Bal2; //de lo contrario nos vamos a la segunda balanza
}
if( balanza1 < 0.01) {
Bal2:
Wire.requestFrom(11,8); // Pedimos 8 bytes al esclavo 11(balanza 2)
pesoBal2(); //lo guardamos en una variable
if(balanza2 > 0.01){ //si es mayor a 0.01g hacemos las comparaciones
apagarLeds();
balanzaDos();
}
else{ //de lo contrario regresamos al inicio
goto inicio;
//Serial.println("PESO DE ESCLAVO 12 ES BAJO");
}
}
}
y con este otro codigo hago las sumas combinando solo hasta dos balanzas
uso dos void: balanzaUno(), y Balanza2()
void balanzaUno(){
///ESCLAVO 1 ////
slave1:
if(conta ==1){
Wire.requestFrom(1,8); // Pedimos 8 bytes al esclavo 1
CompararDatos();
if((result >= 0.495) && (result < 0.510)){ //Comparamos si el resultado esta dentro del rango
digitalWrite(ledMaestro, HIGH); //encendemos led maestro
digitalWrite(ledEsclavo1, HIGH); //encendemos led para el esclavo 1
goto slave1;
}
else{
apagarLeds();
conta++;
}
}
///ESCLAVO 2 ////
slave2:
if(conta ==2){
Wire.requestFrom(2,8); // Pedimos 8 bytes al esclavo 2
CompararDatos();
if((result >= 0.495) && (result < 0.510)){ //Comparamos si el resultado esta dentro del rango
digitalWrite(ledMaestro, HIGH); //encendemos led maestro
digitalWrite(ledEsclavo2, HIGH); //encendemos led para el esclavo 2
goto slave2;
}
else{
apagarLeds();
conta++;
}
}
///hasta el contador 55, luego vuelve a contador uno