
MPUとHMCでうごくかもver
Dependencies: ConfigFile SDFileSystem mbed
Fork of LAURUS_program by
MPU6050/MPU6050.cpp
- Committer:
- YusukeWakuta
- Date:
- 2015-12-26
- Revision:
- 43:3a37e39b234c
- Parent:
- 38:ada39f1c6c76
File content as of revision 43:3a37e39b234c:
#include "mbed.h" #include "MPU6050.h" MPU6050::MPU6050(I2C* p_i2c): i2c(p_i2c){ } MPU6050::~MPU6050() { i2c = NULL; } int MPU6050::init() { // スリープモード解除 char cmd[2] = {0x6b, 0x00}; int ret = i2c->write(mpu_addr, cmd, 2); if(ret != 0) return 0; // ジャイロのレンジを500deg/sに設定 char data = 0; cmd[0] = 0x1b; ret = i2c->write(mpu_addr, cmd, 1, true); if(ret != 0) return 0; i2c->read(mpu_addr | 0x01, &data, 1, false); cmd[1] = data | 0x08; ret = i2c->write(mpu_addr, cmd, 2); if(ret != 0) return 0; //12月19日18:45時点:上のどっかで0が返されてしまっているらしい return 1; } int MPU6050::read() { char cmd[1] = {0x3b}; int val; int ret = i2c->write(mpu_addr, cmd, 1, true); if(ret != 0) return 0; val = i2c->read(mpu_addr | 0x01, (char*)data.reg, 14, false); checker_set(val); // データのHとLが逆に読み込まれているのでスワップする for(int i=0; i<7; i++) { uint8_t temp = 0; temp = data.reg[i*2]; data.reg[i*2] = data.reg[i*2+1]; data.reg[i*2+1] = temp; } return 1; }