Slave to master reading different

Hi, i just don’t get why is my reading different from slave, as i wanted to use master to request from slave to send the reading data over. There is the delay which i cant seem to match it with master no matter wat i do.

I attach my program and the reading data below, COM 7 is master while COM 4 is slave.

Master_Solar_Power_Reading.ino (991 Bytes)

Slave_A_Solar_Power_Reading.ino (1009 Bytes)

Can you please insert the code (using code tags, see sticky "how to use the forum") in your post instead of attaching. Your code is small enough and you're missing out on users that view your post using a mobile device.

   int Solar_value = analogRead(A0);
    Wire.write(Solar_value );
  // respond with message of 6 bytes
  // as expected by master

Your slave is taking a two byte int (which has a value already greater than the maximum byte of 255) and converting it to a single byte for transmission. You need to send each byte separately.
Since you are (trying) to send two bytes, the comment about 6 bytes is wrong.

  Wire.requestFrom(8,10);    // request 6 bytes from slave device #8

    while (Wire.available())
    Solar_value =; 
    map(Solar_value, 1, 100, 100, 1);
    temp = (Solar_value * 5.0) / 1024.0; 
    input_voltage = temp / (r2/(r1+r2));
    Power = ((input_voltage * input_voltage) / (r1+r2))*1000;
    if (input_voltage < 0.1) 

Why are you requestFrom’ing 10 bytes from the slave? Why does the comment say request 6 bytes? is only reading one byte at a time, so again the two byte Solar_value is not being filled.
Why are you now doing a map() which didn’t appear in the same code in the slave?
You don’t want the delay() inside the while(Wire.available()) loop.