BayEOSArduino Library
hyt221.h
1 #ifndef HYT221_h
2 #define HYT221_h
3 
4 #define HYT221_ADDR 0x28
5 #include <Arduino.h>
6 #include <inttypes.h>
7 
8 uint8_t hyt221_measure(float* temp, float* hum) {
9  Wire.beginTransmission(HYT221_ADDR);
10  Wire.write(0);
11  Wire.available();
12  int Ack = Wire.read(); // receive a byte
13  delay(100);
14 
15  Wire.requestFrom(HYT221_ADDR, 4);
16  if (Wire.available() > 3) {
17  //receive the databytes:
18 
19  unsigned int valuetemp = 0;
20  unsigned int valuecap = 0;
21 
22  *(((uint8_t*) &valuecap) + 1) = (Wire.read() & 0x3f); //Mask Status Bits
23  *((uint8_t*) &valuecap) = Wire.read();
24  *(((uint8_t*) &valuetemp) + 1) = Wire.read();
25  *((uint8_t*) &valuetemp) = Wire.read();
26  Wire.endTransmission();
27  /*
28 
29  *hum=((float)valuecap);
30  *temp=((float)valuetemp);
31  return 1;
32  */
33  valuetemp = valuetemp >> 2;
34 
35  //formate the values
36  *hum = ((float) valuecap * 100 / (1 << 14));
37  *temp = ((float) valuetemp * 165 / (1 << 14)) - 40;
38  return 0;
39  }
40  return 1;
41 }
42 
43 #endif