Прошу помощи с алгоритмом работы с компасом на HMC5883. Изначально задача выглядит довольно простой. есть устройство, на котором стоит компас и шаговый двигатель. Шаговым двигателем управляется указатель, который выставляется на некий азимут. По нажатию кнопки запоминается количество шагов ШД и азимут компаса, после чего рассчитывается азимут указателя. В дальнейшем устройство вращается по/против часовой стрелки, а шаговик удерживает указатель на рассчитанном азимуте. Этакий псевдогироскоп. И все работает чудесно, до момента перехода компаса через 0 градусов. Т.к. дельта угла между направлением указателя и осью компаса высчитывается как DELTA= AZUMUT_NULL - DEGRESS, где AZIMUT_NULL -- это начальное положение указателя (нулевой азимут), а DEGRESS -- направление оси компаса в градусах, то в момент перехода через ноль градусов получается полная ерунда. Например, при нулевом азимуте в 270 градусов и направлением оси компаса 359 градусов, дельта равна -89 градусов. И это прекрасно. Но при нулевом азимуте в 270 градусов и направлении оси компаса в 0 градусов дельта равна уже 270 градусов.
И как с этим бороться -- ума не приложу
Буду очень признателен за дельный совет.
И как с этим бороться -- ума не приложу
