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

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

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

Сообщение 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);
  }
}
Аватара пользователя
igorlab
 
Сообщения: 185
Зарегистрирован: 30 окт 2015, 19:08

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

Сообщение Romikgy » 02 апр 2018, 20:32

формировать строку на всю длину экрана...
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

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

Сообщение Scorpio » 02 апр 2018, 23:26

А какой дисплей конкретно?
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке


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

Сообщение Myp » 03 апр 2018, 17:16

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

если у тебя текст поверх рисунка, то придутся всё перерисовывать.
если чисто текст печатать, без рисования, то есть отдельная библиотечка чисто текстовая SSD1306Ascii
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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% современных программеров этих-ваших-ардуин почему-то считает, что оно не мешает, глаза мозолить не будет, а место на форуме (как и память в атмегах) - резиновое.
Аватара пользователя
ALS
 
Сообщения: 803
Зарегистрирован: 24 окт 2011, 23:32
Откуда: Севастополь
прог. языки: асм

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

Сообщение Scorpio » 04 апр 2018, 22:26

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

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

согласен
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

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

Сообщение igorlab » 16 апр 2018, 23:17

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

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

Сообщение setar » 17 апр 2018, 16:21

предупреждение!
экранчик ST7920 не поддерживается в u8glib, в u8g2 такого ограничения уже нет
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

cron