diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2019-10-18 10:38:48 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2019-10-18 10:38:48 +0200 |
commit | e391c1bc244838bb050ade946e709f671cd9cf94 (patch) | |
tree | f3b5e0260f95f886f54be213098f3362b7f8c815 /src/driver | |
parent | 8e0cde61737f46ba492768d86c54cff998da07a1 (diff) |
Add preliminary version of HDC1080 driver (not working reliably yet)
Diffstat (limited to 'src/driver')
-rw-r--r-- | src/driver/hdc1080.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/driver/hdc1080.cc b/src/driver/hdc1080.cc new file mode 100644 index 0000000..8da2ba7 --- /dev/null +++ b/src/driver/hdc1080.cc @@ -0,0 +1,51 @@ +#include "driver/hdc1080.h" +#include "arch.h" +#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C) +#include "driver/i2c.h" +#else +#include "driver/soft_i2c.h" +#endif + +float HDC1080::getTemp() +{ + txbuf[0] = 0x00; + + i2c.xmit(address, 1, txbuf, 0, rxbuf); + + arch.delay_ms(10); + + i2c.xmit(address, 0, txbuf, 2, rxbuf); + + return (((unsigned int)rxbuf[0] << 8) | rxbuf[1]) * .00251770019531250000 - 40.; +} + +float HDC1080::getRH() +{ + txbuf[0] = 0x01; + + i2c.xmit(address, 1, txbuf, 0, rxbuf); + + arch.delay_ms(10); + + i2c.xmit(address, 0, txbuf, 2, rxbuf); + + return (((unsigned int)rxbuf[0] << 8) | rxbuf[1]) * .00152587890625000000; +} + +unsigned int HDC1080::getManufacturerID() +{ + txbuf[0] = 0xfe; + i2c.xmit(address, 1, txbuf, 2, rxbuf); + return (unsigned int)rxbuf[0] << 8 | rxbuf[1]; +} + +void HDC1080::init() +{ + txbuf[0] = 0x02; + txbuf[1] = 0x08; + txbuf[2] = 0x00; + i2c.xmit(address, 3, txbuf, 0, rxbuf); + arch.delay_ms(15); +} + +HDC1080 hdc1080; |