This program simply connects to a HTS221 I2C device to proximity sensor

Dependencies:   FXOS8700CQ mbed

Committer:
elmkom
Date:
Mon Oct 10 16:29:34 2016 +0000
Revision:
43:3979ea0a2df3
Parent:
28:886833917643
Flush modem buffer before send

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 0:9d5134074d84 1
JMF 0:9d5134074d84 2 #ifndef HTS221_H_
JMF 0:9d5134074d84 3 #define HTS221_H_
JMF 0:9d5134074d84 4
JMF 0:9d5134074d84 5 class HTS221 {
JMF 0:9d5134074d84 6 public:
JMF 0:9d5134074d84 7 HTS221(void);
JMF 0:9d5134074d84 8 int begin(void);
JMF 0:9d5134074d84 9 int activate(void);
JMF 0:9d5134074d84 10 int deactivate(void);
JMF 0:9d5134074d84 11
JMF 0:9d5134074d84 12 int bduActivate(void);
JMF 0:9d5134074d84 13 int bduDeactivate(void);
JMF 0:9d5134074d84 14
JMF 0:9d5134074d84 15 int readHumidity(void);
JMF 0:9d5134074d84 16 double readTemperature(void);
JMF 0:9d5134074d84 17 private:
JMF 0:9d5134074d84 18 int storeCalibration(void);
JMF 0:9d5134074d84 19 unsigned char _h0_rH, _h1_rH;
JMF 0:9d5134074d84 20 unsigned int _T0_degC, _T1_degC;
JMF 0:9d5134074d84 21 unsigned int _H0_T0, _H1_T0;
JMF 0:9d5134074d84 22 unsigned int _T0_OUT, _T1_OUT;
JMF 0:9d5134074d84 23 double _temperature;
JMF 0:9d5134074d84 24 int _humidity;
JMF 0:9d5134074d84 25 unsigned char _address;
JMF 0:9d5134074d84 26
JMF 0:9d5134074d84 27 unsigned char readRegister(unsigned char slaveAddress, unsigned char regToRead);
JMF 0:9d5134074d84 28 int writeRegister(unsigned char slaveAddress, unsigned char regToWrite, unsigned char dataToWrite);
JMF 0:9d5134074d84 29 };
JMF 0:9d5134074d84 30
stefanrousseau 11:e6602513730f 31 #define HTS221_ADDRESS 0xBF
JMF 0:9d5134074d84 32
JMF 0:9d5134074d84 33 //Define a few of the registers that we will be accessing on the HTS221
JMF 0:9d5134074d84 34 #define WHO_AM_I 0x0F
JMF 0:9d5134074d84 35 #define WHO_AM_I_RETURN 0xBC //This read-only register contains the device identifier, set to BCh
JMF 0:9d5134074d84 36
JMF 0:9d5134074d84 37 #define AVERAGE_REG 0x10 // To configure humidity/temperature average.
JMF 0:9d5134074d84 38 #define AVERAGE_DEFAULT 0x1B
JMF 0:9d5134074d84 39
JMF 0:9d5134074d84 40 /*
JMF 0:9d5134074d84 41 * [7] PD: power down control
JMF 0:9d5134074d84 42 * (0: power-down mode; 1: active mode)
JMF 0:9d5134074d84 43 *
JMF 0:9d5134074d84 44 * [6:3] Reserved
JMF 0:9d5134074d84 45 *
JMF 0:9d5134074d84 46 * [2] BDU: block data update
JMF 0:9d5134074d84 47 * (0: continuous update; 1: output registers not updated until MSB and LSB reading)
JMF 0:9d5134074d84 48 The BDU bit is used to inhibit the output register update between the reading of the upper
JMF 0:9d5134074d84 49 and lower register parts. In default mode (BDU = ?0?), the lower and upper register parts are
JMF 0:9d5134074d84 50 updated continuously. If it is not certain whether the read will be faster than output data rate,
JMF 0:9d5134074d84 51 it is recommended to set the BDU bit to ?1?. In this way, after the reading of the lower (upper)
JMF 0:9d5134074d84 52 register part, the content of that output register is not updated until the upper (lower) part is
JMF 0:9d5134074d84 53 read also.
JMF 0:9d5134074d84 54 *
JMF 0:9d5134074d84 55 * [1:0] ODR1, ODR0: output data rate selection (see table 17)
JMF 0:9d5134074d84 56 */
JMF 0:9d5134074d84 57 #define CTRL_REG1 0x20
JMF 0:9d5134074d84 58 #define POWER_UP 0x80
JMF 0:9d5134074d84 59 #define BDU_SET 0x4
JMF 0:9d5134074d84 60 #define ODR0_SET 0x1 // setting sensor reading period 1Hz
JMF 0:9d5134074d84 61
JMF 0:9d5134074d84 62 #define CTRL_REG2 0x21
JMF 0:9d5134074d84 63 #define CTRL_REG3 0x22
JMF 0:9d5134074d84 64 #define REG_DEFAULT 0x00
JMF 0:9d5134074d84 65
JMF 0:9d5134074d84 66 #define STATUS_REG 0x27
JMF 0:9d5134074d84 67 #define TEMPERATURE_READY 0x1
JMF 0:9d5134074d84 68 #define HUMIDITY_READY 0x2
JMF 0:9d5134074d84 69
JMF 0:9d5134074d84 70 #define HUMIDITY_L_REG 0x28
JMF 0:9d5134074d84 71 #define HUMIDITY_H_REG 0x29
JMF 0:9d5134074d84 72 #define TEMP_L_REG 0x2A
JMF 0:9d5134074d84 73 #define TEMP_H_REG 0x2B
JMF 0:9d5134074d84 74 /*
JMF 0:9d5134074d84 75 * calibration registry should be read for temperature and humidity calculation.
JMF 0:9d5134074d84 76 * Before the first calculation of temperature and humidity,
JMF 0:9d5134074d84 77 * the master reads out the calibration coefficients.
JMF 0:9d5134074d84 78 * will do at init phase
JMF 0:9d5134074d84 79 */
JMF 0:9d5134074d84 80 #define CALIB_START 0x30
JMF 0:9d5134074d84 81 #define CALIB_END 0x3F
JMF 0:9d5134074d84 82 /*
JMF 0:9d5134074d84 83 #define CALIB_T0_DEGC_X8 0x32
JMF 0:9d5134074d84 84 #define CALIB_T1_DEGC_X8 0x33
JMF 0:9d5134074d84 85 #define CALIB_T1_T0_MSB 0x35
JMF 0:9d5134074d84 86 #define CALIB_T0_OUT_L 0x3C
JMF 0:9d5134074d84 87 #define CALIB_T0_OUT_H 0x3D
JMF 0:9d5134074d84 88 #define CALIB_T1_OUT_L 0x3E
JMF 0:9d5134074d84 89 #define CALIB_T1_OUT_H 0x3F
JMF 0:9d5134074d84 90 */
JMF 0:9d5134074d84 91
JMF 0:9d5134074d84 92 #endif