Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
HTU21D.h
00001 /** 00002 * @brief HTU21D.h 00003 * @details Digital humidity sensor with temperature output. 00004 * Header file. 00005 * 00006 * 00007 * @return NA 00008 * 00009 * @author Manuel Caballero 00010 * @date 31/August/2017 00011 * @version 31/August/2017 The ORIGIN 00012 * @pre NaN. 00013 * @warning NaN 00014 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). 00015 */ 00016 #ifndef HTU21D_H 00017 #define HTU21D_H 00018 00019 #include "mbed.h" 00020 00021 00022 /** 00023 Example: 00024 00025 #include "mbed.h" 00026 #include "HTU21D.h" 00027 00028 HTU21D myTempRXSensor ( I2C_SDA, I2C_SCL, HTU21D::HTU21D_ADDRESS, 400000 ); 00029 Serial pc ( USBTX, USBRX ); // tx, rx 00030 00031 00032 Ticker serial; 00033 00034 DigitalOut myled(LED1); 00035 00036 HTU21D::Vector_temperature_f myTemperature; 00037 HTU21D::Vector_humidity_f myHumidity; 00038 00039 00040 00041 void sendDATA ( void ) 00042 { 00043 HTU21D::HTU21D_user_register_status_t myBatteryStatus; 00044 00045 myled = 1; 00046 00047 // Get Temperature 00048 myTempRXSensor.HTU21D_TriggerTemperature (); 00049 myTempRXSensor.HTU21D_ReadTemperature ( &myTemperature ); 00050 00051 // Get Humidity 00052 myTempRXSensor.HTU21D_TriggerHumidity (); 00053 myTempRXSensor.HTU21D_ReadHumidity ( &myHumidity ); 00054 00055 // Get Battery Status 00056 myTempRXSensor.HTU21D_BatteryStatus ( &myBatteryStatus ); 00057 00058 // Send data through the UART 00059 pc.printf( "\nTemperature: %0.01f\nHumidity: %0.01f\n", myTemperature.Temperature, myHumidity.Humidity ); 00060 00061 if ( myBatteryStatus == HTU21D::STATUS_END_BATTERY_HIGH_2V25 ) 00062 pc.printf( "Battery status higher than 2.25V\r\n" ); 00063 else 00064 pc.printf( "Battery status lower than 2.25V\r\n" ); 00065 00066 myled = 0; 00067 } 00068 00069 00070 int main() 00071 { 00072 pc.baud ( 115200 ); 00073 00074 myTempRXSensor.HTU21D_SoftReset (); 00075 myTempRXSensor.HTU21D_Init ( HTU21D::MODE_NO_HOLD_MASTER, HTU21D::RESOLUTION_12RH_14TEMP, HTU21D::HEATER_DISABLED ); 00076 00077 00078 serial.attach( &sendDATA, 1 ); // the address of the function to be attached ( sendDATA ) and the interval ( 1s ) 00079 00080 // Let the callbacks take care of everything 00081 while(1) sleep(); 00082 } 00083 */ 00084 00085 00086 /*! 00087 Library for the HTU21D Digital humidity sensor with temperature output. 00088 */ 00089 class HTU21D 00090 { 00091 public: 00092 /** 00093 * @brief DEFAULT ADDRESSES 00094 */ 00095 typedef enum { 00096 HTU21D_ADDRESS = ( 0x40 << 1 ) 00097 } HTU21D_address_t; 00098 00099 00100 /** 00101 * @brief COMMAND REGISTERS 00102 */ 00103 #define HTU21D_TRIGGER_TEMPERATURE_MEASUREMENT_HOLD_MASTER 0xE3 00104 #define HTU21D_TRIGGER_HUMIDITY_MEASUREMENT_HOLD_MASTER 0xE5 00105 #define HTU21D_TRIGGER_TEMPERATURE_MEASUREMENT_NO_HOLD_MASTER 0xF3 00106 #define HTU21D_TRIGGER_HUMIDITY_MEASUREMENT_NO_HOLD_MASTER 0xF5 00107 #define HTU21D_WRITE_REGISTER 0xE6 00108 #define HTU21D_READ_REGISTER 0xE7 00109 #define HTU21D_SOFT_RESET 0xFE 00110 00111 00112 /* User Register */ 00113 /** 00114 * @brief RESOLUTION 00115 */ 00116 typedef enum { 00117 RESOLUTION_12RH_14TEMP = 0, /*!< Resolution: RH 12-bits, T 14-bits */ 00118 RESOLUTION_8RH_12TEMP = 1, /*!< Resolution: RH 8-bits, T 12-bits */ 00119 RESOLUTION_10RH_13TEMP = 2, /*!< Resolution: RH 10-bits, T 13-bits */ 00120 RESOLUTION_11RH_11TEMP = 3 /*!< Resolution: RH 11-bits, T 11-bits */ 00121 } HTU21D_user_register_resolution_t; 00122 00123 /** 00124 * @brief STATUS: END OF BATTERY 00125 */ 00126 typedef enum { 00127 STATUS_END_BATTERY_HIGH_2V25 = 0, /*!< Status: RH 12-bits, T 14-bits */ 00128 STATUS_END_BATTERY_LOW_2V25 = 1 /*!< Status: RH 8-bits, T 12-bits */ 00129 } HTU21D_user_register_status_t; 00130 00131 /** 00132 * @brief ON-CHIP HEATER 00133 */ 00134 typedef enum { 00135 HEATER_ENABLED = 0, /*!< Heater enabled */ 00136 HEATER_DISABLED = 1 /*!< Heater disabled */ 00137 } HTU21D_user_register_heater_t; 00138 00139 /** 00140 * @brief OTP RELOAD 00141 */ 00142 typedef enum { 00143 OTP_ENABLED = 0, /*!< OTP enabled */ 00144 OTP_DISABLED = 1 /*!< OTP disabled */ 00145 } HTU21D_user_register_otp_t; 00146 00147 00148 00149 /* Mode of working */ 00150 /** 00151 * @brief MODE 00152 */ 00153 typedef enum { 00154 MODE_HOLD_MASTER = 0, /*!< Mode Hold master */ 00155 MODE_NO_HOLD_MASTER = 1 /*!< Mode No hold master */ 00156 } HTU21D_master_mode_t; 00157 00158 00159 00160 00161 00162 #ifndef VECTOR_STRUCT_H 00163 #define VECTOR_STRUCT_H 00164 typedef struct { 00165 char RawTemperature[3]; 00166 } Vector_raw_temperature_t; 00167 00168 typedef struct { 00169 char RawHumidity[3]; 00170 } Vector_raw_humidity_t; 00171 00172 typedef struct { 00173 float Temperature; 00174 } Vector_temperature_f; 00175 00176 typedef struct { 00177 float Humidity; 00178 } Vector_humidity_f; 00179 #endif 00180 00181 00182 /** 00183 * @brief INTERNAL CONSTANTS 00184 */ 00185 typedef enum { 00186 HTU21D_SUCCESS = 0, 00187 HTU21D_FAILURE = 1, 00188 I2C_SUCCESS = 0 /*!< I2C communication was fine */ 00189 } HTU21D_status_t; 00190 00191 00192 00193 00194 /** Create an HTU21D object connected to the specified I2C pins. 00195 * 00196 * @param sda I2C data pin 00197 * @param scl I2C clock pin 00198 * @param addr I2C slave address 00199 * @param freq I2C frequency in Hz. 00200 */ 00201 HTU21D ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); 00202 00203 /** Delete HTU21D object. 00204 */ 00205 ~HTU21D(); 00206 00207 /** It configures the device. 00208 */ 00209 HTU21D_status_t HTU21D_Init ( HTU21D_master_mode_t myMode, HTU21D_user_register_resolution_t myResolution, HTU21D_user_register_heater_t myHeater ); 00210 00211 /** It resets the device by software. 00212 */ 00213 HTU21D_status_t HTU21D_SoftReset ( void ); 00214 00215 /** It triggers a new temperature measurement. 00216 */ 00217 HTU21D_status_t HTU21D_TriggerTemperature ( void ); 00218 00219 /** It reads the raw temperature. 00220 */ 00221 HTU21D_status_t HTU21D_ReadRawTemperature ( Vector_raw_temperature_t* myRawTemperature ); 00222 00223 /** It reads the temperature. 00224 */ 00225 HTU21D_status_t HTU21D_ReadTemperature ( Vector_temperature_f* myTemperature ); 00226 00227 /** It triggers a new humidity measurement. 00228 */ 00229 HTU21D_status_t HTU21D_TriggerHumidity ( void ); 00230 00231 /** It reads the raw humidity. 00232 */ 00233 HTU21D_status_t HTU21D_ReadRawHumidity ( Vector_raw_humidity_t* myRawHumidity ); 00234 00235 /** It reads the humidity. 00236 */ 00237 HTU21D_status_t HTU21D_ReadHumidity ( Vector_humidity_f* myHumidity ); 00238 00239 /** It gets the battery status. 00240 */ 00241 HTU21D_status_t HTU21D_BatteryStatus ( HTU21D_user_register_status_t* myBattStatus ); 00242 00243 private: 00244 I2C i2c; 00245 uint32_t HTU21D_Addr; 00246 uint32_t HTU21D_Mode; 00247 uint32_t HTU21D_Resolution; 00248 }; 00249 00250 #endif
Generated on Mon Jul 25 2022 05:32:06 by
1.7.2