diff --git a/htu21d b/htu21d new file mode 100755 index 0000000..0a2b32e Binary files /dev/null and b/htu21d differ diff --git a/htu21d.c b/htu21d.c new file mode 100644 index 0000000..55d39a7 --- /dev/null +++ b/htu21d.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include + +#include "htu21d.h" + +int i2cReset(int fd) +{ + if(ioctl(fd, I2C_SLAVE, ADDR) < 0) + { + perror("Failed to open the I2C bus: reset\n"); + return -1; + } + i2c_smbus_write_byte(fd, RESET); + return 0; +} + +//get temp +int getTemp(int fd, double *temp) +{ + char buffer[3]; + __s32 response = i2c_smbus_read_i2c_block_data(fd, TEMP, 3, buffer); + if(response < 0) + { + perror("failed to read temperature from sensor\n"); + return -1; + } + *temp = -46.85 + 175.72 * (buffer[0]*256+ buffer[1])/65536; + return 0; + +} + +//get humidity + diff --git a/main.c b/main.c new file mode 100644 index 0000000..84c4fa7 --- /dev/null +++ b/main.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +#include "htu21d.h" +double temperature; + +int main(int argc, char *argv[]) +{ + int fd; + char path[20]; + snprintf(path, sizeof(path), "/dev/i2c-%d", 1); + fd = open(path, O_RDWR); + if(fd < 0) + { + perror("Unable to access the i2c bus path\n"); + return -1; + } + i2cReset(fd); + double temperature; + int status = getTemp(fd, &temperature); + + if(status < 0) + { + perror("Unable to read temperature\n"); + return -1; + } + printf("%5.2f °C\n", temperature); + return 0; +} + +//int getTemp(int fd, double *temp) +//{ +// double raw = fd; +// temperature = +// getTemp(fd, &temp) +//} +