Говорю же, читаю форум уже несколько лет…
И порой вижу, что на “тупой” вопрос отвечают и причем так подробно… А на “нормальный” вопрос получают подзатыльник… Это все зависит от первых ответов… психология человеческая… никуда не денешься.
Как бы на мой взгляд, не математика и не программиста, без флоат это “не возможно” сделать… так как там деление есть. Если бы не оно, то…
Т.е. абстрактный пример.
Взять 2 / 5 = 0,4 (вещественное). Хорошо
Умножаем 2 на 10. Получаем 20 / 5 = 4 (целое) хорошо, делим на 10 ( 4/10 и 4%10) и получаем 0 и 4, то что нужно.
В правильном направлении иду?
И останется в той функции что-то умножить(2), что-то нет(5) и не запутаться в этом… Ладно, буду методом тыка((
В точности так, как написано: “будет работать неверно”.
Если Вам так понятнее, могу переставить “не” в другое место: “не будет работать верно”.

Как переделать для вывода целочисленного значения?
С математикой у меня тоже не супер…
Вы поставили меня в тупик.
Как это можно переделать, не зная математику, я не знаю.
Но я бы посоветовал не переделывать, а писать самому с нуля. Как я говорил, там изначальный алгоритм вызывает большие сомнения.

мне Евгений и посоветовал, раз работает, то оставить так
Если Вас устраивает, как оно работает, то почему бы и нет. Вам только нужно знать, что это ни в коей мере не измерительный прибор, а лишь грубый индикатор.

Н проще ли убрать п. 1, тогда и в п.2 нужды не будет.
Оно, конечно, проще. Вот только без знания математики велика вероятность, что округления при масштабировании приведут к потере информации.

И порой вижу, что на “тупой” вопрос отвечают и причем так подробно… А на “нормальный” вопрос получают подзатыльник…
Ну, каждый волен самостоятельно решать, какой вопрос “тупой”, а какой - “нормальный”.

Т.е. абстрактный пример.
Взять 2 / 5 = 0,4 (вещественное). ХорошоУмножаем 2 на 10. Получаем 20 / 5 = 4 (целое) хорошо, делим на 10 ( 4/10 и 4%10) и получаем 0 и 4, то что нужно.
В правильном направлении иду?
Нет, не в правильном.
Если нам надо получить 2/5 в целых числах, то это будет 0. И ответ мы получили правильный сразу. Ничего больше мудрить не надо.
А вот если нам нужен результат в десятых долях, тогда надо умножить на 10. И тогда ответ будет 4 - но это, как мы помним, в десятых долях, т.е. четыре десятых. А если бы изначально было 13/5, то получили бы 26 - опять же в десятых долях: двадцать шесть десятых.

Но я бы посоветовал не переделывать, а писать самому с нуля. Как я говорил, там изначальный алгоритм вызывает большие сомнения.
Ясно, получается этих алгоритмов много, нужно выбрать лучший в конкретном случае. Как Вы уже заметили, что у меня не измерительный прибор, а грубый индикатор. Но я не знаю какой из алгоритмов мне подойдет больше всего для этого… А сам я не соображу. …свой алгоритм.

что округления при масштабировании приведут к потере информации.
Вот… вот это я как раз понимаю и флоат “тут рулит”… в какой-то степени.

Ну, каждый волен самостоятельно решать, какой вопрос “тупой”, а какой - “нормальный”.
Согласен

Нет, не в правильном.
Так и знал… и все из-за погрешностей округления. Ну не совсем 0 же я в математике)
Хорошо, если есть у кого желание предложить алгоритм, простой и быстрый, или даже реализовать в коде, то буду благодарен! “Мой” выше работает немного медленно из-за своеобразного делея (60мск) Я понимаю, что без этого никак, ну или очень усложнить… Но кто его знает, может есть что-то…

Если нам надо получить 2/5 в целых числах, то это будет 0. И ответ мы получили правильный сразу. Ничего больше мудрить не надо.
А вот если нам нужен результат в десятых долях, тогда надо умножить на 10. И тогда ответ будет 4 - но это, как мы помним, в десятых долях, т.е. четыре десятых. А если бы изначально было 13/5, то получили бы 26 - опять же в десятых долях: двадцать шесть десятых.
Не очень понял. Т.е. суть сказанного-то понял, а вот к своему вопросу это присобачить не получается…
Мне нужны значения целые амперы и сотые (или хотя бы десятые). Поэтому результатом чтения целого значения (analogRead) и по алгоритму его преобразовать в значение * 100 или *10. Т.е. если в цепи течет ток 3.66 то в целых алгоритм считав с датчика должен вернуть 366 либо 37 (ну или хотя бы 36 не измерительный же прибор)
Представьте, что вам нужны не амперы, а миллиамперы. Вот и всё. Расчитываайте в них и не будет никаких float.
Если у ТС хватает производительности МК для работы с float, то нет никакого смысла избавляться от него.
Но работа с датчиком 712 - реально ужасна.
ТС, уважаемый, Если ты опишешь свою задачу, то можно будет рассказать, как именно красиво её сделать. Раз это твое хобби, то красивое решение будет полезно для развития.
умножение на 0.707 - реально очень плохая идея. Просто бессмысленная. Сеть под нагрузкой НИКОГДА не синусоида.
ну собственно оно так и получается, только не на 10, не на 199 а на 1000 умножить… а потом целые, десятые, сотые и тысячные без проблем взять.
Но вот беда в получении этих целых миллиамперов))) Впрочем, я может и соображу как это переделать тот самый неграмотный код плохого автора…
Но всеж надеюсь, что тут люди поумнее (я в этом уверен) предложат что нибудь из готового ) Ну или хотя бы алгоритм, …если я его пойму то возможно(!) смогу и реализовать…

ТС, уважаемый, Если ты опишешь свою задачу, то можно будет рассказать
Просто смотреть потребляет ли нагрузка и сколько в попугаях …пока
И как вариант да, чисто для интереса и развития.
Скважинный насос, твердотельное реле, датчик 712, датчик давления воды, дисплей лсд и ардуина.
Ничего сверхъестественного. Просто заменил аналоговое реле (Большое такое, стоит 600р. и манометр, которые находятся в подвале) и вывел и управление, настройку и отображение информации в удобное место.

Если у ТС хватает производительности МК для работы с float, то нет никакого смысла избавляться от него.
Но работа с датчиком 712 - реально ужасна.
Да в принципе устраивает меня, но я после ответов в этой теме, понял, что сделал глупость добавив в тело цикла чтения (60 мск) с датчика опрос своего энкодера. Тем самым испортив данные скорее всего. Убрал.
Тупил энкодер, поэтому туда вставил. Но сейчас убрал и сделал чтение не постоянно а по таймеру раз в полсекунды. Да, в момент чтения энкодер подтупливает… не критично.

Просто заменил аналоговое реле
давно собирался себе сделать, но все руки не доходили.
Ток зачем тебе нужен? Как защита от перегрузки?
- Не нужно останавливаться даже на 60 мс для сбора данных. Нужно в другом потоке, например по тикеру или при помощи таймеров от ДетСимена, постоянно собирать данные с датчика и применять к ним фильтр. В основном цикле у тебя всегда будет готовое значение.
- Если скорости процессора хватает, то разумно эти значения приводить к реальности (вольты, амперы) в числовом выражении, но ИСКЛЮЧИТЕЛЬНО для того, чтобы можно было их посмотреть на индикаторе или в отладке. Машине вольты и амперы не нужны, можно “попугаев” с “попугаями” сравнивать.

Тупил энкодер,
раз ты читаешь еще и энкодер, то сам Б…г велел тебе изучать многопоточность! На 8-ми битном AVR - либо помощью тикера или таймера ДетСимена. Второе лучше, но “порог вхождения” выше.
Добавлю, что можно написать все в парадигме автоматного программирования, но это я тебе не стану предлагать. Порог вхождения для любителя непреодолим.

Ток зачем тебе нужен? Как защита от перегрузки?
Не знаю))) Просто валялись, решил приспособить. Но и подумал, вдруг мотор заклинит, возможно возрастет ток и будет держаться какое-то время (при старте тоже ток возрастает, но скачком, потом в штатное выходит) то отключить нафик его, чтоб не сгорел… Как так в мыслях было, поэтому и приделал. Убрать то его не долго.)

Добавлю, что можно написать все парадигме автоматного программирования, но это я тебе не стану предлагать. Порог вхождения для любителя непреодолим.
На данный момент написано около 1000 строк.
Есть отображение в барах. Настройка включения (нижний предел) и выключения (верхний), Защита от сухого хода, Плюс на трубе серия датчиков температуры DS1820 и греющий шнур на трубе тоже через твердотельное реле. Реализовано меню. Редактирование параметров, Сохранение их в еепром. Также там в устройстве часы внутренние на милис (не точные, но идут)))) Все это управляет ардуина нано. Идеи все мои, не претендую ни на что, и возможно они глупые, но мне пока нравится.)) А вот за деталями иногда подглядываю у других))) Спасибо!

греющий шнур на трубе тоже
…ну шнур-то зачем на Ардуинку? У меня две скважины: первая в подвале, вторая уже за стеной в 2 метрах от первой. Обе - абиссинские, то есть насосы сверху. Кабель греющий я по термометру включаю - если уличная ниже -15 опускается.
И нужно это пару раз в год в январе. Иногда еще и в феврале.

…ну шнур-то зачем на Ардуинку?
Ну на всякий случай. Понимаю, что шнур сам рулит температурой, но он не всегда нужен, вот и пусть ардуина сама когда нужно вкл/откл его…

На данный момент написано около 1000 строк.
А так - правильно тебе выше сказано: работает - не меняй. Если нет нужды по производительности в избавлении от float, то нечего фигнёй страдать ради перфекционизма.

ДетСимена
Вижу замаскированную рекламу ДетСимена.)
Ну как бы пока еще место есть. Занято 65 и 55 %%. Но есть еще мысли на это устройство, да и на будущее экономить байты - приучаю себя.
И это не безрезультатно. Предыдущее устройство делал, уже под завязку всю память забил, а по функционалу был скуднее чем это. Так что не зря все это!

Вижу замаскированную рекламу ДетСимена.)
Ему не нужна реклама Кстати, от меня ему тоже спасибо за предыдущую, несколько лет назад помощь…
И за Делфийский стиль отдельное