Skip to content

SSH1106 no_buffer text support - #13

Open
AlexanderAni wants to merge 8 commits into
GyverLibs:mainfrom
AlexanderAni:main
Open

SSH1106 no_buffer text support#13
AlexanderAni wants to merge 8 commits into
GyverLibs:mainfrom
AlexanderAni:main

Conversation

@AlexanderAni

@AlexanderAni AlexanderAni commented Apr 22, 2022

Copy link
Copy Markdown

Добавил поддержку текста OLED SSH1106 NO_BUFFER

Определения

page - горизонтальные фрагменты дисплея высотой 8 пикселей (1 байт). Наглядно на 16 странице datasheet
NO BUFFER - буфер на стороне дисплея
SSH1106 - дисплей 128x64
SH1106 - дисплей 132x64

Что добавлено

  • clear() - очистка экрана
  • setCursorXY() - добавлена функция setWindowAddress() относящаяся к этому дисплею
  • write() - работа с выводом текста print()

Проверена работа на дисплее SSH1106 по SPI.
Не проверена работа по I2C и совместимость корректировок с другими дисплеями.

Дополнительно

Для отрисовки текста устанавливается столбец 0-127 по X и page 0-8 по Y. setCursor(), setCursorXY().
Команда отправляется на отрисовку сразу нескольких пикселей одной страницы page.
Символы в увеличенном масштабе (scale 2, 3, 4) разбиваются на несколько страниц page.
При смещении _shift текст разбивается на 2 страницы page.

Команды для дисплея SSH1106 128x64 выполняются аналогично командам по дисплею SH1106 132x64. При этом координаты по X сдвигаются на +2. Может лучше добавить отдельную константу, определяющую этот сдвиг по X? тогда можно будет использовать и SH1106 и SSH1106 с отличием только в этой константе.
Есть даташит только на SH1106 (132x64)

Референсы библиотек по работе с SSH1106

Todo

  • Чтение байтов непосредственно с дисплея. Так как запись производится по одному вертикальному байту (по 8 точек по-вертикали), то без чтения с дисплея байты перезаписываются.
  • Графика, точки, линии, прямоугольники, окружности (есть наработки в ветке 1106buffer моего репозитория)
  • Bitmap. Вероятно, надо разбивать bitmap на вертикальные страницы page

@GyverLibs

GyverLibs commented Apr 29, 2022

Copy link
Copy Markdown
Owner

ух большая работа! У меня пока нет свободного времени, на следующей неделе постараюсь проверить и зааппрувить

@AlexanderAni

AlexanderAni commented May 2, 2022

Copy link
Copy Markdown
Author

Добавлю: Тестирую дисплей на arduino через SPI

  • pro mini 5v,
  • micro
  • uno

linux mint, PlatformIO

@GyverLibs

Copy link
Copy Markdown
Owner

Не понял по графике. Графика ведь уже реализована у меня, для работы без буфера нужно было добавить реализацию setWindow под 1106 и в целом всё

@AlexanderAni

Copy link
Copy Markdown
Author

К сожалению, у меня не получилось просто заменить setWindow. Возможно, я так и не до конца понял его работу. Для 1106 не хватило только установки setWindow и мне пришлось добавлять дополнительные методы. Посмотри, посоветуй. Может как-то по-другому

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants