Программирование акселлерометра на Delphi XE3
От: Самоучка Россия  
Дата: 06.01.16 15:44
Оценка:
Всем привет.
Программирую акселерометр под Delphi XE3 для Android, понимаю, что нужно произвести калибровку девайса перед использованием, что и пытаюсь сделать следующим способом:

по логике вещей, по каждой оси должна быть своя более или менее фиксированная погрешность, которую если вычесть из значения показываемого акселерометром при движении, получим значение ускорений по осям, с поправкой конечно на ускорение свободного падения.
axk, ayk, azk: double;          // калибровочные значения для линейного ускорения
ax,ay,az: Double;               // значения ускорений акселерометра
angleX, angleY, angleZ: Double; // угол наклона относительно вертикальной плоскости
...............
angleX:=90;
angleY:=90;
angleZ:=0;

axk:=RoundTo(MotionSensor1.Sensor.AccelerationX,-3);
ayk:=RoundTo(MotionSensor1.Sensor.AccelerationY,-3);
azk:=RoundTo(MotionSensor1.Sensor.AccelerationZ,-3)-cos(AngleZ)*9.8;
...............

// по срабатыванию таймера
ax:=(RoundTo(MotionSensor1.Sensor.AccelerationX,-3)-(cos(AngleX)*9.8+ axk));
ay:=(RoundTo(MotionSensor1.Sensor.AccelerationY,-3)-(cos(AngleY)*9.8+ ayk));
az:=(RoundTo(MotionSensor1.Sensor.AccelerationZ,-3)-(cos(AngleZ)*9.8+ azk));


у меня пока что ситуация следующая, ложу телефон на ровную поверхность, после чего просто тупо нажимаю контрол на дисплее, дальше НЕ ТРОГАЮ ВООБЩЕ, т.е. по логике вещей ускорение должно быть примерно равно 0, но у мея мля на двух осях x и y показывает ускорение 4,39!!!! как будто я его на стиралку положил. Не понимаю в чем дело?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.