Thermometer indicating temperature and humidity by LED blink pattern

Dependencies:   BLE_API mbed nRF51822

Committer:
HiroyukiIzumi
Date:
Fri Jun 17 01:55:11 2016 +0000
Revision:
0:8d05f1ced202
Thermometer indicating temperature and humidity by LED blink pattern

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HiroyukiIzumi 0:8d05f1ced202 1 /* Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved.
HiroyukiIzumi 0:8d05f1ced202 2 *
HiroyukiIzumi 0:8d05f1ced202 3 * The information contained herein is property of Nordic Semiconductor ASA.
HiroyukiIzumi 0:8d05f1ced202 4 * Terms and conditions of usage are described in detail in NORDIC
HiroyukiIzumi 0:8d05f1ced202 5 * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
HiroyukiIzumi 0:8d05f1ced202 6 *
HiroyukiIzumi 0:8d05f1ced202 7 * Licensees are granted free, non-transferable use of the information. NO
HiroyukiIzumi 0:8d05f1ced202 8 * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
HiroyukiIzumi 0:8d05f1ced202 9 * the file.
HiroyukiIzumi 0:8d05f1ced202 10 *
HiroyukiIzumi 0:8d05f1ced202 11 */
HiroyukiIzumi 0:8d05f1ced202 12
HiroyukiIzumi 0:8d05f1ced202 13 #ifndef HTS221_H
HiroyukiIzumi 0:8d05f1ced202 14 #define HTS221_H
HiroyukiIzumi 0:8d05f1ced202 15
HiroyukiIzumi 0:8d05f1ced202 16 /*lint ++flb "Enter library region" */
HiroyukiIzumi 0:8d05f1ced202 17
HiroyukiIzumi 0:8d05f1ced202 18 #include <stdbool.h>
HiroyukiIzumi 0:8d05f1ced202 19 #include <stdint.h>
HiroyukiIzumi 0:8d05f1ced202 20
HiroyukiIzumi 0:8d05f1ced202 21 #define ADDRESS_WHO_AM_I (0x0FU) //!< WHO_AM_I register identifies the device. Expected value is 0xBC.
HiroyukiIzumi 0:8d05f1ced202 22
HiroyukiIzumi 0:8d05f1ced202 23 #define HTS221_WriteADDE 0xBE
HiroyukiIzumi 0:8d05f1ced202 24 #define HTS221_ReadADDE 0xBF
HiroyukiIzumi 0:8d05f1ced202 25 #define HTS221_TempHumi_OUT 0x28
HiroyukiIzumi 0:8d05f1ced202 26 #define HTS221_CALIB 0x30
HiroyukiIzumi 0:8d05f1ced202 27
HiroyukiIzumi 0:8d05f1ced202 28 #define MaxTemp 120
HiroyukiIzumi 0:8d05f1ced202 29 #define MinTemp -40
HiroyukiIzumi 0:8d05f1ced202 30 #define MaxHumi 100
HiroyukiIzumi 0:8d05f1ced202 31 #define MinHumi 0
HiroyukiIzumi 0:8d05f1ced202 32
HiroyukiIzumi 0:8d05f1ced202 33 // Humidity and temperature resolution mode, to ocnfigure sample average
HiroyukiIzumi 0:8d05f1ced202 34 #define TRes_1 000 // Number of temperature samples take 2^1, TRes_2 take 2^2, and so forth.
HiroyukiIzumi 0:8d05f1ced202 35 #define TRes_2 001
HiroyukiIzumi 0:8d05f1ced202 36 #define TRes_3 010
HiroyukiIzumi 0:8d05f1ced202 37 #define TRes_4 011
HiroyukiIzumi 0:8d05f1ced202 38 #define TRes_5 100
HiroyukiIzumi 0:8d05f1ced202 39 #define TRes_6 101
HiroyukiIzumi 0:8d05f1ced202 40 #define TRes_7 102
HiroyukiIzumi 0:8d05f1ced202 41 #define TRes_8 103
HiroyukiIzumi 0:8d05f1ced202 42
HiroyukiIzumi 0:8d05f1ced202 43 #define HRes_2 000 // Number of humidity samples take 2^2, HRes_3 take 2^3, and so forth.
HiroyukiIzumi 0:8d05f1ced202 44 #define HRes_3 001
HiroyukiIzumi 0:8d05f1ced202 45 #define HRes_4 010
HiroyukiIzumi 0:8d05f1ced202 46 #define HRes_5 011
HiroyukiIzumi 0:8d05f1ced202 47 #define HRes_6 100
HiroyukiIzumi 0:8d05f1ced202 48 #define HRes_7 101
HiroyukiIzumi 0:8d05f1ced202 49 #define HRes_8 102
HiroyukiIzumi 0:8d05f1ced202 50 #define HRes_9 103
HiroyukiIzumi 0:8d05f1ced202 51
HiroyukiIzumi 0:8d05f1ced202 52 // Control register 1
HiroyukiIzumi 0:8d05f1ced202 53 #define PD_On 0x80 // Power down mode
HiroyukiIzumi 0:8d05f1ced202 54 #define PD_Off 0x00 // Active mode
HiroyukiIzumi 0:8d05f1ced202 55
HiroyukiIzumi 0:8d05f1ced202 56 #define BDU_On 0x04 // Block data update, this feature prevents the reading of LSB and MSB related to different samples.
HiroyukiIzumi 0:8d05f1ced202 57 #define BDU_Off 0x00
HiroyukiIzumi 0:8d05f1ced202 58 // Define output data rate
HiroyukiIzumi 0:8d05f1ced202 59 #define ODR_OneShot 0x00
HiroyukiIzumi 0:8d05f1ced202 60 #define ODR_1Hz 0x01
HiroyukiIzumi 0:8d05f1ced202 61 #define ODR_7Hz 0x02
HiroyukiIzumi 0:8d05f1ced202 62 #define ODR_12_5Hz 0x03
HiroyukiIzumi 0:8d05f1ced202 63 // Control register 2
HiroyukiIzumi 0:8d05f1ced202 64 #define Boot 0x80
HiroyukiIzumi 0:8d05f1ced202 65 #define NoBoot 0x00
HiroyukiIzumi 0:8d05f1ced202 66 #define HeaterOn 0x02
HiroyukiIzumi 0:8d05f1ced202 67 #define HeaterOff 0x00
HiroyukiIzumi 0:8d05f1ced202 68 #define New_OS 0x01 // One shot, a single acquisition of temperature and humidity is started
HiroyukiIzumi 0:8d05f1ced202 69 #define No_OS 0x00
HiroyukiIzumi 0:8d05f1ced202 70 // Control register 3
HiroyukiIzumi 0:8d05f1ced202 71 #define DRDY_H 0x00 // Data Ready output signal active high(default)
HiroyukiIzumi 0:8d05f1ced202 72 #define DRDY_L 0x80 // Data Ready output signal active low
HiroyukiIzumi 0:8d05f1ced202 73 #define PP_OD_PP 0x00 // Push-pull on PIN3(DRDY)(default)
HiroyukiIzumi 0:8d05f1ced202 74 #define PP_OD_OD 0x40 // Open Drain on PIN3(DRDY)
HiroyukiIzumi 0:8d05f1ced202 75 #define DRDY_EN 0x04 // Data Ready enable
HiroyukiIzumi 0:8d05f1ced202 76 #define DRDY_NON 0x00 // Data Ready disable(default)
HiroyukiIzumi 0:8d05f1ced202 77
HiroyukiIzumi 0:8d05f1ced202 78 // Status register
HiroyukiIzumi 0:8d05f1ced202 79 #define H_DA_On 0x02 // Humidity data avialable, set to 1 whenever a new humidity sample is available.
HiroyukiIzumi 0:8d05f1ced202 80 #define H_DA_Off 0x00
HiroyukiIzumi 0:8d05f1ced202 81 #define T_DA_On 0x01 // Temperature data avialable, set to 1 whenever a new humidity sample is available.
HiroyukiIzumi 0:8d05f1ced202 82 #define T_DA_Off 0x00
HiroyukiIzumi 0:8d05f1ced202 83
HiroyukiIzumi 0:8d05f1ced202 84 bool hts221_init(void);
HiroyukiIzumi 0:8d05f1ced202 85
HiroyukiIzumi 0:8d05f1ced202 86 void hts221_register_write(uint8_t register_address, const uint8_t value);
HiroyukiIzumi 0:8d05f1ced202 87
HiroyukiIzumi 0:8d05f1ced202 88 void hts221_register_read(char register_address, char *destination, uint8_t number_of_bytes);
HiroyukiIzumi 0:8d05f1ced202 89
HiroyukiIzumi 0:8d05f1ced202 90 bool hts221_verify_product_id(void);
HiroyukiIzumi 0:8d05f1ced202 91
HiroyukiIzumi 0:8d05f1ced202 92 void HTS221_Calib(void);
HiroyukiIzumi 0:8d05f1ced202 93
HiroyukiIzumi 0:8d05f1ced202 94 void HTS221_ReadTempHumi( float *pTemp , float *pHumi);
HiroyukiIzumi 0:8d05f1ced202 95
HiroyukiIzumi 0:8d05f1ced202 96 float linear_interpolation(int16_t x0, float y0, int16_t x1, float y1, float mes);
HiroyukiIzumi 0:8d05f1ced202 97
HiroyukiIzumi 0:8d05f1ced202 98 #endif /* HTS221_H */
HiroyukiIzumi 0:8d05f1ced202 99