I2C Registers

I have a bunch of I2C sensors with registers but have no way to read the registers. I have looked at the wire library in the reference section of the website but can't seem to find any way to read individual registers at a time via I2C. What command in the Arduino software can I use to read individual registers? If it is multiple commands what should I do? Thanks Robotkid

I have a bunch of I2C sensors with registers but have no way to read the registers.

How about if you start by posting a link to one of them?

PaulS:

I have a bunch of I2C sensors with registers but have no way to read the registers.

How about if you start by posting a link to one of them?

Sure here is one. http://mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=61 They are actually for another micro controller (lego mindstorms) but this website sells adapters for breadboards so I am able to connect to Arduino.

You really have to start with the datasheet for the specific I2C device you are working with.

Here is one where I needed to read a word (2 byte) register from a I2C ADC device. First I had to send a single byte ‘register pointer’ to the device and then request two bytes from the device.

//Function to read ADC conversion data from device 
int getadcReading()   // read 16 bit analog voltage reading
{
  int data;
  const int deviceAdd = 0x48;              // ADS1115 address with address pin grounded
  Wire.beginTransmission(deviceAdd); // transmit to I2c device address
  Wire.send(0x00);                   // point to device register 0 
  Wire.endTransmission();            // stop transmitting

  Wire.requestFrom(deviceAdd, 2);    // request 2 bytes from slave device
  while(Wire.available())            // need two bytes, MSB and LSB of converstion value
  { 
    data = Wire.receive();         // get MSB of reading
    data = data << 8;              // shift it to high byte of data
    data = data + Wire.receive();  // add LSB to data
  }
  return data;
}

Lefty

I'll try that, thanks.