AmbiMate Sensor Module
AMBIMATE_MS4.h
- Committer:
- mcm
- Date:
- 2021-06-03
- Revision:
- 0:8d9328d3ff35
- Child:
- 1:f0711d344f71
File content as of revision 0:8d9328d3ff35:
/** * @brief AMBIMATE_MS4.h * @details AmbiMate Sensor Module. * Header file. * * * @return NA * * @author Manuel Caballero * @date 03/June/2021 * @version 03/June/2021 The ORIGIN * @pre N/A. * @warning N/A * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). */ #ifndef AMBIMATE_MS4_H #define AMBIMATE_MS4_H #include "mbed.h" /** Example: @code @endcode */ /*! Library for the AMBIMATE_MS4 Digital humidity sensor with temperature output. */ class AMBIMATE_MS4 { public: /** * @brief DEFAULT ADDRESSES */ typedef enum { AMBIMATE_MS4_ADDRESS = ( 0x40 << 1 ) } AMBIMATE_MS4_address_t; /** * @brief COMMAND REGISTERS */ #define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_HOLD_MASTER 0xE3 #define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_HOLD_MASTER 0xE5 #define AMBIMATE_MS4_TRIGGER_TEMPERATURE_MEASUREMENT_NO_HOLD_MASTER 0xF3 #define AMBIMATE_MS4_TRIGGER_HUMIDITY_MEASUREMENT_NO_HOLD_MASTER 0xF5 #define AMBIMATE_MS4_WRITE_REGISTER 0xE6 #define AMBIMATE_MS4_READ_REGISTER 0xE7 #define AMBIMATE_MS4_SOFT_RESET 0xFE /* User Register */ /** * @brief RESOLUTION */ typedef enum { RESOLUTION_12RH_14TEMP = 0, /*!< Resolution: RH 12-bits, T 14-bits */ RESOLUTION_8RH_12TEMP = 1, /*!< Resolution: RH 8-bits, T 12-bits */ RESOLUTION_10RH_13TEMP = 2, /*!< Resolution: RH 10-bits, T 13-bits */ RESOLUTION_11RH_11TEMP = 3 /*!< Resolution: RH 11-bits, T 11-bits */ } AMBIMATE_MS4_user_register_resolution_t; /** * @brief STATUS: END OF BATTERY */ typedef enum { STATUS_END_BATTERY_HIGH_2V25 = 0, /*!< Status: RH 12-bits, T 14-bits */ STATUS_END_BATTERY_LOW_2V25 = 1 /*!< Status: RH 8-bits, T 12-bits */ } AMBIMATE_MS4_user_register_status_t; /** * @brief ON-CHIP HEATER */ typedef enum { HEATER_ENABLED = 0, /*!< Heater enabled */ HEATER_DISABLED = 1 /*!< Heater disabled */ } AMBIMATE_MS4_user_register_heater_t; /** * @brief OTP RELOAD */ typedef enum { OTP_ENABLED = 0, /*!< OTP enabled */ OTP_DISABLED = 1 /*!< OTP disabled */ } AMBIMATE_MS4_user_register_otp_t; /* Mode of working */ /** * @brief MODE */ typedef enum { MODE_HOLD_MASTER = 0, /*!< Mode Hold master */ MODE_NO_HOLD_MASTER = 1 /*!< Mode No hold master */ } AMBIMATE_MS4_master_mode_t; #ifndef VECTOR_STRUCT_H #define VECTOR_STRUCT_H typedef struct { char RawTemperature[3]; } Vector_raw_temperature_t; typedef struct { char RawHumidity[3]; } Vector_raw_humidity_t; typedef struct { float Temperature; } Vector_temperature_f; typedef struct { float Humidity; } Vector_humidity_f; #endif /** * @brief INTERNAL CONSTANTS */ typedef enum { AMBIMATE_MS4_SUCCESS = 0, AMBIMATE_MS4_FAILURE = 1, I2C_SUCCESS = 0 /*!< I2C communication was fine */ } AMBIMATE_MS4_status_t; /** Create an AMBIMATE_MS4 object connected to the specified I2C pins. * * @param sda I2C data pin * @param scl I2C clock pin * @param addr I2C slave address * @param freq I2C frequency in Hz. */ AMBIMATE_MS4 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); /** Delete AMBIMATE_MS4 object. */ ~AMBIMATE_MS4(); /** It configures the device. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_Init ( AMBIMATE_MS4_master_mode_t myMode, AMBIMATE_MS4_user_register_resolution_t myResolution, AMBIMATE_MS4_user_register_heater_t myHeater ); /** It resets the device by software. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_SoftReset ( void ); /** It triggers a new temperature measurement. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_TriggerTemperature ( void ); /** It reads the raw temperature. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadRawTemperature ( Vector_raw_temperature_t* myRawTemperature ); /** It reads the temperature. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadTemperature ( Vector_temperature_f* myTemperature ); /** It triggers a new humidity measurement. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_TriggerHumidity ( void ); /** It reads the raw humidity. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadRawHumidity ( Vector_raw_humidity_t* myRawHumidity ); /** It reads the humidity. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_ReadHumidity ( Vector_humidity_f* myHumidity ); /** It gets the battery status. */ AMBIMATE_MS4_status_t AMBIMATE_MS4_BatteryStatus ( AMBIMATE_MS4_user_register_status_t* myBattStatus ); private: I2C _i2c; uint32_t _AMBIMATE_MS4_Addr; }; #endif