Некорректная работа функции if
- Войдите на сайт для отправки комментариев
Пнд, 04/09/2017 - 00:48
Использую экран TFT для вывода температуры с ds18b20
Иногда,когда температура с датчика изменяется,
Например температура опускается с 30 до 29.5 и данные на экране начинают очень быстро сменять друг-друга несколько раз,написал функцию millis с периодом опроса в 3 секунды,но почему-то моргания не пропали.
Где я накосячил?
void loop() { if(millis()-lastTime >= 3000 ) { lastTime=millis(); ds.requestTemperatures(); // считываем температуру с датчиков float presentT1=ds.getTempC(sensor1); if (presentT1 != oldT1) { //если значение изменяется,то выводим на экран,если нет пропускаем char myStr[6]; dtostrf(presentT1, 2, 1, myStr); //переводим показания температуры датчика из float в строку Screen.stroke(255, 255, 0); //голубой цвет кисти Screen.fill(255, 255, 0); //цвет заливки голубой Screen.rect(75, 10, 46, 14); //прямоугольник перекрывающий температуру Screen.stroke(0,0,255); //красный цвет кисти Screen.text(myStr,75,10); // отправляем температуру на экран oldT1=presentT1 ; } }
А тип переменной lastTime какой?
unsigned int
Мда,ничего нового,просто посчитал через опу, казалось ,что переменная заполнится за 18 часов,а она заполняется за 65 секунд и начинаются перлы.Заменил на unsignet long ,всё в порядке.Спасибо)