OLED дисплей на SSD1306 (SH1106?) кто нибудь юзал?

  • Васисуалий
  • 25 Июл 2026
serg_765 сказал(а):
А если по прямой ссылке:

... Упс.. уалил прямую, движок форума автоматически вставляет как плеер.

Тогда только через "костыли" смотреть.
Как? Заблокировано по жалобе же написано. Я это понимаю так, что никакие костыли не помогут. Тоже хотел посмотреть.
 
  • 25 Июл 2026
tolik1976 сказал(а):
Заблокировано по жалобе же написано
Я не знаю точно , что значит эта надпись.

Вот, через "костыли":

Screenshot_20260725-124413.jpg
 
  • 27 Июл 2026
tolik1976 сказал(а):
Как? Заблокировано по жалобе же написано.
ага, у меня на канале ютюб ни про никакие блокировки не пишет, а у вас заблокировано.
Вот прямая ссылка для костылей, подчеркнутый пробел после y уберите
y_outu.be/Uo7wuL0fyXc?si=Ur8J4X1o2X4O8yq6
 
  • Like
serg_765
  • 27 Июл 2026
Rick сказал(а):
у меня на канале ютюб ни про никакие блокировки не пишет
Так точно. Всё работает..
 
  • 27 Июл 2026
Да, разобрался. Кажет теперь и первая ссылка. Думаю про проблемы с тюбиком можно убрать из темы.
 
  • 28 Июл 2026
serg_765 сказал(а):
Пока предстоит подумать на чём это воспроизводить, всмысле на каком дисплее и (главное) для чего.
Пока зафиксирую результат.

Перегнал с st7567 на oled sh1106 (настройка I2C Inter-Integrated Circuit; Последовательная асимметричная шина для связи между интегральными схемами. Использует линии связи (SDA и SCL) 800кГц)

Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.

Алгоритм вывода стрелки следующий: во флеш находится последовательность (рисунок) шкалы, и фреймы стрелки в сжатом формате. При выводе на дисплей происходит наложение фрейма стрелки на кадр дисплея. Объяснил как смог.. :) В крайне сжатой форме :)

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

Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.

С программой получилось, что "скины" шкалы, настройки стрелки, и количество фреймов можно очень быстро менять.

Если интересна работа программы, то прикладываю во вложении.

Куда на данный момент это можно применить? Ну например в вольтметр на ina226 или ещё в какой линейный измеритель. Чтобы применить в VU метре, думаю нужно программу расчёта фреймов подправить, чтобы она считала фреймы в логарифмической зависимости.

Вообще изначально программа минимум у меня была просто впихнуть этот алгоритм в слабый МК.

Если остались вопросы по теме - отвечу.. Но на данный момент по разработке усиленный перекур :)
 
Вложения
  • project1.rar
    847,2 КБ · Посмотрено: 3
  • 11 Авг 2026
Разгонял, разгонял sh1106 по i2c - выше 800kHz планку не преодолеть. Даже на плате пытался что-то перепаивать. Там походу ещё на входе фильтраця стоит, если импульс короче скольких-то ns, то отсекает.

Купил такой же, но SPI. Цена 1:1. Заодно код стал попроще, не нужно все эти айтуси старт/стоп и кучу адресов.

Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.
 
  • 11 Авг 2026
serg_765 сказал(а):
Купил такой же, но SPI. Цена 1:1. Заодно код стал попроще

Ну и вопрос - а сколько фреймов (кадров) получилось на него вывести? И, если можно, то для сравнения, сколько по И2Ц получалось?
 
  • 11 Авг 2026
Васисуалий сказал(а):
то для сравнения, сколько по И2Ц получалось?
Вопрос очень корректен :)

На разогнанном айтуси удавалось вывести 72 фрейма. Смысла разгонять так и выше действительно нет. Тем более частота обновления дисплея по дефолту примерно 100Гц, но можно увеличить на +50% или уменьшить на -25%. То есть разгонять выше частоты обновления действительно не имеет смысла.

Получается, что наиболее существенный профит только в упрощении кода. У меня же, как выше писал, без всяких буферов в ОЗУ, а смешивание шкалы со стрелкой происходит "на лету" в цикле, с кучей условий. Среди одного из неприятных условий - это проверка конца страницы. Вот тут и начинаются переключения со стопами, стартами и отправками адреса чипа.. А на SPI же просто D/C переключить, без адресов.
 
  • Like
Васисуалий
  • 23 Авг 2026
ЭФЭ сказал(а):
Screenshot_20241011-153447.jpg
Странно, как ярко горят пиксели на матрице :)

Цветные не стали обсуждать? На счёт цветных тема более приземлёная и реальная. Со стрелкой на цветных замудрёно, а вот с диаграмами намного проще оказалось. На картинке диаграма на 29 позиций. Накидал по быстрому на 13 позиций особо не заморачиваясь качеством, чтобы только оценить объём если выводить кадрами с флеша.

Про скорость отрисовки: тестовое изображение 121*150 = 18150 пикселей.
на один пиксель уходит примерно 42 такта CPU (16 бит напикслель + проверка spif), на 16 МГц примерно за 0,05 сек выведется на экран один блок диаграмы.

Про объём: на 13 положений изображение сжимается в RLE до 850 байт
850*13 = 11 050 байт веса в 13-ти кадрах.

Если жать в RLE на 29 положений - объём на 1 кадр получится больше и кадров будет больше, но есть вариант выводить изображение половинками, то есть общий объём всех кадров уменьшится примерно 1,7 раза... вобщем на вскидку общий объём этих картинок будет в районе 24кбайт.

В мегу328 свободно уместится и останется под обработку напряжения или чего там..

Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.

причём на экране таких диаграм можно несколько расположить... только цвета менять, а подпрограмма вывода одна.
 
  • 25 Авг 2026
Не надоел? А то гоните :)

Продолжил эксперименты. Цель пока понять сколько вся эта красота весит и как выводится. Время тратится только на рисование в редакторе, остальной процесс на автомате.

Несколько лет назад хотел повторить что-то подобное из этого:

264f5b0f-f25f-4ada-b211-418a45e902f1.jpg

но тогда не умел выводить многоцветное изображение.

Нарисовал поаккуратнее, под дисплей 160*128 st7735 (просто сейчас вывел на большой - лень переключать дисплеи)
Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.

Неактивные сегменты будут закрашиваться серым. Закрасил пока только один - чтобы программа правильно скодировала 5-й цвет и корректно вывела размер одного фрейма.

Скорость: 20480 пикселей на 16 МГц отрисуются за примерно 0,054 сек.
Объём набора фреймов: 1314*16=21024 байт, в мегу328 влезет, но уже придумал как это сокращать в почти 2 раза а иногда и больше.

Текст скрыт от гостей. Для просмотра войдите в свой аккаунт.

Теперь сравнение моего опытного результата с дисплеем профессионального прибора, что выше:
У меня фрейм 160*128 - 16 фреймов
На том приборе фрейм примерно 160*(85 или 90) - 9 или 12 фреймов. Что меньше и по фреймам и по кадру. Ещё и по цветам меньше: я неактивные сегменты красил серым, а в том приборе цветом фона, что немного меняет принцип кодирования с rle_8 на rle_4. То есть такая диаграмма в мегу328 влетает со свистом, без дополнительных танцев.

Пока перекур.. Куда это применить планов пока не имею - пока процесс ради процесса. Но картина по возможностям вырисовалась вполне реальная.
 
  • Like
Васисуалий
  • 5 Сен 2026
На досуге баловался с геометрической заливкой дисплея sh1106 SPI

ca2f937d-1618-401c-ad30-016cb6f489ce.jpg e302797b-f7c7-4e76-b378-15bd2059dbbe.jpg 5e2d8e4f-c9cf-4c79-9b6d-1c8117e9babd.jpg 31f754e7-69cd-464d-90a4-858ed774d406.jpg 5c8f9fe2-5990-4e56-8dfd-28672cd663ae.jpg

ЗАЛИВКА ДИАГОНАЛЯМИ
ДИАГОНАЛЬНАЯ СЕТКА
РЕШЁТКА
"ШАХМАТНАЯ ДОСКА" 1x1px
"ШАХМАТНАЯ ДОСКА" 2x2px
"ШАХМАТНАЯ ДОСКА" 4x4px
"ШАХМАТНАЯ ДОСКА" 8x8px
"ШАХМАТНАЯ ДОСКА" 16x16px

Во время экспериментов ещё всякие узоры получались, гармоничные и не очень.

Заливки простые: в основном проверка чётности определённого бита в счётчике столбцов и инверсия выводимого байта. А шахмотка 1х1 вообще просто инверсия 0xAA или 0x55. Диагонали путём сдвига байта в каждом столбце.

Делал под SPI, но не составит труда и на I2C перегнать. Подойдёт для дисплеев с постраничным выводом SH1106, SSD1306, st7565, st7567 и др. Ассемблерный код во вложении.

Зачем это нужно? Ну лишь в двух устройствах применял как фон, а в центре "лого" при загрузке. А так в основном баловство :)
 
Вложения
  • geometric_fills.rar
    1,4 КБ · Посмотрено: 0
  • Like
tolik1976 и Васисуалий

Для ответов войдите или зарегистрируйтесь

 qtcreator, openocd, atmel-ice, отладка класса  Atmega8 регистры