BLE Nano - HMC5883 communication sample

Dependencies:   BLE_API mbed nRF51822

Files at this revision

API Documentation at this revision

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();