From cacc7ca0727ab1b84dd074731d95699a33ae4f5a Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 8 Oct 2026 11:00:43 -0600 Subject: [PATCH] Testing temperature sensor --- htu21d | Bin 0 -> 69664 bytes htu21d.c | 36 ++++++++++++++++++++++++++++++++++++ main.c | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100755 htu21d create mode 100644 htu21d.c create mode 100644 main.c diff --git a/htu21d b/htu21d new file mode 100755 index 0000000000000000000000000000000000000000..0a2b32eb0da6a9ebfb35df1b278460e82c7c84d1 GIT binary patch literal 69664 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 literal 0 HcmV?d00001 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) +//} +