Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

Малый расход RAM. Есть кириллица (только русский).

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#1

Сообщение RedSky » 23.08.2018{, 09:21}

Набор блоков для вывода текста на дисплей Oled с интерфейсом I2C. Есть кириллица. Поддерживается только дисплей с разрешением 128х64 и контроллером SSD 1306.
Адреc дисплея на шине должен быть 0х3C (для изменения нужно редактировать блок).
В отличии от блоков с поддержкой графики для работы требует незначительный объём RAM.
Возможности блоков: вывод текста отдельными блоками (аналогично штатным блокам для HD44780),
инвертирование текста для одного блока и/или всего экрана.
Доступно два шрифта: мелкий 5х7 пикселей - всего 8 строк по 21 знаку,
крупный 10х14 пикселей - всего 4 строки по 10 знаков.
Возможно располагать текст на экране произвольным образом, в том числе комбинировать
блоки с мелким и крупным шрифтом, делать вывод строки из нескольких частей, инвертировать часть строки, росполагать разные блоки в одном и том же месте экрана (при условии что они отображаются НЕ одновременно).
Для расположения строк большого шрифта есть особенность: хотя символы во сравнению с малым шрифтом имеют двойной размер, расположение строк аналогично малому шрифту, таким образом один символ занимает две строки со сдвигом вверх.
Поэтому счёт строк начинается со второй с шагом 1/2.
Таким образом:
1-я строка будет под номером 2
2-я под номером 4
3-я под номером 6
4-я под номером 8
Описание входов и параметров пользователя внутри блоков.
В архиве блоки и библиотека.
Вложения
Oled.zip
Блоки и библиотека.
(90.63 КБ) 734 скачивания
IMG_20180822_082842.jpg
Пример
IMG_20180822_111017.jpg
Пример
IMG_20180822_083222.jpg
Пример
IMG_20180822_084251.jpg
Пример
Последний раз редактировалось RedSky 14.09.2018{, 18:55}, всего редактировалось 1 раз.

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#2

Сообщение RedSky » 23.08.2018{, 19:26}

С U8g2 пока не очень разобрался. В том примере, что нашёл "Привет мир" требует 29% ОЗУ, и как менять шрифт не разобрался.
Вложения
пример.zip
(579 байт) 232 скачивания

Аватара пользователя
Sergo
Рядовой
Сообщения: 31
Зарегистрирован: 26.11.2017{, 01:45}
Репутация: 1
Откуда: Саров

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#3

Сообщение Sergo » 20.10.2018{, 20:29}

c NodeMCU работает? а то сколько не пробовал пользовательских блоков - все только с ардуинами работают..

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#4

Сообщение RedSky » 21.10.2018{, 08:20}

Sergo, посмотрите в этой теме viewtopic.php?f=133&t=4117, там работает с модифицированной библиотекой от Adafruit, если у Вас уже установлена стандартная нужно заменить.

Аватара пользователя
Sergo
Рядовой
Сообщения: 31
Зарегистрирован: 26.11.2017{, 01:45}
Репутация: 1
Откуда: Саров

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#5

Сообщение Sergo » 21.10.2018{, 09:43}

RedSky, спасибо, попробую.

Отправлено спустя 10 минут 46 секунд:
RedSky, но вот только не понял где там нужная библиотека, тема-то про "MQTT Брокера на ESP8266 NodeMCU"...

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#6

Сообщение RedSky » 21.10.2018{, 10:47}

Библиотеки в проекте Test_MQTT_SUB_OLED внутри пользовательского блока SSD1306 I2C main NodeMCU, установятся автоматически, когда добавите блок в проект. Только нужно предварительно удалить имеющиеся стандартные (если есть).

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#7

Сообщение aidar_i » 22.10.2018{, 14:14}

av писал(а):
23.08.2018{, 10:06}
вы не пробовали на библиотеке U8g2 ?
Я разбирался, даже сделал ПБ. Пока некогда проверить и выложить.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#8

Сообщение aidar_i » 22.10.2018{, 22:14}

Пока попробуйте вот это.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#9

Сообщение aidar_i » 23.10.2018{, 01:00}

Вот вывод текста на U8g2 здесь.

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#10

Сообщение ivanpost » 23.11.2018{, 23:17}

RedSky, Может что то не вижу в настройках, на 2-х разных камнях блоки конфликтуют с библиотекой Wire.h (Нужна для часов) - засыпают мусором почти весь экран, правда места вывода букв - остаются... Без библиотеки - работают отлично... Не сталкивались?

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#11

Сообщение RedSky » 24.11.2018{, 09:02}

Вместе с часами не испытывал, ничего подсказать не могу. А попробуйте в собраном проекте убрать строчку с Wire.h - будут ли работать часы?

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#12

Сообщение ivanpost » 24.11.2018{, 17:37}

RedSky, Нет, так не компилируется - ругань на функции... Жаль... Очень мало памяти жрут блоки и достаточно шустры...

Аватара пользователя
diman27
Сержант
Сообщения: 269
Зарегистрирован: 06.09.2015{, 07:33}
Репутация: 4
Откуда: Белово

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#13

Сообщение diman27 » 29.11.2018{, 07:16}

Привет всем. А может кто сделать еще один размер шрифта "самый большой" в два раза больше большого?

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#14

Сообщение ivanpost » 11.12.2018{, 18:30}

RedSky, Почему то myOLED не хочет работать с макросом F() - начинает менять символы. Нет мыслей почему?

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#15

Сообщение RedSky » 11.12.2018{, 21:10}

Не могу ответить, не очень хорошо разбираюсь в С++ и архитектуре AVR. Делал блоки на основе примеров автора библиотеки.

Аватара пользователя
ivanpost
Сержант
Сообщения: 140
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#16

Сообщение ivanpost » 12.12.2018{, 23:59}

ivanpost, Для работы с часами придется заменить библиотеку Wire.h на iarduinoRTC.h. Все в сумме работает очень быстро и ест мало RAM (жалкие 300 байт :smile427: ). флэш -прилично . Так что библиотеки легко можно использовать для 328p. Вот рабочий блок для часов
Вложения
Чтение_RTC3231_(CODE).ubi
(20.77 КБ) 138 скачиваний

sergii2012
Сержант
Сообщения: 129
Зарегистрирован: 07.01.2019{, 16:02}
Репутация: 4
Имя: Сергей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#17

Сообщение sergii2012 » 09.01.2019{, 21:54}

c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_OLED_txt\src\DefaultFonts.c:1:124: fatal error: avr/pgmspace.h: No such file or directory

#include <avr/pgmspace.h> // Номер байта п/п: 0 1 2 3 4 5 Номер байта п/п: 0 1 2 3 4 5 ^
compilation terminated.
exit status 1
Ошибка компиляции для платы NodeMCU 0.9 (ESP-12 Module).

при использовании библиотеки из первого поста
как это исправить?

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#18

Сообщение kulibinsvv » 10.01.2019{, 10:00}

sergii2012 писал(а):
09.01.2019{, 21:54}
как это исправить?
Начнём:
1.
sergii2012 писал(а):
09.01.2019{, 21:54}
fatal error: avr/pgmspace.h: No such file or directory
Компилятор на чистом английском вам сообщает, что не может найти avr/pgmspace.h. Ошибку вызывает файл:
sergii2012 писал(а):
09.01.2019{, 21:54}
c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_OLED_txt\src\DefaultFonts.
строка 1, позиция 124.
Всё это можно было узнать, запихнув вывод компилятора в гугл/яндекс переводчик.
2. Наберитесь терпения и прочтите полностью всю ветку.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#19

Сообщение aidar_i » 10.01.2019{, 11:13}

Про это писал тут viewtopic.php?p=57227#p57227

sergii2012
Сержант
Сообщения: 129
Зарегистрирован: 07.01.2019{, 16:02}
Репутация: 4
Имя: Сергей

Вывод текста на дисплеи OLED c интерфейсом I2C и контроллером SSD1306

#20

Сообщение sergii2012 » 10.01.2019{, 20:12}

aidar_i писал(а):
10.01.2019{, 11:13}
Про это писал тут viewtopic.php?p=57227#p57227
спасибо что помогаете мне. :smile390: заменил в библиотеке. олед запустился. вывожу время.
#include <avr\pgmspace.h>
на
#if (defined(__AVR__))
#include <avr\pgmspace.h>
#else
#include <pgmspace.h>
#endif
олед запустился. вывожу время. на экране пару цифр и точки :smile14:
Вложения
IMG_2019-01-10_220658[1].jpg
2.flp
(592.03 КБ) 71 скачивание

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»