Как переносить/прокручивать текст с помощью U8G2?
Кто-нибудь знает, как переносить и/или переносить текст с помощью библиотеки U8G2? Я знаю, что есть и другие библиотеки, которые делают это за вас, но я бы хотел использовать U8G2.
Спасибо!
Мой код здесь для справки. Он не совсем чистый, но пока работает.
@shaiss, 👍0
Обсуждение1 ответ
▲ 1
Вы можете сделать что-то вроде этого:
void loop(void) {
u8g2_uint_t x;
u8g2.firstPage();
do {
// рисуем прокручиваемый текст с текущего смещения
x = offset;
u8g2.setFont(u8g2_font_inb30_mr); // устанавливаем целевой шрифт
do { // повторная отрисовка прокручиваемого текста...
u8g2.drawUTF8(x, 30, text); // рисуем прокручиваемый текст
x += width; // добавить ширину прокручиваемого текста в пикселях
} while( x < u8g2.getDisplayWidth() ); // рисуем снова, пока не заполнится весь дисплей
u8g2.setFont(u8g2_font_inb16_mr); // рисуем текущую ширину в пикселях
u8g2.setCursor(0, 58);
u8g2.print(width); // это значение должно быть меньше 128, если не установлен U8G2_16BIT
} while ( u8g2.nextPage() );
offset-=1; // прокрутка на один пиксель
if ( (u8g2_uint_t)offset < (u8g2_uint_t)-width )
offset = 0; // начать заново
delay(10); // делаем небольшую задержку
}
Код взят с сайта https://github.com.
Это отличная библиотека, но она может потребовать много памяти, очень хорошо подходит для ESP8266 (проверено на nodeMCU) / ESP32.
Конечно, на ESP32 он быстрее.
Используется для небольшого OLED-экрана размером 0,98 дюйма.
,
@Lotfi
Смотрите также:
- U8glib забавная проблема
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- avrdude ser_open() can't set com-state
- Как подключиться к Arduino с помощью WiFi?
- Mac OSX Yosemite не отображает последовательные порты для Uno R3
- Как узнать частоту дискретизации?
Это нужно делать вручную. Прокрутка — это просто вывод подстрок и добавление пробелов. Перенос — это просто вывод подстрок на разных строках., @Majenko
Arduino Uno имеет очень ограниченный объём памяти для реализации прокрутки и переноса текста для драйвера ЖК-дисплея в целом. Скетч должен выполнять эти функции, например, вычислять переносы строк, отображаемые фрагменты текста, обновлять текст при изменении фокуса (например, при прокрутке), сохранять текст и т. д. Судя по всему, ваш скетч рассчитан на ограниченный объём текста, поэтому вы должны иметь возможность выполнять эти вычисления, сохранять состояние, проецировать текстовые поля и т. д., @Mikael Patel