Проблема выводом температуры на MEGA 3,2" TFT LCD и 18B20
- Войдите на сайт для отправки комментариев
Втр, 26/03/2019 - 02:24
Доброе время суток!
Я начинающий, прошу помошть. При понижений температуры с двух цифр на одно, на LCD появляется лишние цифры, после негативных темп. ещо болше. после RESET свё становится на свои места!
Как решить проблему?
На фото паказание LCD , стартовая темп 18'C , верхнем ряду целое значение, в втором, ц одной децяткой.
Мой скеч.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <UTFT.h>
#include <avr/pgmspace.h>
#define ONE_WIRE_PIN 4
OneWire ds(ONE_WIRE_PIN);
DallasTemperature sensors(&ds);
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
UTFT myGLCD(CTE32HR, 38, 39, 40, 41);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(BigFont);
myGLCD.setColor(255, 155, 005);
myGLCD.print("TEPERATURE", LEFT, 70);
}
void loop(void)
{
sensors.requestTemperatures();
Serial.print("Temp: ");
Serial.println(sensors.getTempCByIndex(0));
Serial.println();
myGLCD.setFont(BigFont);
myGLCD.printNumI(sensors.getTempCByIndex(0), 220, 70);
myGLCD.printNumF(sensors.getTempCByIndex(1), 1, 220, 100);
}








ну самое простое, "очищать" старые значения
myGLCD.print(" ", 220, 70); myGLCD.print(" ", 220, 100); myGLCD.printNumI(sensors.getTempCByIndex(0), 220, 70); myGLCD.printNumF(sensors.getTempCByIndex(1), 1, 220, 100);Добавь в 35ю строкуmyGLCD.print(" ", 220, 70);А самое главное - добавь "М" в TEPERATURE
Спосибо! Функционально заработало, но покозание неприятно мигает :( . Есть какой другой метод?
Добавь в 35ю строкуmyGLCD.print(" ", 220, 70);А самое главное - добавь "М" в TEPERATURE
Добавыл М, непомогло ! :)
так добавьте условие - обновлять данные через... или когда значение изменилось... или их комбинацию...
UPD у Вас по делу и без дела данные перерисовываются на экране слишком часто, программа короткая и цикл слишком быстро исполняется, да и в больших программах никто так не делает - это чисто тестовый вариант, допиливайте
так добавьте условие - обновлять данные через... или когда значение изменилось... или их комбинацию...
UPD у Вас по делу и без дела данные перерисовываются на экране слишком часто, программа короткая и цикл слишком быстро исполняется, да и в больших программах никто так не делает - это чисто тестовый вариант, допиливайте
Так точно! Это тестовой скеч. На нём решил протестировать варианты решение проблемы. Основной скечь намного сложней, пять 18B20 датчики температуры, один BME280, и датчик давление воды на 60 psi. По началу был подключен 20x4 LCD дисплей, всё работало нормально.
Думаю через каких то 5 минут делать RESET
Как это лучше реализовать?
Спосибо!
ресет чего? МК? если его - то дружите с "песиком" закинул себе пару топиков первый, второй. Мне пока без нужды, нет таких проектов, так что туда и вопросы...
Благодарю!
Думаю через каких то 5 минут делать RESET Как это лучше реализовать? Спосибо!
что за бред? Ресет никак не исправит мигание данныых на экране. Да и вообще РЕСЕТ - не метод обеспечения стабильной работы. Это лечение головной боли гильотиной.
Пишите программу грамотно - и ресет не понадобится. Как убрать мерцание экрана - Вам обьяснили.