#include #include //to print error #include //header file for standard I2c send and receive commands #include //setup I2c devices #include //definitions and structures #include //smbus commands #include "HTU21D_H.h" //Declarations of functions // Temperature: int get_temp(int fd, double *temp){ reset_sensor(fd); char buffer[3]; __s32 res = i2c_smbus_read_i2c_block_data(fd, HTU21D_TEMP, sizeof(buffer), buffer); if (res < 0){ perror("Error -1: Failed to read from the device"); return -1; } *temp = -46.85+175.72*(buffer[0]*256+buffer[1])/65536.0; return 0; } // Humidity //int get_hum(int fd, double *hum); int get_hum(int fd, double *hum){ reset_sensor(fd); char buffer[3]; __s32 res = i2c_smbus_read_i2c_block_data(fd, HTU21D_HUM, sizeof(buffer), buffer); if ( res < 0 ){ perror("Error -3: Failed to read humidity "); return -1; } *hum = -6+125*(buffer[0]*256+buffer[1])/65536.0; return 0; } // Reset Sensor int reset_sensor(int fd){ if(0 > ioctl(fd, I2C_SLAVE, HTU21D_ADDR)){ perror("Error -2: Failed to reset"); return -2; } i2c_smbus_write_byte(fd, HTU21D_RESET); return 0; }