Pirahna ultra и <adafruit_mlx90640.h>

Тема в разделе "Arduino & Shields", создана пользователем save.l, 28 сен 2025.

  1. save.l

    save.l Гик

    Подключаю к Pirahna Ultra датчик MLX90640.
    Использую Adafrut-библиотеку
    Работаю с примером из папки.

    Датчик подключен.
    Значения EEPROM из него выгружаются, оба кадра (Frame0 и Frame1) так же получаю.
    Так же считывается температура самого датчика (корпуса).
    Соответственно делаем вывод, что общение с датчиком корректное.

    Но в итоге вместо данных температур получаю значения NAN.
    Предположил что функция MLX90640_CalculateTo из файла MLX90640_API.cpp возвращает некорректные данные?! Но это же официальный драйвер от производителя, вряд ли он ошибочен.
    Значит дело в моей IDE?
    Пробовал 1.8.13
    Пробовал 1.8.19
    Пробовал 2.3.6
    Разницы нет. Подскажите, пожалуйста, в чем может быть проблема.

    Снимок4.JPG Всем привет.
     
    Последнее редактирование: 28 сен 2025
  2. save.l

    save.l Гик

    Капец, кучу времени убил.
    Но костыль нашел:
    Код (C++):
    void ExtractKsToParameters(uint16_t *eeData, paramsMLX90640 *mlx90640)
    {
        int KsToScale;
    ...
        KsToScale = 1 << KsToScale;
    ...
    }
    нужно заменить на:
    Код (C++):
    void ExtractKsToParameters(uint16_t *eeData, paramsMLX90640 *mlx90640)
    {
        int32_t KsToScale;
    ...
        KsToScale = 1UL << KsToScale;
    ...
    }
    Всем добра :D
     
  3. b707

    b707 Гуру

    это не костыль, а правильный синтаксис.
    А верхний - неправильный.
     
    save.l и ИгорьК нравится это.
  4. Asper Daffy

    Asper Daffy Иксперд

    Какого Вы высокого мнения о софте от производителя!

    Почитайте вот историю, там ведь у "Патриотов" тоже официальная прошивка от производителя была, а вона как вышло :(
     
    save.l и ИгорьК нравится это.
  5. save.l

    save.l Гик

    Ну я тут конечно не на синтаксис обращал внимание :), а лепил кучу выводов в порт и понял что число KsToScale тупо не влазило в 2 байта, из за этого образовывался Ноль, дальше деление на этот Ноль и все по наклонной ))