• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 + OLED u8g2 вывод текста, как правилньо организовать?

Sany81

New member
Добрый день.
ESP8266 + OLED 128*64 + lua
Есть динамически меняющееся значение, например секунды, которые нужно вывести на дисплей
Вывожу на дисплей к примеру "00",через секунду вывожу "01", и вот под единичкой остается "мусор" от предыдущего "0"
Как бы этого избежать? Зависит ли это от шрифта (пробовал на двух разных шрифтах без изменений)
Стирать весь буфер и формировать его заново - не вижу смысла
пока что выкрутился так:
Код:
disp:setDrawColor(0) --задаю "черный" цвет
disp:drawBox(0,0,64,19) -- рисую прямоугольник по размеру выводимого текста
disp:setDrawColor(1)
disp:drawStr(0, 17, "11.23") -- вывожу новый текст
disp:sendBuffer()
Вроде работает, мусор не мешается, отрисовки не изменившегося текста не заметно. но терзают смутные сомнения, а нельзя ли сделать проще?

И еще вопрос: можно ли как то ускорить вывод информации на дисплей? или частота esp8266 не позволяет добиться более шустрой работы с дисплеем?
 

CodeNameHawk

Moderator
Команда форума
В памяти проца выделяется объем памяти, в который "заливается фон" и печатается новый текст.
Обычно это прямоугольник достаточный, чтобы закрыть область на экране, которую надо заменить без моргания.
Далее он выводится в нужное место на экране, так как нет отдельной заливки фона, отдельного вывода символов - нет моргания, сразу выводиться фон с новыми символами.

Почему не мерцает
  • Экран не очищается
  • Перерисовывается только sprite
  • Копирование в TFT происходит одним блоком
  • Нет "стирания → рисования" напрямую на дисплее
Я использую библиотеку TFT-eSPI, правда она для языка С (работает в arduino).
 

Sany81

New member
К сожалению на lua не видел(не нашел) библиотек, которые позволяли бы выводить данные на экран "кусками". в типовой библиотеке сначала формируется буфер(целиком весь экран) и потом он весь передается на дисплей, поэтому и вывод информации такой тормозной :(

Неужели придется на ардуинку переучиваться(уже давно такое желание имею да все ни как). Видел для ардуинки много модулей для разных дисплеев, кучу исходного кода, а под lua вообще мало что есть на просторах инета
 

CodeNameHawk

Moderator
Команда форума
Сложность в освоении ардуино в том, что на просторах интернета, готовые примеры программ указывают какие библиотеки используются, но мало кто указывают их версию.
То же само относится к версии плат используемой в программе.
Надежней ориентироваться на примеры идущие с библиотеками.
Но количество готовых библиотек легко склоняют к использовании ардуино.
 
Последнее редактирование:
Сверху Снизу