
BLE Nano - HMC5883 communication sample
Dependencies: BLE_API mbed nRF51822
Revision 1:aa93d2588721, committed 2015-10-27
- Comitter:
- AkihiroMasuda
- Date:
- Tue Oct 27 09:54:25 2015 +0000
- Parent:
- 0:31c9498472f6
- Commit message:
- edit
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sun Oct 11 03:07:55 2015 +0000 +++ b/main.cpp Tue Oct 27 09:54:25 2015 +0000 @@ -23,16 +23,19 @@ characteristics, //キャラクタリスティックの集合 char_num ); //キャラクタリスティック数 -/** 地磁気センサ HMC5883L I2C通信用変数定義 **/ -I2C i2c(p10, p8); // I2C設定。SDAにポート10、SCLにポート8 -DigitalOut ctrlPin1(p28); //センサ1 ON/OFF制御ポート -DigitalOut ctrlPin2(p29); //センサ2 ON/OFF制御ポート - -const int i2cAddr = 0x3C; // HCM5883 I2C Address +/* HMC5883L I2C通信用変数定義 */ +// I2C設定。SDA=ピン10、SCL=ピン8 +I2C i2c(p10, p8); +//センサ1 ON/OFF制御=ピン28 +DigitalOut ctrlPin1(p28); +//センサ2 ON/OFF制御=ピン29 +DigitalOut ctrlPin2(p29); +// HCM5883 I2C Address +const int i2cAddr = 0x3C; /* 指定番号のセンサを有効にする */ -void enableSensor(int number){ - if (number==1){ +void enableSensor(int num){ + if (num==1){ ctrlPin1 = 1; ctrlPin2 = 0; }else{ @@ -42,28 +45,33 @@ } /* センサを初期化する */ -void initSensor(int number){ +void initSensor(int num){ // 有効センサの指定 - enableSensor(number); - - // Continuous-Measurement モードに設定 + enableSensor(num); + /* モードレジスタ設定 */ + /* Continuous-Measurement にする */ char cmd[2]; - cmd[0] = 0x02; // モードレジスタのアドレスを指定 - cmd[1] = 0x00; // モードレジスタに書き込む値を指定。Continuous-Measurement モードは0x00。 - i2c.write(i2cAddr, cmd, 2); // コマンド送信 + // モードレジスタのアドレス + cmd[0] = 0x02; + // モードレジスタに書き込む値。 + cmd[1] = 0x00; + // コマンド送信 + i2c.write(i2cAddr, cmd, 2); } /* センサ値を取得する */ -void readSensor(uint8_t* buf, int number){ +void readSensor(char* buf, int num){ // 有効センサの指定 - enableSensor(number); - - // センサ値取得 + enableSensor(num); + /* センサ値取得 */ char cmd[1]; - cmd[0] = 0x3; //センサ値取得用レジスタのアドレスを指定 - i2c.write(i2cAddr, cmd, 1); //コマンド送信 - i2c.read(i2cAddr | 1, (char*)buf, 6); //6バイト分データ(X,Z,Y軸の順に各2バイト)を読み取る - + //センサ値取得用レジスタのアドレス + cmd[0] = 0x3; + //コマンド送信 + i2c.write(i2cAddr, cmd, 1); + //6バイト分データを読み取る + //X,Z,Y軸の順に各2バイト + i2c.read(i2cAddr|1, buf, 6); } /* BLE接続切断時のコールバック */ @@ -83,8 +91,8 @@ /* タイマーによるコールバック関数 */ void periodicCallback(void){ // 2つのセンサ値を取得 - readSensor(&(char1_val[0]), 1); - readSensor(&(char1_val[6]), 2); + readSensor((char*)&(char1_val[0]), 1); + readSensor((char*)&(char1_val[6]), 2); // キャラクタリスティック値の更新 GattAttribute::Handle_t handle = char1.getValueAttribute().getHandle();