Кароч, вот етот код должон выдавать углы в градусах, но почему-то он етого не делает: Код (C++): #include <MPU9250.h> MPU9250 IMU(Wire, 0x68); float gx; float gy; float gz; float itogX; float itogY; float itogZ; int timer; int timer2; void setup() { int status; status = IMU.begin(); Serial.begin(9600); Serial.println(status); status = IMU.calibrateGyro(); } void loop() { timer2 = millis(); IMU.readSensor(); gx = IMU.getGyroX_rads (); gy = IMU.getGyroY_rads (); gz = IMU.getGyroZ_rads (); delay(2); timer = millis() - timer2; itogX = gx*timer/1000*180/3.14 + itogX ; itogY = gy*timer/1000*180/3.14 + itogY ; itogZ = gz*timer/1000*180/3.14 + itogZ ; Serial.print("x:"); Serial.print(itogX,9); Serial.print(" "); Serial.print("y:"); Serial.print(itogY,9); Serial.print(" "); Serial.print("z:"); Serial.print(itogZ,9); Serial.println(" "); }
Написан мной, должон читать данные с MPU 9250 и преобразовывать их в градусы, но в результате выводит что-то не особо вразумительное
Состояние покоя: x:-0.000053288 y:0.002831685 z:0.001671403 Повернул на 90 градусов: x:0.180954380 y:-5.645452499 z:0.513578510
в формуле как минимум скобок не хватает, должно быть itogX = gx*(timer/1000)*(180/3.14) + itogX ; - и это нефига не то же самое, что без скобок Это еще далеко не все, есть и другие ошибки - например формула очень пприблизительная, будет все округлять до секунд. Переменная таймера не той размерности и тд...