Lib to read the MCP9808 over Initialized I2C bus
MCP9808.h@0:46326feade89, 2016-04-12 (annotated)
- Committer:
- mederic
- Date:
- Tue Apr 12 09:02:48 2016 +0000
- Revision:
- 0:46326feade89
1st realease
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mederic | 0:46326feade89 | 1 | #ifndef MPC9808_H |
mederic | 0:46326feade89 | 2 | #define MPC9808_H |
mederic | 0:46326feade89 | 3 | |
mederic | 0:46326feade89 | 4 | #include "mbed.h" |
mederic | 0:46326feade89 | 5 | |
mederic | 0:46326feade89 | 6 | /** MCP9808 class. |
mederic | 0:46326feade89 | 7 | * Used for read MCP9808 ±0.5°C Maximum Accuracy Digital Temperature Sensor |
mederic | 0:46326feade89 | 8 | * |
mederic | 0:46326feade89 | 9 | * Example: |
mederic | 0:46326feade89 | 10 | * @code |
mederic | 0:46326feade89 | 11 | *#include "mbed.h" |
mederic | 0:46326feade89 | 12 | *#include "MCP9808.h" |
mederic | 0:46326feade89 | 13 | * |
mederic | 0:46326feade89 | 14 | *DigitalOut myled(LED1); |
mederic | 0:46326feade89 | 15 | *I2C i2cBus(D14,D15); |
mederic | 0:46326feade89 | 16 | *MCP9808 therm(&i2cBus, true, true, true); |
mederic | 0:46326feade89 | 17 | * |
mederic | 0:46326feade89 | 18 | *int main() |
mederic | 0:46326feade89 | 19 | *{ |
mederic | 0:46326feade89 | 20 | * while(1) |
mederic | 0:46326feade89 | 21 | * { |
mederic | 0:46326feade89 | 22 | * myled = !myled; // Toggle LED |
mederic | 0:46326feade89 | 23 | * wait(0.2); // 200 ms |
mederic | 0:46326feade89 | 24 | * printf("Temperature=%03.6f*C\r\n",therm.getTemp()); |
mederic | 0:46326feade89 | 25 | * } |
mederic | 0:46326feade89 | 26 | *} |
mederic | 0:46326feade89 | 27 | * @endcode |
mederic | 0:46326feade89 | 28 | */ |
mederic | 0:46326feade89 | 29 | class MCP9808 |
mederic | 0:46326feade89 | 30 | { |
mederic | 0:46326feade89 | 31 | public: |
mederic | 0:46326feade89 | 32 | /** Create MCP9808 instance connected to I2C bus |
mederic | 0:46326feade89 | 33 | * @param *i2c I2C bus already initialized |
mederic | 0:46326feade89 | 34 | * @param a0 bool indicate a0 pin state to compute I2C address |
mederic | 0:46326feade89 | 35 | * @param a1 bool indicate a1 pin state to compute I2C address |
mederic | 0:46326feade89 | 36 | * @param a2 bool indicate a2 pin state to compute I2C address |
mederic | 0:46326feade89 | 37 | */ |
mederic | 0:46326feade89 | 38 | MCP9808(I2C *i2c, bool a0=false, bool a1=false, bool a2=false); |
mederic | 0:46326feade89 | 39 | |
mederic | 0:46326feade89 | 40 | /**Get MCP9808 abient temperature |
mederic | 0:46326feade89 | 41 | * @returns temperature [°C] |
mederic | 0:46326feade89 | 42 | */ |
mederic | 0:46326feade89 | 43 | float getTemp(void); |
mederic | 0:46326feade89 | 44 | |
mederic | 0:46326feade89 | 45 | #ifdef MBED_OPERATORS |
mederic | 0:46326feade89 | 46 | /** An operator shorthand for getTemp() |
mederic | 0:46326feade89 | 47 | * |
mederic | 0:46326feade89 | 48 | * The float() operator can be used as a shorthand for getTemp() to simplify common code sequences |
mederic | 0:46326feade89 | 49 | * |
mederic | 0:46326feade89 | 50 | * Example: |
mederic | 0:46326feade89 | 51 | * @code |
mederic | 0:46326feade89 | 52 | * float x = therm.getTemp(); |
mederic | 0:46326feade89 | 53 | * float x = therm; |
mederic | 0:46326feade89 | 54 | * |
mederic | 0:46326feade89 | 55 | * if(therm.getTemp() > 20.25) { ... } |
mederic | 0:46326feade89 | 56 | * if(therm > 20.25) { ... } |
mederic | 0:46326feade89 | 57 | * @endcode |
mederic | 0:46326feade89 | 58 | */ |
mederic | 0:46326feade89 | 59 | operator float(){return getTemp();} |
mederic | 0:46326feade89 | 60 | #endif |
mederic | 0:46326feade89 | 61 | |
mederic | 0:46326feade89 | 62 | private: |
mederic | 0:46326feade89 | 63 | I2C *_i2c; |
mederic | 0:46326feade89 | 64 | int _addr; |
mederic | 0:46326feade89 | 65 | }; |
mederic | 0:46326feade89 | 66 | |
mederic | 0:46326feade89 | 67 | #endif |