Как преобразовать показания в проценты в ардуино
Я использую этот пример, как использовать фоторезистор для определения значения свет, который получает датчик, но я хочу преобразовать показания резистора в проценты, но я не могу использовать функцию map()
из Arduino docs, но я могу реализовать нечто подобное
поэтому я создал эту простую функцию
float photo_resistor(int pinNum)
{
float reading = analogRead(pinNum);
if (reading == 54)
{
return 0.0;
}
return (reading - 54)/(100/920);
}
как и в документах, я хочу использовать диапазон вывода от 0 до 100, и минимальное значение, которое я получил, равно 54, а максимальное - 974
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
// это становится (x - 54)*(100 - 0) / (974 - 54) + 0;
// (х-54)/(100/920);
но это не выводит значение по шкале от 0 до 100
@loaded_dypper, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы писали:
return (reading - 54)/(100/920);
В C++ 100/920
равен нулю. Это потому, что, когда оба операнда
целые числа, оператор деления выполняет целочисленное деление. Вы можете
преодолеть эту проблему, убедившись, что хотя бы один из операндов
является числом с плавающей запятой. Например, 100.0/920
примерно равно 0,1087.
Однако у вас отсталое деление. Вы, вероятно, имели в виду
return (reading - 54) * (100.0/920);
Я бы использовал return max(0.0, min(100.0, (reading-54.0))*(100.0/920)));
-- это гарантирует, что никакие значения за пределами диапазона 0.0 .. 100.0 никогда не возвращаются, даже когда используется другой фоторезистор с немного другими допусками., @orithena
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Отображение двоичных данных на светодиодах
- Корпус кнопки и переключателя
ваш вопрос касается арифметики, а не Arduino, @jsotola
подумайте о корзине, которая может вместить максимум 20 яблок... в корзине 6 яблок... насколько заполнена корзина, выраженная в процентах?, @jsotola