Comments 32
z.aX = z.AccelX / 16384.0;
z.aY = z.AccelY / 16384.0;
z.aZ = z.AccelZ / 14418.0;
у канала z другой масштабный коэф.?
Да, в даташите табличка есть для всех значений.
Да, в даташите табличка есть для всех значений.
И в каком месте? Для "MPU-6000 and MPU-6050 Product Specification Revision 3.4" у всех каналов аксика коэффициенты одинаковы... по 13-й листу цены мл. разряда в зависимости от AFS_SEL:
AFS_SEL=0: k=1.0/16384.0 (диапазон +/-2g)
AFS_SEL=1: k=1.0/8192.0 (диапазон +/-4g)
AFS_SEL=2: k=1.0/4096.0 (диапазон +/-8g)
AFS_SEL=3: k=1.0/2048.0 (диапазон +/-16g)
Когда ж вы наконец то перестанете включать USART для дебага на стм32?
Насчёт STM32 не согласен взял её рублей за 200 на алике, а так в принципе интересное предложение, возьму на заметку.
Сейчас вообще очень сложно найти что-то из STM32 за разумные деньги. Все как метлой вымели ...
int pitch;
int pitch_sqrt = sqrt(z.aY * z.aY + z.aZ * z.aZ);
pitch = atan2(-z.aX, pitch_sqrt) * RAD_TO_DEG;
Странно у Вас тангаж считается.
1) Почему инты? что 89.9 градусов или .99g не может быть?
2) Крен/тангаж обычно считаются как atan2(Ax,Ay)/atan2(Az,Zy), откуда такая волшебная формула приведенная выше? В чем ее математический/физический смысл? Может чертежик нарисовать с вектором тяжести и как он по осям аксика раскладывается написать?
ВЫчитай те ошибки, в идеали.
Про MPU6050_Address и time можно по подробнее?
MPU6050_Address - адресс устройства прописан в даташите.
time - время ожидания ответа, может быт любым, на ваше усмотрение. У меня 500.
Спасибо за ответ.
Т.е. Вы сделали хедер файл со всеми адресами из даташита
И еще один вопрос. Я наверное глуп, но как data у Вас превратилась в массив, если изначально она объявлена как простая переменная uint8_t?
Проект под кодовым названием: «Бульболёт». Часть 1. Погружение в MPU6050 (или нет)