ALPS HSHCAL001B Digital Temperature & Humidity Sensor

Hello everyone. I was able to get a hold of a couple of ALPS HSHCAL001B Digital Temperature & Humidity Sensors and am trying to make sense of the datasheet so I can attempt to use them with my Arduino. It uses I2C but I can't seem to figure out what and where I need to send wire commands to get this thing to give me readings. I've never really used I2C other than for an LCD so I'm at a loss. I've tried looking at other well documented I2C humidity and temp sensors but can't seem to wrap my head around making this little guy work.

For the record, ALPS datasheet are severely lacking when compared to others I've seen. Can someone please get me in the right direction? Here is a link to the datasheet (It's larger then the forum will allow as an attachment)

Thank you in advance for any help!

it looks by the datashhet it spesks i2c. Run the scanner to find it adress.
(from then on its easier to help you)

I was able to get the address from the datasheet and verified it was correct with the I2C scanner sketch I've got. I wrote up the following sketch to try and test this bad boy and help me understand more about the I2C.

#include <Wire.h>

#define Addr 0x18
#define TEMP1 0x12 //Temp 1 Register
#define TEMP2 0x13 //Temp 2 Register

int t1,t2,t3;

void setup() {
  // put your setup code here, to run once:
Wire.begin();

Serial.begin(9600);
delay(300);


Wire.beginTransmission(Addr);
Wire.write(0x1B); //Select Control1 Register
Wire.write(1100); //Send data to change measurement to 50Hz sampling.  Can this be a decimal vice birnary?
Wire.endTransmission();

}

void loop() {

Wire.beginTransmission(Addr);
Wire.write(0x0D); //Request "More info Version".  Value should be Decimal 17
//Wire.write(0x0E); //Request "More info ALPS".  Value should be Decimal 35
//Wire.write(0x0F); //Request "More info ALPS".  Value should be Decimal 73
Wire.endTransmission();

Wire.requestFrom(Addr, 1);

if (Wire.available() == 1) {
  t1 = Wire.read();
Serial.print("0x0D = ");
Serial.print(t1, BIN);
}

Wire.beginTransmission(Addr);
Wire.write(0x0E); //Request "More info ALPS".  Value should be Decimal 35
Wire.endTransmission();

Wire.requestFrom(Addr, 1);

if (Wire.available() == 1) {
  t2 = Wire.read();
Serial.print("    0x0E = ");
Serial.print(t2);
}

Wire.beginTransmission(Addr);
Wire.write(0x0F); //Request "Who I Am".  Value should be Decimal 73
Wire.endTransmission();

Wire.requestFrom(Addr, 1);

if (Wire.available() == 1) {
  t3 = Wire.read();
Serial.print("    0x0F = ");
Serial.print(t3);
}
Serial.println(" ");
delay(2000);
}

I got good checks. Now I'm trying to figure out what exactly I have to do to get measurements.

So after some playing around, I can read the Temp1 and Temp2 registers but I pretty sure I'm doing something wrong.

I get a full 8 bits for TEMP1 (which is the LSB) but am onlt getting 3 of the 5 bits in TEMP2 (MSB). After conversion I'm getting -9 Celsius in a room temp of 70ish degrees. My TEMP2 output is binary 110. Seems that if I had an output of 1100 I would be closer to my room's temp. So I don't know if my program is dropping a bit when I read the value.

Figured it out. For some reason having the sensor to sample at 50 Hz was screwing it up. Changed to it 1 Hz and all is good. Sensor is working perfectly now!