example project to explain how to write a class library
test_LM75B.h@7:9a7235e5fe27, 2014-11-11 (annotated)
- Committer:
- okano
- Date:
- Tue Nov 11 00:41:14 2014 +0000
- Revision:
- 7:9a7235e5fe27
- Parent:
- 6:ab79d1157026
??????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okano | 7:9a7235e5fe27 | 1 | /** サンプルコード:ライブラリ開発の例 |
okano | 6:ab79d1157026 | 2 | * |
okano | 6:ab79d1157026 | 3 | * @author Tedd OKANO |
okano | 7:9a7235e5fe27 | 4 | * @version 1.1 |
okano | 7:9a7235e5fe27 | 5 | * @date 11-Nov-2014 |
okano | 6:ab79d1157026 | 6 | * |
okano | 7:9a7235e5fe27 | 7 | * ライブラリ開発の例として,コードをステップ・バイ・ステップで解説しています |
okano | 7:9a7235e5fe27 | 8 | * 各ステップはリポジトリ履歴で追うことができます |
okano | 7:9a7235e5fe27 | 9 | * I2Cインターフェースを持った温度センサのLM75Bをターゲットとしています |
okano | 6:ab79d1157026 | 10 | * |
okano | 7:9a7235e5fe27 | 11 | * LM75Bの詳細は |
okano | 6:ab79d1157026 | 12 | * http://www.nxp.com/documents/data_sheet/LM75B.pdf |
okano | 6:ab79d1157026 | 13 | */ |
okano | 6:ab79d1157026 | 14 | |
okano | 0:6ecb302da815 | 15 | #include "mbed.h" |
okano | 0:6ecb302da815 | 16 | |
okano | 7:9a7235e5fe27 | 17 | /** デフォルト・スレーブアドレス */ |
okano | 0:6ecb302da815 | 18 | #define ADDRESS_LM75B 0x90 |
okano | 0:6ecb302da815 | 19 | |
okano | 7:9a7235e5fe27 | 20 | /** LM75Bのレジスタ名とアドレス */ |
okano | 0:6ecb302da815 | 21 | #define LM75B_Conf 0x01 |
okano | 0:6ecb302da815 | 22 | #define LM75B_Temp 0x00 |
okano | 0:6ecb302da815 | 23 | #define LM75B_Tos 0x03 |
okano | 0:6ecb302da815 | 24 | #define LM75B_Thyst 0x02 |
okano | 0:6ecb302da815 | 25 | |
okano | 7:9a7235e5fe27 | 26 | /** test_LM75Bクラスライブラリ |
okano | 6:ab79d1157026 | 27 | * |
okano | 7:9a7235e5fe27 | 28 | * クラスライブラリは非常にシンプルなインターフェースを提供します |
okano | 6:ab79d1157026 | 29 | * |
okano | 7:9a7235e5fe27 | 30 | * コード例: |
okano | 6:ab79d1157026 | 31 | * @code |
okano | 6:ab79d1157026 | 32 | * #include "mbed.h" |
okano | 6:ab79d1157026 | 33 | * #include "test_LM75B.h" |
okano | 6:ab79d1157026 | 34 | * |
okano | 6:ab79d1157026 | 35 | * test_LM75B temp0( p28, p27 ); |
okano | 6:ab79d1157026 | 36 | * |
okano | 6:ab79d1157026 | 37 | * I2C i2c( p28, p27 ); |
okano | 6:ab79d1157026 | 38 | * test_LM75B temp1( i2c ); |
okano | 6:ab79d1157026 | 39 | * |
okano | 6:ab79d1157026 | 40 | * |
okano | 6:ab79d1157026 | 41 | * int main() |
okano | 6:ab79d1157026 | 42 | * { |
okano | 6:ab79d1157026 | 43 | * float t0; |
okano | 6:ab79d1157026 | 44 | * float t1; |
okano | 6:ab79d1157026 | 45 | * |
okano | 6:ab79d1157026 | 46 | * i2c.frequency( 400 * 1000 ); |
okano | 6:ab79d1157026 | 47 | * |
okano | 6:ab79d1157026 | 48 | * while(1) { |
okano | 6:ab79d1157026 | 49 | * t0 = temp0; |
okano | 6:ab79d1157026 | 50 | * t1 = temp1; |
okano | 6:ab79d1157026 | 51 | * printf( "temp = %7.3f, %7.3f\r\n", t0, t1 ); |
okano | 6:ab79d1157026 | 52 | * wait( 1 ); |
okano | 6:ab79d1157026 | 53 | * } |
okano | 6:ab79d1157026 | 54 | * } |
okano | 6:ab79d1157026 | 55 | * @endcode |
okano | 6:ab79d1157026 | 56 | */ |
okano | 0:6ecb302da815 | 57 | class test_LM75B |
okano | 0:6ecb302da815 | 58 | { |
okano | 0:6ecb302da815 | 59 | public: |
okano | 6:ab79d1157026 | 60 | |
okano | 7:9a7235e5fe27 | 61 | /** I2Cピンとスレーブアドレスを指定し,インスタンスを作成します |
okano | 6:ab79d1157026 | 62 | * |
okano | 7:9a7235e5fe27 | 63 | * @param sda I2C-bus SDAピン |
okano | 7:9a7235e5fe27 | 64 | * @param scl I2C-bus SCLピン |
okano | 7:9a7235e5fe27 | 65 | * @param address (オプション) I2C-bus スレーブアドレス (デフォルト: 0x90) |
okano | 6:ab79d1157026 | 66 | */ |
okano | 1:239684cd8ae9 | 67 | test_LM75B( PinName sda, PinName scl, char address = ADDRESS_LM75B ); |
okano | 6:ab79d1157026 | 68 | |
okano | 7:9a7235e5fe27 | 69 | /** I2Cオブジェクトとスレーブアドレスを指定し,インスタンスを作成します |
okano | 6:ab79d1157026 | 70 | * |
okano | 7:9a7235e5fe27 | 71 | * @param i2c_obj I2C オブジェクト (インスタンス) |
okano | 7:9a7235e5fe27 | 72 | * @param address (オプション) I2C-bus スレーブアドレス (デフォルト: 0x90) |
okano | 6:ab79d1157026 | 73 | */ |
okano | 5:863659ef0231 | 74 | test_LM75B( I2C &i2c_obj, char address = ADDRESS_LM75B ); |
okano | 6:ab79d1157026 | 75 | |
okano | 7:9a7235e5fe27 | 76 | /** デストラクタ |
okano | 6:ab79d1157026 | 77 | */ |
okano | 0:6ecb302da815 | 78 | ~test_LM75B(); |
okano | 6:ab79d1157026 | 79 | |
okano | 7:9a7235e5fe27 | 80 | /** 初期化 |
okano | 6:ab79d1157026 | 81 | */ |
okano | 1:239684cd8ae9 | 82 | void init( void ); |
okano | 6:ab79d1157026 | 83 | |
okano | 7:9a7235e5fe27 | 84 | /** 温度の読み出し |
okano | 6:ab79d1157026 | 85 | * |
okano | 7:9a7235e5fe27 | 86 | * @return 摂氏温度を返します(float型) |
okano | 6:ab79d1157026 | 87 | */ |
okano | 1:239684cd8ae9 | 88 | float read( void ); |
okano | 6:ab79d1157026 | 89 | |
okano | 7:9a7235e5fe27 | 90 | /** 温度の読み出し |
okano | 6:ab79d1157026 | 91 | * |
okano | 7:9a7235e5fe27 | 92 | * @return オブジェクトが読みだした値を返すようにしています |
okano | 6:ab79d1157026 | 93 | */ |
okano | 1:239684cd8ae9 | 94 | operator float( void ); |
okano | 6:ab79d1157026 | 95 | |
okano | 0:6ecb302da815 | 96 | private: |
okano | 5:863659ef0231 | 97 | I2C *i2c_p; |
okano | 5:863659ef0231 | 98 | I2C &i2c; |
okano | 1:239684cd8ae9 | 99 | char adr; |
okano | 0:6ecb302da815 | 100 | }; |