// master #include char comeMove; char comeLat[10]={}; char comeLong[10]={}; char comeTargetLat[10]={}; char comeTargetLong[10]={}; void setup() { Wire.begin(); Serial.begin(9600); } void loop() { receiveFromSlave(); delay(1000); } // função para receber dados do slave void receiveFromSlave() { Wire.requestFrom(8, 41); int i=0; while (Wire.available()) { Serial.print(Wire.read()); /*if (i < 1) { comeMove = Wire.read(); } else if (i < 11) { comeLat[i-1] = Wire.read(); } else if (i < 21) { comeLong[i-11] = Wire.read(); } else if (i < 31) { comeTargetLat[i-21] = Wire.read(); } else { comeTargetLong[i-31] = Wire.read(); } i=i+1;*/ } Serial.print("Move = "); Serial.println(comeMove); Serial.print("Latitude = "); Serial.println(comeLat); Serial.print("Longitude = "); Serial.println(comeLong); Serial.print("targetLatitude = "); Serial.println(comeTargetLat); Serial.print("targetLongitude = "); Serial.println(comeTargetLong); delay(500); } ******************************************************************** // slave #include char goMove[1]={}; char goLat[11]={}; char goLong[11]={}; char goTargetLat[11]={}; char goTargetLong[11]={}; char dataToSend[45]={}; float move = 1; float latitude = -11.111111; float longitude = -22.222222; float targetLatitude = -33.333333; float targetLongitude = -44.444444; void setup() { Wire.begin(8); Wire.onRequest(requestEvent); Serial.begin(9600); } void loop() { gatherData(); delay(1000); } // função para reunir os dados na variável a ser enviada void gatherData() { memset(dataToSend, 0, sizeof(dataToSend)); dtostrf(move, 1, 0, goMove); dtostrf(latitude, 3, 6, goLat); dtostrf(longitude, 3, 6, goLong); dtostrf(targetLatitude, 3, 6, goTargetLat); dtostrf(targetLongitude, 3, 6, goTargetLong); strcat(dataToSend, goMove); strcat(dataToSend, goLat); strcat(dataToSend, goLong); strcat(dataToSend, goTargetLat); strcat(dataToSend, goTargetLong); Serial.println(dataToSend); } // função para enviar dados ao master quando solicitado void requestEvent() { Wire.write(dataToSend); }