|
MPU6050模塊應(yīng)用于零知平臺(tái),使用該模塊測(cè)量三軸加速度和三軸陀螺儀數(shù)據(jù)。
硬件準(zhǔn)備
(1)零知開發(fā)板-標(biāo)準(zhǔn)板
好看的標(biāo)準(zhǔn)板 (2).jpg (95.5 KB, 下載次數(shù): 50)
下載附件
2019-5-24 15:12 上傳
(2)MPU6050模塊
MPU6050模塊.png (298.93 KB, 下載次數(shù): 53)
下載附件
2019-5-24 15:11 上傳
(3)杜邦線若干
1、電路連接
模塊的SCL和SDA分別與零知標(biāo)準(zhǔn)板的I2C接口連接即A5和A4腳,供電3.3V,其他腳默認(rèn)。
接線.png (289.79 KB, 下載次數(shù): 47)
下載附件
2019-5-24 15:14 上傳
2、程序燒錄
打開零知開發(fā)工具,找到相應(yīng)代碼即可。
零知界面.png (73.3 KB, 下載次數(shù): 50)
下載附件
2019-5-24 15:15 上傳
界面.png (118.76 KB, 下載次數(shù): 53)
下載附件
2019-5-24 15:15 上傳
3、核心代碼如下:
- /* I2C interface MPU6050 demo
- * powered by 零知實(shí)驗(yàn)室
- */
- #include "MPU6050.h"
-
- // 默認(rèn)I2C地址為 0x68
- // AD0 low = 0x68
- // AD0 high = 0x69
-
- MPU6050 accelgyro;
-
- int16_t ax, ay, az;//三軸加速度值
- int16_t gx, gy, gz;//三軸陀螺儀值
-
- float nax,nay,naz;
- float ngx,ngy,ngz;//轉(zhuǎn)換后的實(shí)際值
-
- #define LED_PIN LED_BUILTIN
- bool blinkState = false;
-
- void setup() {
-
- Serial.begin(9600);
-
- // MPU6050初始化設(shè)置
- Serial.println("Initializing I2C devices...");
- accelgyro.initialize();
-
- // verify connection
- Serial.println("Testing device connections...");
- if(accelgyro.testConnection()){
- Serial.println("MPU6050 connection successful");
- }else{
- Serial.println("MPU6050 connection failed");
- }
-
- //使用LED進(jìn)行指示
- pinMode(LED_PIN, OUTPUT);
-
- // accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度參數(shù)
- // accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺儀
- }
-
- void loop() {
- // 獲取原始的數(shù)值:三軸加速度值和三軸陀螺儀數(shù)值
- accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
-
- // 分別獲取
- //accelgyro.getAcceleration(&ax, &ay, &az);
- //accelgyro.getRotation(&gx, &gy, &gz);
-
- // 顯示打印
- Serial.print(" acc:\t");
- Serial.print(ax); Serial.print("\t");
- Serial.print(ay); Serial.print("\t");
- Serial.print(az); Serial.print("\t");
- Serial.print("\t gyro:\t");
- Serial.print(gx); Serial.print("\t");
- Serial.print(gy); Serial.print("\t");
- Serial.println(gz);
-
- //實(shí)際數(shù)值轉(zhuǎn)換
- accelgyro.readNormalizeAccel(&nax,&nay,&naz);
- accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
- Serial.print("Normalize acc:\t");
- Serial.print(nax); Serial.print("\t");
- Serial.print(nay); Serial.print("\t");
- Serial.print(naz); Serial.print("\t");
- Serial.print("\t Normalize gyro:\t");
- Serial.print(ngx); Serial.print("\t");
- Serial.print(ngy); Serial.print("\t");
- Serial.println(ngz);
-
- // blink LED to indicate activity
- blinkState = !blinkState;
- digitalWrite(LED_PIN, blinkState);
-
- delay(300);
- }
復(fù)制代碼 完整工程可到零知實(shí)驗(yàn)室官網(wǎng)免費(fèi)獲取。
4、當(dāng)我們讀取到原始數(shù)值后需要進(jìn)行轉(zhuǎn)換才能得到實(shí)際的值,完整代碼已經(jīng)做了轉(zhuǎn)換,結(jié)果如下:
結(jié)果.png (169.95 KB, 下載次數(shù): 51)
下載附件
2019-5-24 15:17 上傳
更多詳細(xì)資料可到零知實(shí)驗(yàn)室官網(wǎng)免費(fèi)獲取。
|
|