Complete library for whole scientific

Dependencies:   BOX_1

Committer:
Alessio_Zaino
Date:
Mon Jun 10 13:11:48 2019 +0000
Revision:
1:dda01a024d6c
Parent:
0:f8a9cceb4186
j

Who changed what in which revision?

UserRevisionLine numberNew 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 }