#include "Wire.h" //подключение библиотеки для работы с I2C
const int MPU_addr = 0x68; // адрес датчика
// массив данных
// [accX, accY, accZ, temp, gyrX, gyrY, gyrZ]
// acc - ускорение, gyr - угловая скорость, temp - температура (raw)
int16_t data[7];
void setup() {
Wire.begin();
Wire.beginTransmission(MPU_addr);
Wire.write(0x6B); // адрес регистра PWR_MGMT_1
Wire.write(0); // 0 - разрешение работы
Wire.endTransmission(true);
Serial.begin(9600); // для отладки
}
void loop() {
getData(); // получаем данные
for (byte i = 0; i < 7; ++i) { // выводим данные в отладку
Serial.print(data[i]);
Serial.print('\t');
}
Serial.println();
delay(1000);
}
// функция чтения данных по I2C
void getData() {
Wire.beginTransmission(MPU_addr);
Wire.write(0x3B); // установка начального регистра ACCEL_XOUT_H
Wire.endTransmission(false); //передача данных без установки состояния STOP
Wire.requestFrom(MPU_addr, 14, true); // запрос 14 байтов
for (byte i = 0; i < 7; ++i) { // считывание данных
data[i] = Wire.read() << 8 | Wire.read();
}
}