I2C通信を使用した角速度測定、LCD表示サンプル

Dependencies:   mbed mbed_mpu6050_i2c_raw_register AQM0802

Revision:
4:bf507fe18cb2
Parent:
3:ebd656a9c89f
Child:
5:8c482bdfb9e8
--- a/main.cpp	Thu Dec 13 15:35:41 2018 +0000
+++ b/main.cpp	Fri Jul 19 10:37:29 2019 +0000
@@ -1,45 +1,29 @@
 #include "mbed.h"
+#include "AQM0802.h"
 #include "mpu6050.h"
 
 Serial pc(USBTX, USBRX);
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-DigitalOut led3(LED3);
-DigitalOut led4(LED4);
-MPU6050 mpu(p9, p10);
-
-void turnOffAllLed()
-{
-    led1 = 0;
-    led2 = 0;
-    led3 = 0;
-    led4 = 0;
-}
-
-void readData()
-{
-    double ax, ay, az;
-    mpu.readAccelemeter(ax, ay, az);
-    double gx, gy, gz;
-    mpu.readGyroscope(gx, gy, gz);
-    pc.printf("%.4lf %.4lf %.4lf %.4lf %.4lf %.4lf\r\n", ax, ay, az, gx, gy, gz);
-    turnOffAllLed();
-    if(ax > ay && ax > az) {
-        led1 = 1;
-    } else if(ay > ax && ay > az) {
-        led2 = 1;
-    } else if(az > ax && az > ay) {
-        led3 = 1;
-    } else {
-        led4 = 1;
-    }
-}
+MPU6050 mpu(D4, D5);
+AQM0802 lcd(I2C_SDA,I2C_SCL);
 
 int main() {
-    pc.baud(115200);
-    mpu.setMaxScale(MAX_ACC_8G, MAX_GYRO_1000degpersec);
+    double gx,gy,gz;    //Z角速度情報を格納
+    int i_gz;
+    char str[5];
+    pc.baud(9600);
+    mpu.setMaxScale(MAX_ACC_8G, MAX_GYRO_1000degpersec);//[1000deg/sec]を測定上限とする。
+    lcd.init();
+    lcd.locate(1,0);//桁、行
+    lcd.print("GYRO_Z");//1行目に「GYRO_Z」を表示        
     while(true) {
-        readData();
+        mpu.readGyroscope(gx, gy, gz);//関数仕様上3軸すべて角速度取得する。
+        i_gz=(int)gz;//doubleは大きすぎるのでint型へ変換
+        pc.printf("gz:%d\r\n", i_gz);//Z軸方向のみ表示する。(他は使わない)
+        lcd.locate(1,1);//桁、行
+        lcd.print("     ");//表示クリア
+        sprintf(str,"%4d",i_gz);
+        lcd.locate(1,1);//桁、行
+        lcd.print(str);//表示クリア                 
         wait(0.2);
     }
 }