Библиотека EasyTransferI2C - потеря точности в типе float. Как забороть?

Тема в разделе "Arduino & Shields", создана пользователем Zorg_79, 1 апр 2014.

  1. Tomasina

    Tomasina Сушитель лампочек Модератор

    в Serial.print выводится тоже с неверными последними цифрами.
     
  2. Zorg_79

    Zorg_79 Нуб

    ДА, именно так - выводится неверно что на ЖК что в последовательный порт.

    Причем - что туда что туда - показывает одно и то же....

    Так чо - либо глюк с харнением, либо - глюк в print()

    хотелось бы думать что второе...
     
  3. geher

    geher Гуру

    Вспомнилось, что в float на мантиссу приходится всего 23 бита. Т.е. имеем в лучшем случае 6 знаков после запятой в мантиссе.
    Для числа 180.000001, которое будет представлено как 1.80000001 просто не хватит бит в мантиссе. И оно превратится в 180 ровно. По крайней мере теоретически так.
    Проблема может быть в этом.А точнее, в аппаратной реализации математики с плавающей точкой. Неизвестно, сколько там бит на мантиссу максимум. А использование программной реализации представляется мне сомнительным.
     
    Последнее редактирование: 2 апр 2014
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Используйте double вместо float.
     
  5. geher

    geher Гуру

    У Zorg_79 и так double. Посмотрел реализацию print(). Там тоже double.
     
  6. urev

    urev Нуб

    никто не подскажет, как с помощью этой библиотеки подключить три arduino, чтобы один мастер получал данные от двух slave?
     
  7. urev

    urev Нуб

    я так полагаю,что решение в использовании идентичных структур передаваемых данных, тогда можно использовать один адрес и разделять по ID?