roboforum.ru

Технический форум по робототехнике.

обновление данных на экране

обновление данных на экране

igorlab » 02 апр 2018, 17:53

привет!
подскажите пожалуйста как реализуют вывод инфы на экран без мерцания? экран олеэд128х64, контроллер ESP8265;
написал код, все переменные формируют 7 строк, затем эти строки выводятся на экран. так вот, если перед выводом не очистить экран, то остаются артефакты, а если очищать - то экран напряжно мигает, как в этом случае поступить, чтобы данные обновлялись, но экран не мигал, может какая-то другая библиотека, или я что-то не правильно делаю?
заранее спасибо.

Код: Выделить всёРазвернуть
...
#include "OLED.h"
OLED display(D2, D1);
unsigned long previousMillis = 0;
const long interval = 3000;

void setup() {
  display.begin();
  ...
}

void loop() {
  ...
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    display.clear();
    display.print(const_cast<char*>(text1), 1);
    display.print(const_cast<char*>(text2), 2);
    display.print(const_cast<char*>(text3), 3);
  }
}

Re: обновление данных на экране

Romikgy » 02 апр 2018, 20:32

формировать строку на всю длину экрана...

Re: обновление данных на экране

Scorpio » 02 апр 2018, 23:26

А какой дисплей конкретно?

Re: обновление данных на экране

igorlab » 03 апр 2018, 14:08


Re: обновление данных на экране

Myp » 03 апр 2018, 17:16

я очищал место куда буду писать предварительным затиранием текстом нужной длины и потом уже писал новый текст
тока там была заморочка с фоном, по умолчанию там вроде печатается текст с прозрачным фоном и пробелы не затирали символ, надо было задать цвет фона и цвет букв
а в каком-то дисплее я печатал символ полный блок U+2588

если у тебя текст поверх рисунка, то придутся всё перерисовывать.
если чисто текст печатать, без рисования, то есть отдельная библиотечка чисто текстовая SSD1306Ascii

Re: обновление данных на экране

ALS » 04 апр 2018, 22:01

Злой ОФФ.
А еще я, кажется, понимаю, почему оно летает у одних и безбожно тормозит и бажит - у других.
Потому, что вот это унылое добро
?=p&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10151_10065_10344_10068_5722815_10342_10343_10340_5722915_10
341_5722615_10697_10696_10084_10083_10618_10307_5722715_10059_10534_308_100031_10103_441_10624_10623_10622_5722515_10621_10620,
searchweb201603_19,ppcSwitch_5&algo_expid=9dd58957-5271-490e-bc83-f3e9472edd63-1&algo_pvid=9dd58957-5271-490e-bc83-f3e9472edd63&transAbTest=ae803_1&priceBeautifyAB=0

к собственно ссылке на девайс никакого отношения не имеет. Но 80% современных программеров этих-ваших-ардуин почему-то считает, что оно не мешает, глаза мозолить не будет, а место на форуме (как и память в атмегах) - резиновое.

Re: обновление данных на экране

Scorpio » 04 апр 2018, 22:26

Попробуйте другую библиотеку. Adafruit_SSD1306 например. Сам не пробовал, но подозреваю, что приличная библиотека сначала полностью формирует страницу в памяти, потом отображает ее разом display.display();

Добавлено спустя 1 минуту 40 секунд:
ALS писал(а):Злой ОФФ.

согласен

Re: обновление данных на экране

igorlab » 16 апр 2018, 23:17

нашел подхлдящую билиотеку! :) ее плюс в том что не надо каждый раз зачищать дисплей, она сама обновляет ту область экрана которая будет задействованна в выводе строки, второй плюс - она очень экономно использует динамическую память - U8glib
https://github.com/olikraus/u8glib

Re: обновление данных на экране

setar » 17 апр 2018, 16:21

предупреждение!
экранчик ST7920 не поддерживается в u8glib, в u8g2 такого ограничения уже нет


cron
Rambler\'s Top100 Mail.ru counter