Dependencies:   mbed

Committer:
okano
Date:
Sat Jan 23 13:45:00 2010 +0000
Revision:
0:b1a5601983d4

        

Who changed what in which revision?

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