wunderwaffe: тупят другие (karliki)
доктор Вандершпигель ([personal profile] wunderwaffe) wrote2021-10-25 06:59 am

Ардуинские библиотеки

Какой охуительный код встретился мне в библиотеке для Troyka от Амперки

void Compass::readCalibrateMagneticGaussXYZ(float& mx, float& my, float& mz) {
    int16_t x, y, z;
    readXYZ(x, y, z);
    mx = x, my = y, mz = z;
    _calibrate(mx, my, mz);
    mx = x / _scalingFactor;
    my = y / _scalingFactor;
    mz = z / _scalingFactor;
}

Я то думаю, что у меня не работает ни хуя.
Правильный вот такой -
void Compass::readCalibrateMagneticGaussXYZ(float& mx, float& my, float& mz) {
 int16_t x, y, z;
 readXYZ(x, y, z);
 mx=x/_scalingFactor;
 my=y/_scalingFactor;
 mz=z/_scalingFactor;
 _calibrate(mx, my, mz);
}

При условии что все принимаемые "сырые" данные будут пронормированы -
float _scalingFactor=6842.0;
...
void loop() {
 ...
 compass.readXYZ(xx, yy, zz);
 xx=xx/_scalingFactor;
 yy=yy/_scalingFactor;
 zz=zz/_scalingFactor;

иначе слишком большие сырые данные убьют точность - https://wunderwaffe.dreamwidth.org/31760.html

Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting