diff --git a/include/driver/hdc1080.h b/include/driver/hdc1080.h index f6f278c3652ef5f9e0b88920ed5619243b6f07d7..6a510a03b1a48dab30a0b49a478ffe95afc0d294 100644 --- a/include/driver/hdc1080.h +++ b/include/driver/hdc1080.h @@ -15,6 +15,7 @@ class HDC1080 { float getRH(); unsigned int getManufacturerID(); void init(); + void heater(bool on); }; extern HDC1080 hdc1080; diff --git a/src/driver/hdc1080.cc b/src/driver/hdc1080.cc index 8da2ba757b7ae73d6298e093fbd2e1c416a9fc7a..26c97ef2a1de6b82d0eaf692d3dda4350ff59daa 100644 --- a/src/driver/hdc1080.cc +++ b/src/driver/hdc1080.cc @@ -39,10 +39,22 @@ unsigned int HDC1080::getManufacturerID() return (unsigned int)rxbuf[0] << 8 | rxbuf[1]; } +void HDC1080::heater(bool on) +{ + txbuf[0] = 0x02; + i2c.xmit(address, 1, txbuf, 2, rxbuf); + if (on) { + txbuf[1] = rxbuf[0] | (1<<5); + } else { + txbuf[1] = rxbuf[0] & ~(1<<5); + } + i2c.xmit(address, 2, txbuf, 0, rxbuf); +} + void HDC1080::init() { txbuf[0] = 0x02; - txbuf[1] = 0x08; + txbuf[1] = 0x00; txbuf[2] = 0x00; i2c.xmit(address, 3, txbuf, 0, rxbuf); arch.delay_ms(15);