plaatje + text
pi@raspberrypi ~/bin $ vi readhyt.c
#include <stdio.h>
#include <fcntl.h> /*file control options. ie for open file use O_RDWR*/
#include <sys/ioctl.h>
#include <linux/i2c-dev.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <unistd.h> /* sleep */
#include <dirent.h>
int main()
{
int fh;
unsigned char buf[4];
float h, t;
fh = open("/dev/i2c-1", O_RDWR);
ioctl(fh,I2C_SLAVE,0x28);
buf[0] = 0;
write(fh,buf,1);
usleep(60*1000);
read(fh,buf,4);
h = ((buf[0] & 0x3f) << 8 | buf[1]) * (100.0 / 0x3fff);
t = (buf[2] << 8 | (buf[3] & 0xfc)) * (165.0 / 0xfffc) - 40;
printf("0x%x 0x%x 0x%x 0x%x %4.2f %4.2f\n", buf[0],buf[1],buf[2],buf[3],h,t);
close(fh);
return 0;
}
$gcc readhyt.c -o readhyt
used variables:
fh file handle
h humidity
t temperature
$./readhyt
0x00 0x00 0x00 0x00 32.22 22.34
that part with buf[0] & 0x3f << 8 is called a mask.