LM75B Digital temperature sensor and thermal watchdog

Dependents:   testLM75B testSensor TCPSocket_Client

Committer:
Rhyme
Date:
Wed Jul 06 07:02:52 2016 +0000
Revision:
0:1cf64e89f29d
Child:
1:61987c319606
First working version, only temp mode is implemented.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:1cf64e89f29d 1 #ifndef LM75B_H
Rhyme 0:1cf64e89f29d 2 #define LM75B_H
Rhyme 0:1cf64e89f29d 3
Rhyme 0:1cf64e89f29d 4 #include "mbed.h"
Rhyme 0:1cf64e89f29d 5
Rhyme 0:1cf64e89f29d 6 /**
Rhyme 0:1cf64e89f29d 7 * NXP LM75B Digital temperature sensor and thermal watchdog
Rhyme 0:1cf64e89f29d 8 *
Rhyme 0:1cf64e89f29d 9 * @code
Rhyme 0:1cf64e89f29d 10 #include "mbed.h"
Rhyme 0:1cf64e89f29d 11 #include "LM75B.h"
Rhyme 0:1cf64e89f29d 12 #define LM75B_I2C_ADDRESS (0x48)
Rhyme 0:1cf64e89f29d 13
Rhyme 0:1cf64e89f29d 14 #if defined (TARGET_KL25Z)
Rhyme 0:1cf64e89f29d 15 #define PIN_SCL PTE1
Rhyme 0:1cf64e89f29d 16 #define PIN_SDA PTE0
Rhyme 0:1cf64e89f29d 17 #elif defined (TARGET_KL46Z)
Rhyme 0:1cf64e89f29d 18 #define PIN_SCL PTE1
Rhyme 0:1cf64e89f29d 19 #define PIN_SDA PTE0
Rhyme 0:1cf64e89f29d 20 #elif defined (TARGET_K64F)
Rhyme 0:1cf64e89f29d 21 #define PIN_SCL PTE24
Rhyme 0:1cf64e89f29d 22 #define PIN_SDA PTE25
Rhyme 0:1cf64e89f29d 23 #elif defined (TARGET_K22F)
Rhyme 0:1cf64e89f29d 24 #define PIN_SCL PTE1
Rhyme 0:1cf64e89f29d 25 #define PIN_SDA PTE0
Rhyme 0:1cf64e89f29d 26 #elif defined (TARGET_KL05Z)
Rhyme 0:1cf64e89f29d 27 #define PIN_SCL PTB3
Rhyme 0:1cf64e89f29d 28 #define PIN_SDA PTB4
Rhyme 0:1cf64e89f29d 29 #elif defined (TARGET_NUCLEO_F411RE)
Rhyme 0:1cf64e89f29d 30 #define PIN_SCL PB_8
Rhyme 0:1cf64e89f29d 31 #define PIN_SDA PB_9
Rhyme 0:1cf64e89f29d 32 #else
Rhyme 0:1cf64e89f29d 33 #error TARGET NOT DEFINED
Rhyme 0:1cf64e89f29d 34 #endif
Rhyme 0:1cf64e89f29d 35
Rhyme 0:1cf64e89f29d 36 int main() {
Rhyme 0:1cf64e89f29d 37 int8_t itemp = 0 ;
Rhyme 0:1cf64e89f29d 38 float ftemp = 0.0 ;
Rhyme 0:1cf64e89f29d 39 LM75B lm75b(PIN_SDA, PIN_SCL, LM75B_I2C_ADDRESS) ;
Rhyme 0:1cf64e89f29d 40
Rhyme 0:1cf64e89f29d 41 while(1) {
Rhyme 0:1cf64e89f29d 42 itemp = lm75b->temp() ;
Rhyme 0:1cf64e89f29d 43 lm75b->getTemp(&ftemp) ;
Rhyme 0:1cf64e89f29d 44 printf("Temp = %d C degree, %.3f C degree\n", itemp, ftemp) ;
Rhyme 0:1cf64e89f29d 45 wait(1) ;
Rhyme 0:1cf64e89f29d 46 }
Rhyme 0:1cf64e89f29d 47 }
Rhyme 0:1cf64e89f29d 48 * @endcode
Rhyme 0:1cf64e89f29d 49 */
Rhyme 0:1cf64e89f29d 50 class LM75B
Rhyme 0:1cf64e89f29d 51 {
Rhyme 0:1cf64e89f29d 52 public:
Rhyme 0:1cf64e89f29d 53 /**
Rhyme 0:1cf64e89f29d 54 * LM75B constructor
Rhyme 0:1cf64e89f29d 55 *
Rhyme 0:1cf64e89f29d 56 * @param sda SDA pin
Rhyme 0:1cf64e89f29d 57 * @param sdl SCL pin
Rhyme 0:1cf64e89f29d 58 * @param addr addr of the I2C peripheral
Rhyme 0:1cf64e89f29d 59 */
Rhyme 0:1cf64e89f29d 60 LM75B(PinName sda, PinName scl, int addr);
Rhyme 0:1cf64e89f29d 61
Rhyme 0:1cf64e89f29d 62 /**
Rhyme 0:1cf64e89f29d 63 * LM75B destructor
Rhyme 0:1cf64e89f29d 64 */
Rhyme 0:1cf64e89f29d 65 ~LM75B();
Rhyme 0:1cf64e89f29d 66
Rhyme 0:1cf64e89f29d 67 int8_t temp(void) ;
Rhyme 0:1cf64e89f29d 68 void getTemp(float *temp) ;
Rhyme 0:1cf64e89f29d 69 uint8_t getConfig(uint8_t ptr_byte) ;
Rhyme 0:1cf64e89f29d 70 void setConfig(uint8_t ptr_byte, uint8_t config_data) ;
Rhyme 0:1cf64e89f29d 71
Rhyme 0:1cf64e89f29d 72 private:
Rhyme 0:1cf64e89f29d 73 I2C m_i2c;
Rhyme 0:1cf64e89f29d 74 int m_addr;
Rhyme 0:1cf64e89f29d 75 void readRegs(int addr, uint8_t * data, int len);
Rhyme 0:1cf64e89f29d 76 void writeRegs(uint8_t * data, int len);
Rhyme 0:1cf64e89f29d 77
Rhyme 0:1cf64e89f29d 78 };
Rhyme 0:1cf64e89f29d 79
Rhyme 0:1cf64e89f29d 80 #endif