Графические дисплеи и библиотеки к ним

Продолжим про ST7565R и библиотеки к нему в этой теме.

Дисплей: https://aliexpress.ru/item/1005001621784395.html

Библиотека: GitHub - olikraus/U8g2_Arduino: U8glib V2 library for Arduino

Собственно смотрю примеры для данной библиотеки.
Собственно 1405 байт ОЗУ откушивала библиотека при компиляции full_buffer, запустил page_buffer, уже по лехше:

Скетч использует 8142 байт (24%) памяти устройства. Всего доступно 32768 байт.
Глобальные переменные используют 528 байт (25%) динамической памяти, оставляя 1520 байт для локальных переменных. Максимум: 2048 байт.

Но работу пока не очень понимаю, код ниже прикладываю:

void loop(void) {
  char m_str[3];
  strcpy(m_str, u8x8_u8toa(m, 2));		/* convert m to a string with two digits */
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_logisoso62_tn);
    u8g2.drawStr(0,63,"9");
    u8g2.drawStr(33,63,":");
    u8g2.drawStr(50,63,m_str);
  } while ( u8g2.nextPage() );
  delay(1000);
  m++;
  if ( m == 60 )
    m = 0;
}

Если не понимаешь, нада свою библиотеку писать, с крикетом и графинями.

2 лайка

Да ну почему?
Дисплеи приедут - буду экспериментировать :smiley:
А пока и просто почитать можно, ты ж мне не запретишь? Правда? ))

Я тока разрешать могу.
Кста, на старом форуме тема есть по 7565, ее тоже почитай, я разрешил.

Да, я видел. И даже не одна… )

че там экспериментировать :frowning:
первая же ссылка в инете на инициализацию дисплея
Подключение дисплея на базе ST7735 к микроконтроллеру STM32. (microtechnics.ru)
тупо в SPI пинать данные.
а рисовать еще проще, вспоминаем геометрию школы и растровую графику.

Что интересно, кроме инитов F и 1

U8G2_ST7920_128X64_F_SW_SPI u8g2(...)
U8G2_ST7920_128X64_1_SW_SPI u8g2(...)

В библиотеке есть ещё инит 2

U8G2_ST7920_128X64_2_SW_SPI u8g2(...)

Не помню уж, правда, что он обозначает ))

а чё через софтовый SPI?

К чему вопрос?

к инициализации дисплея, зачем софтовый SPI использовать, цель какова, когда есть HW?
U8G2_ST7920_128X64_1_SW_SPI u8g2(…)

Я кому-то не даю SW на HW изменить или что? Написано о типе инита, а не о SW/HW/HZ. Нахрен в каждой теме флуд устраивать бессмысленный?

@BOOM , я не уловил, а в чем вопрос то?
Если в используемой памяти, то, как показывают несложные арифметические расчеты, объем буфера составляет 128*64/8=1024 байка АКА 1 кбайт.
Нужен Вам буфер или нет, зависит от того, как именно Вы собираетесь использовать дисплей: если для вывода текста, то буфер не нужен, если для пиксельной графики - нужен.

Попытайтесь все-таки сформулировать вопросы, чтобы был предмет для обсуждения. Пока, что мы обсуждаем в этой теме - непонятно.

да нет, просто на HW еще есть режимы, кроме тобой озвученных, об этом жеж шла речь

Просто напиши, какие ты знаешь ещё режимы на HW - вот и всё.

U8G2_ST7920_128X64_1_HW_SPI
U8G2_ST7920_128X64_1_2ND_HW_SPI
U8G2_ST7920_128X64_2_HW_SPI
U8G2_ST7920_128X64_2_2ND_HW_SPI
U8G2_ST7920_128X64_F_HW_SPI
U8G2_ST7920_128X64_F_2ND_HW_SPI

Хочется использовать этот дисплей с Atmega328P, так чтобы ресурсов хватало.
А получить, ну для начала что-то типа этого (изменяемое изображение и текст, не динамично):


А там дальше может и усложнить захочется (меню графическое и тп, если памяти хватит).

А вопрос был в том, что full buffer 69% ОЗУ съедает, но в page buffer всего 25%, так что буду его использовать.

Те же иниты - F , 1 и 2.

Что нового?

Ну первое, что следует сделать, это определиться с проектом, и только потом подбирать под этот проект комплектующие (в том числе - дисплей). Например, я в своем последнем проекте (на форуме его еще не представлял) долго выбирал между 2" цветным экраном и экраном аналогичным тому, что описывается в данной теме. В результате выбор склонился в пользу последнего.
Последний является монохромным - по 1 биту на пиксель, что означает, что минимально адресуемая порция данных определяет отображение сразу 8 точек, т.е. независимая адресация точек невозможна. Что серьезно ограничивает применение пиксельной графики (точнее, требует для нее буфера, впрочем, необязательно на весь экран).
Не требуют буфера (при правильной организации):

  • текст,
  • пиктограммы,
  • логотипы,
  • другие изображения, подпадающие под определенные ограничения по размеру (как правило, кратные 8 по одной из координат) и положению на экране (задается позицией кратной 8 по той же координате).

Все эти изображения могут храниться в PROGMEM или на карте памяти и выводиться на экран побайтно (а не попиксельно). На самом деле это достаточно много. Если у Вкс есть OLED дисплейчик 1306, можете посмотреть примеры вывода без буфера (включая даже анимацию) ASOLED - компактная библиотека для OLED дисплея 128х64 с кириллицей UTF-8 | Аппаратная платформа Arduino

Чёрно-белый вариант в печатной оправе красивый.