#include <LiquidCrystal.h>
#include <MPU6050.h> // подключение библиотеки
// настройка дисплея
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// настройка датчика
MPU6050 mpu; //датчик
const int COUNT = 10;
int16_t ax[COUNT];
int16_t ay[COUNT];
int16_t az[COUNT];
int16_t ax_avg, ay_avg, az_avg;
void setup() {
// отладка
Serial.begin(9600);
// настройка экрана
lcd.begin(16, 2);
lcd.setCursor(0, 0);
// настройка датчика
Wire.begin();
mpu.initialize();
Serial.println(mpu.testConnection() ? "MPU6050 OK" : "MPU6050 FAIL"); // состояние соединения
delay(1000);
}
void loop() {
getData();
ax_avg = average(ax, COUNT);
ay_avg = average(ay, COUNT);
az_avg = average(az, COUNT);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(ax_avg);
lcd.print(" ");
lcd.print(ay_avg);
lcd.print(" ");
lcd.print(az_avg);
delay(1000);
}
void getData() {
for (int i = 0; i < COUNT; ++i) {
mpu.getRotation(&ax[i], &ay[i], &az[i]);
delay(100);
}
}
int16_t average(int16_t arr[], int size) {
float sum = 0;
for (int i = 0; i < size; ++i) {
sum += (float)arr[i]/32768*250;
}
return sum / size;
}