Can't read data from registers using I2C
The following code shows, how I would read from a STC3100. But I own none of them, so I can not try the code. I would be very surprised if it works directly. Use it as an example. Perhaps we could improve it together. ;-)
#include &lt;Wire.h&gt;

#define STC_ADDRESS 0x70
#define MODE_REGISTER 0x00 
#define CURRENT_LOW_REGISTER 0x06 
#define VOLTAGE_LOW_REGISTER 0x08 

int voltage, current;
int high_value = 0;

void setup() 
{
  Serial.begin(9600);

  Wire.begin(); 
  delay(100);
  // power on the STC
  Wire.beginTransmission(STC_ADDRESS);
  Wire.write(MODE_REGISTER);
  Wire.write(16);  
  Wire.endTransmission();
}

void loop() 
{
  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(VOLTAGE_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() &gt; 0 ) 
  {          
    voltage = Wire.read(); 
    //Serial.print(&quot;REG 8 = &quot;);
    //Serial.println(voltage);
  }
  delay(500);
  if( Wire.available() &gt; 0 ) 
  {  
    high_value = Wire.read();
    //Serial.print(&quot;REG 9 = &quot;);
    //Serial.println(high_value);
    voltage += (high_value &lt;&lt; 8);   
    //Serial.print(&quot;voltage = &quot;);
    //Serial.println(voltage);

  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() &gt; 0 ) 
  {  
    current = Wire.read(); 
    //Serial.print(&quot;REG 6 = &quot;);
    //Serial.println(current);
  }
  delay(500);
  if( Wire.available() &gt; 0 ) 
  {  
    high_value = Wire.read();   
    //Serial.print(&quot;REG 7 = &quot;);
    //Serial.println(high_value);
    current += (high_value &lt;&lt; 8);   
    //Serial.print(&quot;current = &quot;);
    //Serial.println(current);
  }
  Wire.endTransmission();

  Serial.print(&quot;V= &quot;);
  Serial.print(voltage);
  Serial.print(&quot;   C= &quot;);
  Serial.println(current);
}