Проблема выводом температуры на MEGA 3,2" TFT LCD и 18B20

Perkonc
Offline
Зарегистрирован: 26.03.2019

Доброе время суток!

Я начинающий, прошу помошть. При понижений температуры с двух цифр на одно,  на 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);
   
}

  

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ну самое простое, "очищать" старые значения

  myGLCD.print("         ", 220, 70);
  myGLCD.print("         ", 220, 100);

  myGLCD.printNumI(sensors.getTempCByIndex(0), 220, 70);
  myGLCD.printNumF(sensors.getTempCByIndex(1), 1, 220, 100);

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Добавь в 35ю строку  

myGLCD.print("     ", 220, 70);

А самое главное - добавь "М" в TEPERATURE

Perkonc
Offline
Зарегистрирован: 26.03.2019

Спосибо! Функционально заработало, но покозание неприятно мигает :( . Есть какой другой метод?

Perkonc
Offline
Зарегистрирован: 26.03.2019

asam пишет:

Добавь в 35ю строку  

myGLCD.print("     ", 220, 70);

А самое главное - добавь "М" в TEPERATURE

Добавыл М, непомогло ! :)

Гриша
Offline
Зарегистрирован: 27.04.2014

Perkonc пишет:
Спосибо! Функционально заработало, но покозание неприятно мигает :( . Есть какой другой метод?

так добавьте условие - обновлять данные через... или когда значение изменилось... или их комбинацию... 

 UPD у Вас по делу и без дела данные перерисовываются на экране слишком часто, программа короткая и цикл слишком быстро исполняется, да и в больших программах никто так не делает - это чисто тестовый вариант, допиливайте

Perkonc
Offline
Зарегистрирован: 26.03.2019

Гриша пишет:

Perkonc пишет:
Спосибо! Функционально заработало, но покозание неприятно мигает :( . Есть какой другой метод?

так добавьте условие - обновлять данные через... или когда значение изменилось... или их комбинацию... 

 UPD у Вас по делу и без дела данные перерисовываются на экране слишком часто, программа короткая и цикл слишком быстро исполняется, да и в больших программах никто так не делает - это чисто тестовый вариант, допиливайте


Так точно! Это тестовой скеч. На нём решил протестировать варианты решение проблемы. Основной скечь намного сложней, пять 18B20 датчики температуры, один BME280, и датчик давление воды на 60 psi. По началу был подключен 20x4 LCD дисплей, всё работало нормально.
Думаю через каких то 5 минут делать RESET
Как это лучше реализовать?
Спосибо!

Гриша
Offline
Зарегистрирован: 27.04.2014

Perkonc пишет:
Думаю через каких то 5 минут делать RESET Как это лучше реализовать? Спосибо!

ресет чего? МК? если его - то дружите с "песиком" закинул себе пару топиков первый,   второй. Мне пока без нужды, нет таких проектов, так что туда и вопросы...

Perkonc
Offline
Зарегистрирован: 26.03.2019

Благодарю!

b707
Offline
Зарегистрирован: 26.05.2017

Perkonc][quote=Гриша пишет:

 Думаю через каких то 5 минут делать RESET Как это лучше реализовать? Спосибо!

что за бред? Ресет никак не исправит мигание данныых на экране. Да и вообще РЕСЕТ - не метод обеспечения стабильной работы. Это лечение головной боли гильотиной.

Пишите программу грамотно - и ресет не понадобится. Как убрать мерцание экрана - Вам обьяснили.