Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SSH1106 no_buffer text support #13

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

AlexanderAni
Copy link

@AlexanderAni AlexanderAni commented Apr 22, 2022

Добавил поддержку текста 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
Copy link
Owner

GyverLibs commented Apr 29, 2022

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

@AlexanderAni
Copy link
Author

AlexanderAni commented May 2, 2022

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

  • pro mini 5v,
  • micro
  • uno

linux mint, PlatformIO

@GyverLibs
Copy link
Owner

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

@AlexanderAni
Copy link
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