Library for the DS1721, 2-Wire Digital Thermometer and Thermostat from Dallas Semiconductor (Maxim Integrated)
DS1721.h
- Committer:
- chaegle
- Date:
- 2013-05-02
- Revision:
- 1:4fd830a97574
- Child:
- 2:22dbeccb82be
File content as of revision 1:4fd830a97574:
/*********************************************************************************** * @file DS1721.h * * @version 1.00 * @date 04/29/2013 * * @author Cameron Haegle * @company Digi International * @copyright * **********************************************************************************/ #ifndef DS1721_H #define DS1721_H #include "mbed.h" // default DS1721 I2C address #define DS1721_ADDR 0x48 // DS1721 commands #define CMD_START_CONVT 0x51 #define CMD_STOP_CONVT 0x22 #define CMD_READ_TEMP 0xAA #define CMD_ACCESS_CFG 0xAC #define CMD_ACCESS_TH 0xA1 #define CMD_ACCESS_TL 0xA2 // thermometer config register values #define CONV_FOREVER 0x00 #define CONV_ONE_SHOT 0x01 #define POLARITY_ACTIVE_LOW 0x00 #define POLARITY_ACTIVE_HIGH 0x02 #define RES_9_BIT 0x00 // 0000 #define RES_10_BIT 0x04 // 0100 #define RES_11_BIT 0x08 // 1000 #define RES_12_BIT 0x0C // 1100 // DS1721 operating modes (HEAT = active low, Cool = active high) #define MODE_HEAT POLARITY_ACTIVE_LOW #define MODE_COOL POLARITY_ACTIVE_HIGH /** * !Library for the DS1721 temperature sensor. * The DS1721 is an I2C digital temperature sensor, with a range of -55C to +125C and a 0.125C resolution. * * @code * #include "mbed.h" * #include "DS1721.h" * * #define DS1721_I2C_ADDRESS (0x48<<1) * * int main(void) { * * DS1721 thermo(PTC9, PTC8, DS1721_I2C_ADDRESS); * * // initialize the temperature sensor * thermo.startConversion(); * thermo.setLowSetpoint(25); * thermo.setHighSetpoint(27); * thermo.setPolarity(POLARITY_ACTIVE_HIGH); * * while (true) { * printf("Temp: %d\r\n", thermo.getTemp()); * } * } * @endcode **/ class DS1721 { public: /** * DS1721 constructor * * @param sda SDA pin * @param sdl SCL pin * @param addr addr of the I2C peripheral **/ DS1721(PinName sda, PinName scl, int addr); /** * DS1721 constructor * * @param sda SDA pin * @param sdl SCL pin * @param addr addr of the I2C peripheral * @param resolution readout resolution of the theremometer (9, 10, 11, 12 bit) * @param polarity the state on which the thermostat output is enabled * @param mode the temperature conversion mode (single shot or continuous) **/ DS1721(PinName sda, PinName scl, int addr,int resolution, int polarity, int mode); /*! * DS1721 destructor */ ~DS1721(); /** * Reads the temperature from the DS1721 and converts it to a useable value. * * @returns the current temperature, as in integer **/ int getTemp(void); /** * Sets the temperature polarity (POL) bit of the sensor. This bit determines * upon which set point the theremostat output is active. * * @param int the new polarity value * @returns the result of the function (0 - Failure, 1 - Success) **/ int setPolarity(int polarity); /** * Gets the temperature polarity (POL) bit of the sensor. This bit determines * upon which set point the theremostat output is active. * * @returns the value of the POL bit (0 - active low, 1 - active high) **/ int getPolarity(void); /** * Initiates a temperature conversion. If the DS1721 is configured for single shot mode * this function must be called prior to reading the temperature (re: getTemp()) * * @returns the result of the function (0 - Failure, 1 - Success) **/ int startConversion(void); /** * Stops a temperature conversion. * * @returns the result of the function (0 - Failure, 1 - Success) **/ int stopConversion(void); /** * Sets the configuration register of the DS1721. * * @param int the new configuration value (resolution | polarity | mode) * @returns the result of the function (0 - Failure, 1 - Success) **/ int setConfig(int config); /** * Retrieves the configuration register of the DS1721. * * @returns **/ int getConfig(int* config); /** * Retrieves the configured low temperature set point value. * * @returns the current low temperature set point value (degrees C) **/ int getLowSetpoint(void); /** * Sets the low temperature set point value. * * @param int the new low set point temperature (degrees C) * @returns the result of the function (0 - Failure, 1 - Success) **/ int setLowSetpoint(int newSp); /** * Retrieves the configured high temperature set point value. * * @returns the current high temperature set point value (degrees C) **/ int getHighSetpoint(void); /** * Sets the high temperature set point value. * * @param int the new high temperature set point value (degrees C) * @returns the result of the function (0 - Failure, 1 - Success) **/ int setHighSetpoint(int newSp); private: I2C m_i2c; int m_addr; int _resolution; int _polarity; int _mode; int _tl; int _num_read; int _th; }; #endif