Вывод информации на LCD по шаблону

ic746
Offline
Зарегистрирован: 04.12.2016

Делаю железку, в числе прочего измерение температуры при помощи датчика 18b20. С датчика приходят данные возможных видов: -12.34 (6 знаков) или -3.32 (5 знаков) или (6.12) (4 знака) . Температуру вывожу в определённое место на LCD 1604:

lcd.setCursor(0, 2);

lcd.print(ds.getTempCByIndex(1) , 1);\Вывод округлённого до 1 знака значения.

После температуры вывожу знак градуса.  При изменении числа выводимых знаков от трёх (3.4 °) до пяти (-10.1 °)  (отрицательная температура, t<10, t>10) - начинается ерунда - задваивается знак градуса от предыдущего значения и т.д. Остановился на ежечасном затирании строки, но это не элегантно на мой взгляд. В бейсике помнится был вывод данных по шаблону ###.#. Как реализовать здесь подобное? Чтобы с заданной позиции выводимые показания занимали строго 5 знакомест (максимальное значение знакомест)

 

 

vvadim
Offline
Зарегистрирован: 23.05.2012

взять и правильно код написать

чего то сложного здесь нет

если бы вы показали свою прогу - вам бы наверное уже помогли))))

flat
Offline
Зарегистрирован: 05.02.2015

для начала на LCD надо стирать предудщие значения выводя их же цветом фона .... 

потом выводить новые... проблемма с двойным градусом уйдет .... 

bwn
Offline
Зарегистрирован: 25.08.2014

flat пишет:

для начала на LCD надо стирать предудщие значения выводя их же цветом фона .... 

А может просто нужное кол-во пробелов напечатать? А потом на их место данные.

flat
Offline
Зарегистрирован: 05.02.2015

bwn пишет:

flat пишет:

для начала на LCD надо стирать предудщие значения выводя их же цветом фона .... 

А может просто нужное кол-во пробелов напечатать? А потом на их место данные.

 

возможно ... но когда я делал свой вывод мне нужно былоо стирать от 2 до 10 символов... проще вывести данные до изменения еще раз помоему было ... поэтому не проовал вариант с проблеами ... если работает отложу в памяти ) 

nik182
Offline
Зарегистрирован: 04.05.2015

Достаточно печатать один -два пробела после вывода температуры. Ничего затирать не надо.

ic746
Offline
Зарегистрирован: 04.12.2016

Смысла выкладывать прогу не вижу - черновой шаблон. Со стиранием пробовал - мерцание неприятное. С пробелами у меня и сделано. Получается надо первое знакоместо под минус держать и пробел перед градусом. Просто когда минуса нет, первая цифра выводится с данного знакоместа и перед градусом уже два пробела. Это всё не критично, хотелось с шаблоном вывода разобраться. Несколько подобных программ просмотрел - все с затиранием и пробелами мудрят. Если датчик отваливается выводится показание -127.0 - 6 знакомест, получается резерв в 3 пробела надо делать %-)

nik182
Offline
Зарегистрирован: 04.05.2015

Если отваливается, то достаточно одного if и ничего не выводить. 

flat
Offline
Зарегистрирован: 05.02.2015

Проверил... на 2.4 tft с #include <MCUFRIEND_kbv.h>

не канает стирание пробелами... заливка прямоугольника канает... но долгая.... копаю даьше