From e2f0937f9c73f2c3a731915208b988aa2090e308 Mon Sep 17 00:00:00 2001 From: Gerardo Marx Date: Thu, 8 Oct 2026 11:00:28 -0600 Subject: [PATCH] testing temperature function --- htu21d.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ htu21d.h | 2 ++ main.c | 27 +++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 htu21d.c create mode 100644 main.c diff --git a/htu21d.c b/htu21d.c new file mode 100644 index 0000000..3dda8a3 --- /dev/null +++ b/htu21d.c @@ -0,0 +1,44 @@ +#include //i2c +#include +#include +#include +#include + +#include "htu21d.h" + +// i2cReset +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]; + int 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/htu21d.h b/htu21d.h index 7e08668..ff73173 100644 --- a/htu21d.h +++ b/htu21d.h @@ -12,6 +12,8 @@ #define RESET 0xFE // prototype functions: +int i2cReset(int fd); + int getTemp(int fd, double *temp); int getHum(int fd, double *hum); diff --git a/main.c b/main.c new file mode 100644 index 0000000..1ab1f52 --- /dev/null +++ b/main.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +#include "htu21d.h" + +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){ + //printf("Error"); + 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 get temperature\n"); + return -1; + } + printf("%5.2f C\n", temperature); + return 0; +}