Подключил набор семь сегментов для вывода двузначных чисел, посмотрел как считает секунды, все отлично. Подключил термистор, дописал программу, вроде как работает, но вот незадача, при каждом новом выводе значений температуры прокликивается чуть более чем несколько миллионов значений, что вызывает показ двух восьмерок в течении секунды. В чем подвох? Код (Text): #define CLOCK_PIN 2 #define RESET_PIN 3 #include <math.h> void setup() { pinMode(RESET_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); } void loop() { int n; int t; n = 1; while (n==1) { double temp = analogRead(4); //Опрашиваем термистор temp = log(((10240000/(analogRead(4))) - 10000)); //рассчитываем температуру по неизвестному алгоритму, гуляющему в рунете temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temp * temp))* temp); temp = temp - 273.15 + 6; //переводим в градусы, поправляем погрешность digitalWrite(RESET_PIN, HIGH); //обнуляем счетчик дисплея digitalWrite(RESET_PIN, LOW); t = int(temp); while (t>>0) { //пролиставаем счетчик до нужного значения. t = t - 1; digitalWrite(CLOCK_PIN, HIGH); digitalWrite(CLOCK_PIN, LOW); } delay(1000); } }
Странно всё это. Почему получается миллион прокликиваний? Можете вывести t через Serial и посмотреть чему оно в действительности равно? Несмотря на то, что конструкция while (t>>0) { ... } странна: вы видимо хотели написать одинарное > (больше), она ничего не портит и всё должно работать.
Не понятное что то вышло, Т принимало значение -13, что вызывало этот глюк, странно что оно вообще работало, после введения поправки на температуру все заработало исправно. Спасибо.