NXP_LM75B demo code
.
このページは日本語でも記載されています.日本語版はこのページ後半をご覧ください. | This page is written in Japanese as well. Please find it in 2nd half of this page. |
What is this?
This is a sample/demo code for NXP LM75B digital temperature sensor.
The code is version 2, it has been made to reduce code redundancy of previous version and easy operation using normal TextLCD.
The connection of mbed and LM75B will be like this.
Code:
The application code is just simple. Including a header file named "NXP_LM75B.h", make an instance and read it as float.
#include "mbed.h" #include "TextLCD.h" #include "NXP_LM75B.h" NXP_LM75B temp_sensor( p9, p10, 0x9E ); // sda, scl, I2C_address(0x9E) TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3 int main() { lcd.locate( 0, 1 ); lcd.printf( " NXP LM75B demo" ); while ( 1 ) { lcd.locate( 0, 0 ); lcd.printf( "%4.1f (deg-C)", (float)temp_sensor ); wait( 1 ); } }
Note:
If more than one LM75B are used, those device should have unique I2C addresses. The I2C address of each devices can be set by its pins A2, A1 and A0 (pins 5, 6 and 7).
For each devices accesses, the I2C address from software will be 0x90 + (pin_setting << 1).
NXP_LM75B temp_sensor0( p9, p10 ); // A2=Low A1=Low A0=Low NXP_LM75B temp_sensor1( p9, p10, 0x92 ); // A2=Low A1=Low A0=High NXP_LM75B temp_sensor2( p9, p10, 0x94 ); // A2=Low A1=High A0=Low NXP_LM75B temp_sensor3( p9, p10, 0x96 ); // A2=Low A1=High A0=High NXP_LM75B temp_sensor3( p9, p10, 0x98 ); // A2=High A1=Low A0=Low ..... ... NXP_LM75B temp_sensor7( p9, p10, 0x9E ); // A2=High A1=High A0=High
The I2C bus lines should be pulled-up properly since those signals are open-drain.
Reference:
LM75B datasheet: http://www.nxp.com/pip/LM75B_2.html/
これは?
NXPのデジタル温度センサ,LM75Bのサンプル/デモコードです.
このコードはバージョン2で,先に公開していたコードを簡略化し,TextLCDを通常用いられるものに置き換えて実験しやすくしたものです.
mbedとLM75Bの接続は下のようになります.
コード:
アプリケーション・コードはシンプルです.「NXP_LM75B.h」をインクルード,インスタンスを作り,浮動小数点として値を読み取るだけです.
#include "mbed.h" #include "TextLCD.h" #include "NXP_LM75B.h" NXP_LM75B temp_sensor( p9, p10, 0x9E ); // sda, scl, I2C_address(0x9E) TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d0, d1, d2, d3 int main() { lcd.locate( 0, 1 ); lcd.printf( " NXP LM75B demo" ); while ( 1 ) { lcd.locate( 0, 0 ); lcd.printf( "%4.1f (deg-C)", (float)temp_sensor ); wait( 1 ); } }
注意:
複数のLM75Bを同じI2Cバスに接続する場合,各デバイスには個別のI2Cアドレスを割り振らなければなりません.このアドレスは各デバイスのA2,A1,A0ピン(ピン5, 6, 7)で設定することができます.
ソフトウェアから見て各デバイスのI2Cアドレスは"0x90 + (pin_setting << 1)"のようになります.
NXP_LM75B temp_sensor0( p9, p10 ); // A2=Low A1=Low A0=Low NXP_LM75B temp_sensor1( p9, p10, 0x92 ); // A2=Low A1=Low A0=High NXP_LM75B temp_sensor2( p9, p10, 0x94 ); // A2=Low A1=High A0=Low NXP_LM75B temp_sensor3( p9, p10, 0x96 ); // A2=Low A1=High A0=High NXP_LM75B temp_sensor3( p9, p10, 0x98 ); // A2=High A1=Low A0=Low ..... ... NXP_LM75B temp_sensor7( p9, p10, 0x9E ); // A2=High A1=High A0=High
I2Cバスの信号線はオープンドレインなので,プルアップ抵抗を忘れないようにしてください.
参考:
LM75Bデータシート: http://www.nxp.com/pip/LM75B_2.html/
0 comments
You need to log in to post a comment