Почему Arduino не любит математику ?

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Ответить
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

Помню не раз писал формулу с чётным окончанием, чтото вроде 20/1024 и получал кукиш и без масла, а вот 10/512.
Ну уж нет, потренируй мозги, изволь лично константы складывать и решения вписывать.

и вот опять

Код: Выделить всё

#define A_MAX 75
float Amper_Bat ; 

Amper_Bat = A_MAX/1024 ;
ну вы уже поняли A_MAX/1024=0.00
и вообще он не желает что либо делить.

Если скормить  0.0732421875 он их показывает как 0.07, дело то не в точке. Там после этого ещё умножение, то что поделили всегда 0.

Вот только в другом куске кода формулы ещё круче и там они работают
Контактная информация:
Реклама
As
Модератор
Аватара пользователя
Сообщения: 46211
Зарегистрирован: Пт янв 23, 2009 19:20:05

Сообщение As »

И причем тут Ардуино? :dont_know: Проблема явно программная! Нужна точность - используйте соответствующие библиотеки, только будьте готовы к тому, что точные вычисления потребуют несколько больше времени... :)
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Если не уметь программировать на Си, можно обвинять Ардуино.
А правильно писать так:

Код: Выделить всё

Amper_Bat = (float)A_MAX/1024;
Или так:

Код: Выделить всё

#define A_MAX 75.0
Это в любом учебнике по языку написано будет! Стоит обратиться к "букварю", прежде чем что-то обвинять не зная самых элементарных основ.

Добавлено after 11 minutes 25 seconds:
https://ideone.com/l5tdmv
Изображение
Вложения
float-math.png
(23.2 КБ) 245 скачиваний
Друг Кота
Сообщения: 7722
Зарегистрирован: Вс июл 24, 2011 11:38:09

Сообщение 74LS00 »

Это ардуино, а не хрень какаято, это итальянская хрень.

Код: Выделить всё

#define A_MAX 75.0
не работает. Хотя почти тоже самое с вольтами работало.

Код: Выделить всё

const float A_MAX=75.0;
а вот это почемуто работает.
Хотя один фиг так и не увидел пока не вписал полную формулу, а частично 0.07 отображалось только умножив на 100.
Но всё это началось с того что формула как раз не работала.
Тут я бы назвал компилятор очень кривым.
Amper_Bat = (float)A_MAX/1024;
я брал кусок кода православного сишного и если там есть (float), то формула равна 0 всегда. А если из формулы выкинуть и поставить в начале кода, то сразу начинает работать.
Я так понял есть дофига вариантов написания, и какой будет рабочим надо угадать.

Букваря по ардуино как раз и нет, а сишный искать ничуть не проще, ардуинщики об этом не подумали
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Полнейший бред.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15600
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Внимательно учим основы Си...
:(
Реклама
Ответить

Вернуться в «МЯЯЯУ!»