У меня такой код Код (C++): #include <math.h> void setup() { // put your setup code here, to run once: Serial.begin(9600); } float k; void loop() { // put your main code here, to run repeatedly: k = analogRead(A0) * 5.0 / 1023.0; float t = -14.46 *log((10000.0 * k) / (5.0 - k)/27074.0); Serial.println(t); delay(1000); } Но в мониторе всё время пишет -19543.11. Самое интересное, что если я печатаю просто analogRead(A0), то в мониторе то же -19543.11. С подключением вроде всё нормально. Iskra Neo. Где я мог ошибиться?
Попробуйте просто выводить показания А0 в монитор без обработки. Что пишет? Как вариант - неправильно записана формула, где то приоритет операций не учли. Как она выглядит изначально?
Как 10битный АЦП может выдавать что то кроме целого числа от 0 до 1023? Вы вот так вот делали? Код (C++): Serial.println(analogRead(A0));
Разобрались, нет? Я залил ваш скетч а Мегу2560, показывает какие-то цифры в пределах 20 - 35, при замыкании А0 на землю или +5В пишет "inf". Но это надо разбираться в формуле и ее записи. Аналоговый вход же как и положено выдает от 0 до 1023. Вы все правильно подключили? Попробуйте другой пин, например A1.
Например в том, что не залили измененный скетч. Или смотрели на то, что осталось в мониторе порта от запуска предыдущего скетча. Отладка формул предполагает, что известны значения выражения в контрольных точках. Это же программирование, а не заклинание микроконтроллеров. Подсчитайте в Экселе что должно получаться для разных k и проверяйте что считает микроконтроллер.