Complete library for whole scientific pre-final
Dependencies: BOX_1
ENVIROMENTAL/SI7021.cpp@0:f8a9cceb4186, 2019-06-10 (annotated)
- Committer:
- Alessio_Zaino
- Date:
- Mon Jun 10 12:50:02 2019 +0000
- Revision:
- 0:f8a9cceb4186
still developing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alessio_Zaino | 0:f8a9cceb4186 | 1 | #include "SI7021.h" |
Alessio_Zaino | 0:f8a9cceb4186 | 2 | |
Alessio_Zaino | 0:f8a9cceb4186 | 3 | SI7021::SI7021(PinName sda, PinName scl):i2c(sda, scl) |
Alessio_Zaino | 0:f8a9cceb4186 | 4 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 5 | i2c.frequency(FREQ); |
Alessio_Zaino | 0:f8a9cceb4186 | 6 | } |
Alessio_Zaino | 0:f8a9cceb4186 | 7 | |
Alessio_Zaino | 0:f8a9cceb4186 | 8 | int32_t SI7021::get_temperature() |
Alessio_Zaino | 0:f8a9cceb4186 | 9 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 10 | return tempData; |
Alessio_Zaino | 0:f8a9cceb4186 | 11 | } |
Alessio_Zaino | 0:f8a9cceb4186 | 12 | |
Alessio_Zaino | 0:f8a9cceb4186 | 13 | |
Alessio_Zaino | 0:f8a9cceb4186 | 14 | uint32_t SI7021::get_humidity() |
Alessio_Zaino | 0:f8a9cceb4186 | 15 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 16 | return humData; |
Alessio_Zaino | 0:f8a9cceb4186 | 17 | } |
Alessio_Zaino | 0:f8a9cceb4186 | 18 | |
Alessio_Zaino | 0:f8a9cceb4186 | 19 | bool SI7021::get_data() |
Alessio_Zaino | 0:f8a9cceb4186 | 20 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 21 | buff_tx[0] = READ_HUM ; |
Alessio_Zaino | 0:f8a9cceb4186 | 22 | if(i2c.write(ADDR, (char*)buff_tx, 1) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 23 | if(i2c.read(ADDR, (char*)buff_rx, 2) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 24 | |
Alessio_Zaino | 0:f8a9cceb4186 | 25 | humData = ((uint32_t)buff_rx[0] << 8) + (buff_rx[1] & 0xFC); |
Alessio_Zaino | 0:f8a9cceb4186 | 26 | humData = (((humData) * 15625L) >> 13) - 6000; |
Alessio_Zaino | 0:f8a9cceb4186 | 27 | |
Alessio_Zaino | 0:f8a9cceb4186 | 28 | buff_tx[0] = READ_TEMP; |
Alessio_Zaino | 0:f8a9cceb4186 | 29 | if(i2c.write(ADDR, (char*)buff_tx, 1) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 30 | if(i2c.read(ADDR, (char*)buff_rx, 2) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 31 | |
Alessio_Zaino | 0:f8a9cceb4186 | 32 | tempData = ((uint32_t)buff_rx[0] << 8) + (buff_rx[1] & 0xFC); |
Alessio_Zaino | 0:f8a9cceb4186 | 33 | tempData = (((tempData) * 21965L) >> 13) - 46850; |
Alessio_Zaino | 0:f8a9cceb4186 | 34 | |
Alessio_Zaino | 0:f8a9cceb4186 | 35 | return 1; |
Alessio_Zaino | 0:f8a9cceb4186 | 36 | } |
Alessio_Zaino | 0:f8a9cceb4186 | 37 | |
Alessio_Zaino | 0:f8a9cceb4186 | 38 | bool SI7021::check() |
Alessio_Zaino | 0:f8a9cceb4186 | 39 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 40 | buff_tx[0] = READ_ID2_1; |
Alessio_Zaino | 0:f8a9cceb4186 | 41 | buff_tx[1] = READ_ID2_2; |
Alessio_Zaino | 0:f8a9cceb4186 | 42 | if(i2c.write(ADDR, (char*)buff_tx, 2) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 43 | if(i2c.read(ADDR, (char*)buff_rx, 8) != 0) return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 44 | |
Alessio_Zaino | 0:f8a9cceb4186 | 45 | if(buff_rx[0] == DEVICE_ID) |
Alessio_Zaino | 0:f8a9cceb4186 | 46 | return true; |
Alessio_Zaino | 0:f8a9cceb4186 | 47 | else return 0; |
Alessio_Zaino | 0:f8a9cceb4186 | 48 | } |