Oled дисплей 128x64, помощь

gzp13
Offline
Зарегистрирован: 06.04.2015

Здравствуйте, делаю сигнализатор скорости для машины. При выводе на дисплей скорости в сторону увеличения все хорошо, но вот при уменьшении скорости, остаётся число на экране, например было трехзначное число, при достижении скорости 99 первый разряд предыдущего числа горит на экране. Вопрос как его убрать? Пробовал наложить на этот разряд квадрат в цвет фона, но он постоянно мерцает.

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

gzp13, выводить не число а  строку во всю ширину дисплея

gzp13
Offline
Зарегистрирован: 06.04.2015

Как это строку? Я указываю координаты, указываю что надо вывести скорость и все. Да, библиотеку использую iarduino OLED.
Я вывожу так, myOLED. print(speed, 55,55);

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Идея простая: конвертируем число в строку, и слева (или справа, как угодно) - добиваем пробелами до максимальной разрядности. При этом число 99 будет выглядеть так: "99 ", число 123 - так: "123" и т.п. Т.е. пробелы - просто для затирания неиспользуемого разряда, чтобы он не оставался на экране.

Именно об этом говорил dimax. Данный способ - самый простой, как кувалда. Есть пограмотнее, но посложнее. Почему пограмотнее: незачем постоянно перерисовывать все разряды - надо только при смене разрядности выводимого числа в меньшую сторону - стирать знакоместо канувшего в небытие разряда. 

gzp13
Offline
Зарегистрирован: 06.04.2015

Я правильно понял, надо сделать так?
MYOLED. print(speed, 50,55);
MYOLED.setcursor(60,66);
MYOLED.print(" ") ;

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Лучше  snprintf() в буфер, а потом буфер в print(). Тогда будет примыкание пробела к цифрам стопроцентное.

gzp13
Offline
Зарегистрирован: 06.04.2015

Все, разобрался, спасибо за наводки. Просто нарисовал квадрат в цвет фона и вставил куда надо на экране.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

gzp13 пишет:

Все, разобрался, спасибо за наводки. Просто нарисовал квадрат в цвет фона и вставил куда надо на экране.

этта правильно, канеш, но не быстро.