
Hello code for "Switch Science mbed LPC824"
Fork of SwitchSciencembedLPC824_test by
TempSensor_LM75B.h@11:7e4aa2823fad, 2014-12-19 (annotated)
- Committer:
- switchscience
- Date:
- Fri Dec 19 09:39:31 2014 +0000
- Revision:
- 11:7e4aa2823fad
- Parent:
- 9:e2333773718f
Hello code for "Switch Science mbed LPC824"
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
asagin | 9:e2333773718f | 1 | /* |
asagin | 9:e2333773718f | 2 | * I2C digital temperature sensor "LM75B" library |
asagin | 9:e2333773718f | 3 | * |
asagin | 9:e2333773718f | 4 | * LM75B is an I2C based digital temperature sensor |
asagin | 9:e2333773718f | 5 | * http://www.nxp.com/pip/LM75B_2.html |
asagin | 9:e2333773718f | 6 | * |
asagin | 9:e2333773718f | 7 | * This is a library to operate this chip easy. |
asagin | 9:e2333773718f | 8 | * |
asagin | 9:e2333773718f | 9 | * Copyright (c) 2010 Tedd OKANO |
asagin | 9:e2333773718f | 10 | * Released under the MIT License: http://mbed.org/license/mit |
asagin | 9:e2333773718f | 11 | * |
asagin | 9:e2333773718f | 12 | * revision 1.0 16-Jan-2010 a. 1st release |
asagin | 9:e2333773718f | 13 | * revision 1.1 23-Jan-2010 a. class name has been changed from LM75B to TempSensor_LM75B |
asagin | 9:e2333773718f | 14 | * b. copyright notice added |
asagin | 9:e2333773718f | 15 | */ |
asagin | 9:e2333773718f | 16 | |
asagin | 9:e2333773718f | 17 | #ifndef MBED_TempSensor_LM75B |
asagin | 9:e2333773718f | 18 | #define MBED_TempSensor_LM75B |
asagin | 9:e2333773718f | 19 | |
asagin | 9:e2333773718f | 20 | |
asagin | 9:e2333773718f | 21 | #include "mbed.h" |
asagin | 9:e2333773718f | 22 | #include "I2cBusDevice.h" |
asagin | 9:e2333773718f | 23 | |
asagin | 9:e2333773718f | 24 | |
asagin | 9:e2333773718f | 25 | // LM75B IIC address |
asagin | 9:e2333773718f | 26 | const char LM75B_base_addr = 0x90; |
asagin | 9:e2333773718f | 27 | |
asagin | 9:e2333773718f | 28 | // LM75B registers |
asagin | 9:e2333773718f | 29 | const char Conf = 0x01; |
asagin | 9:e2333773718f | 30 | const char Temp = 0x00; |
asagin | 9:e2333773718f | 31 | const char Tos = 0x03; |
asagin | 9:e2333773718f | 32 | const char Thyst = 0x02; |
asagin | 9:e2333773718f | 33 | |
asagin | 9:e2333773718f | 34 | |
asagin | 9:e2333773718f | 35 | class TempSensor_LM75B : I2cBusDevice { |
asagin | 9:e2333773718f | 36 | public: |
asagin | 9:e2333773718f | 37 | |
asagin | 9:e2333773718f | 38 | TempSensor_LM75B( I2C *i2c, char dev_address = LM75B_base_addr, char vConf = 0x00, short vTos = 0x5000, short vThyst = 0x4B00 ) : I2cBusDevice( i2c, dev_address ) { |
asagin | 9:e2333773718f | 39 | char data[ 3 ]; |
asagin | 9:e2333773718f | 40 | |
asagin | 9:e2333773718f | 41 | data[ 0 ] = Conf; |
asagin | 9:e2333773718f | 42 | data[ 1 ] = vConf; |
asagin | 9:e2333773718f | 43 | |
asagin | 9:e2333773718f | 44 | if ( write( data, 2 ) ) |
asagin | 9:e2333773718f | 45 | ; |
asagin | 9:e2333773718f | 46 | |
asagin | 9:e2333773718f | 47 | data[ 0 ] = Tos; |
asagin | 9:e2333773718f | 48 | data[ 1 ] = (char)(vTos >> 8); |
asagin | 9:e2333773718f | 49 | data[ 2 ] = (char)vTos; |
asagin | 9:e2333773718f | 50 | |
asagin | 9:e2333773718f | 51 | if ( write( data, 3 ) ) |
asagin | 9:e2333773718f | 52 | ; |
asagin | 9:e2333773718f | 53 | |
asagin | 9:e2333773718f | 54 | data[ 0 ] = Thyst; |
asagin | 9:e2333773718f | 55 | data[ 1 ] = (char)(vThyst >> 8); |
asagin | 9:e2333773718f | 56 | data[ 2 ] = (char)vThyst; |
asagin | 9:e2333773718f | 57 | |
asagin | 9:e2333773718f | 58 | if ( write( data, 3 ) ) |
asagin | 9:e2333773718f | 59 | ; |
asagin | 9:e2333773718f | 60 | } |
asagin | 9:e2333773718f | 61 | |
asagin | 9:e2333773718f | 62 | ~TempSensor_LM75B() { |
asagin | 9:e2333773718f | 63 | } |
asagin | 9:e2333773718f | 64 | |
asagin | 9:e2333773718f | 65 | int temp_short( void ) { |
asagin | 9:e2333773718f | 66 | char data[ 2 ]; |
asagin | 9:e2333773718f | 67 | |
asagin | 9:e2333773718f | 68 | if ( read( Temp, data, 2 ) ) |
asagin | 9:e2333773718f | 69 | return ( 1e6 ); |
asagin | 9:e2333773718f | 70 | |
asagin | 9:e2333773718f | 71 | return ( (((short)data[ 0 ]) << 8 | data[ 1 ]) >> 5 ); |
asagin | 9:e2333773718f | 72 | } |
asagin | 9:e2333773718f | 73 | |
asagin | 9:e2333773718f | 74 | float temp( void ) { |
asagin | 9:e2333773718f | 75 | return ( (float)(temp_short()) / 8.0 ); |
asagin | 9:e2333773718f | 76 | } |
asagin | 9:e2333773718f | 77 | |
asagin | 9:e2333773718f | 78 | operator float( void ) { |
asagin | 9:e2333773718f | 79 | return( temp() ); |
asagin | 9:e2333773718f | 80 | } |
asagin | 9:e2333773718f | 81 | |
asagin | 9:e2333773718f | 82 | #if 0 |
asagin | 9:e2333773718f | 83 | operator short( void ) { |
asagin | 9:e2333773718f | 84 | return( temp_short() ); |
asagin | 9:e2333773718f | 85 | } |
asagin | 9:e2333773718f | 86 | #endif |
asagin | 9:e2333773718f | 87 | |
asagin | 9:e2333773718f | 88 | |
asagin | 9:e2333773718f | 89 | |
asagin | 9:e2333773718f | 90 | private: |
asagin | 9:e2333773718f | 91 | } |
asagin | 9:e2333773718f | 92 | ; |
asagin | 9:e2333773718f | 93 | |
asagin | 9:e2333773718f | 94 | #endif |