example project to explain how to write a class library

Committer:
okano
Date:
Tue Nov 11 00:41:14 2014 +0000
Revision:
7:9a7235e5fe27
Parent:
6:ab79d1157026
??????????????????

Who changed what in which revision?

UserRevisionLine numberNew 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 };