Skip to main content
debug prints
Source Link
#include <Wire.h>

#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() > 0 ) 
  {          
    voltage = Wire.read(); 
    //Serial.print("REG 8 = ");
    //Serial.println(voltage);
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();
    //Serial.print("REG 9 = ");
    //Serial.println(high_value);
    voltage += (high_value << 8);   
    //Serial.print("voltage = ");
    //Serial.println(voltage);

  }
  Wire.endTransmission();

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

  Serial.print("V= ");
  Serial.print(voltage);
  Serial.print("   C= ");
  Serial.println(current);
}
#include <Wire.h>

#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() > 0 ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

  Serial.print("V= ");
  Serial.print(voltage);
  Serial.print("   C= ");
  Serial.println(current);
}
#include <Wire.h>

#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() > 0 ) 
  {          
    voltage = Wire.read(); 
    //Serial.print("REG 8 = ");
    //Serial.println(voltage);
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();
    //Serial.print("REG 9 = ");
    //Serial.println(high_value);
    voltage += (high_value << 8);   
    //Serial.print("voltage = ");
    //Serial.println(voltage);

  }
  Wire.endTransmission();

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

  Serial.print("V= ");
  Serial.print(voltage);
  Serial.print("   C= ");
  Serial.println(current);
}
errors fixed
Source Link

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 <Wire.h>

#define STC_ADDRESS = 0x70; 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() > 0 ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value +== Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value +== Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

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

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 <Wire.h>

#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() ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

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

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 <Wire.h>

#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() > 0 ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() > 0 ) 
  {  
    high_value = Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

  Serial.print("V= ");
  Serial.print(voltage);
  Serial.print("   C= ");
  Serial.println(current);
}
deleted 175 characters in body
Source Link

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 <Wire.h>

#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() 
{
  delay(2000);
  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(VOLTAGE_LOW_REGISTER);
  // Restart without Stop <- spec
  Wire.beginTransmissionrequestFrom(STC_ADDRESS, 2); 
  Wire.requestFromdelay(STC_ADDRESS, 2500); 
  if( Wire.available() ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  // Restart without Stop <- spec
  Wire.beginTransmissionrequestFrom(STC_ADDRESS, 2); 
  Wire.requestFromdelay(STC_ADDRESS, 2500); 
  if( Wire.available() ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

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

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 <Wire.h>

#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() 
{
  delay(2000);
  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(VOLTAGE_LOW_REGISTER);
  // Restart without Stop <- spec
  Wire.beginTransmission(STC_ADDRESS); 
  Wire.requestFrom(STC_ADDRESS, 2); 
  if( Wire.available() ) 
  {          
    voltage = Wire.read(); 
  }
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.endTransmission();

  Wire.beginTransmission(STC_ADDRESS); 
  Wire.write(CURRENT_LOW_REGISTER);
  // Restart without Stop <- spec
  Wire.beginTransmission(STC_ADDRESS); 
  Wire.requestFrom(STC_ADDRESS, 2); 
  if( Wire.available() ) 
  {  
    current = Wire.read(); 
  }
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

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

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 <Wire.h>

#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() ) 
  {          
    voltage = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    voltage += (high_value << 8);   
  }
  Wire.write(CURRENT_LOW_REGISTER);
  Wire.requestFrom(STC_ADDRESS, 2); 
  delay(500);
  if( Wire.available() ) 
  {  
    current = Wire.read(); 
  }
  delay(500);
  if( Wire.available() ) 
  {  
    high_value += Wire.read();   
    current += (high_value << 8);   
  }
  Wire.endTransmission();

  Serial.print("V= ");
  Serial.print(voltage);
  Serial.print("   C= ");
  Serial.println(current);
}
Source Link
Loading