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

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

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

Сообщение RedSky »

Набор блоков для вывода текста на дисплей 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
Описание входов и параметров пользователя внутри блоков.
В архиве блоки и библиотека.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось RedSky 14 сен 2018, 18:55, всего редактировалось 1 раз.
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

С U8g2 пока не очень разобрался. В том примере, что нашёл "Привет мир" требует 29% ОЗУ, и как менять шрифт не разобрался.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sergo
Рядовой
Сообщения: 31
Зарегистрирован: 26 ноя 2017, 01:45
Откуда: Саров

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

Сообщение Sergo »

c NodeMCU работает? а то сколько не пробовал пользовательских блоков - все только с ардуинами работают..
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

[ref]Sergo[/ref], посмотрите в этой теме viewtopic.php?f=133&t=4117, там работает с модифицированной библиотекой от Adafruit, если у Вас уже установлена стандартная нужно заменить.
Аватара пользователя
Sergo
Рядовой
Сообщения: 31
Зарегистрирован: 26 ноя 2017, 01:45
Откуда: Саров

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

Сообщение Sergo »

[ref]RedSky[/ref], спасибо, попробую.

Отправлено спустя 10 минут 46 секунд:
[ref]RedSky[/ref], но вот только не понял где там нужная библиотека, тема-то про "MQTT Брокера на ESP8266 NodeMCU"...
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

Библиотеки в проекте Test_MQTT_SUB_OLED внутри пользовательского блока SSD1306 I2C main NodeMCU, установятся автоматически, когда добавите блок в проект. Только нужно предварительно удалить имеющиеся стандартные (если есть).
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

av писал(а): 23 авг 2018, 10:06вы не пробовали на библиотеке U8g2 ?
Я разбирался, даже сделал ПБ. Пока некогда проверить и выложить.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Пока попробуйте вот это.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Вот вывод текста на U8g2 здесь.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

[ref]RedSky[/ref], Может что то не вижу в настройках, на 2-х разных камнях блоки конфликтуют с библиотекой Wire.h (Нужна для часов) - засыпают мусором почти весь экран, правда места вывода букв - остаются... Без библиотеки - работают отлично... Не сталкивались?
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

Вместе с часами не испытывал, ничего подсказать не могу. А попробуйте в собраном проекте убрать строчку с Wire.h - будут ли работать часы?
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

[ref]RedSky[/ref], Нет, так не компилируется - ругань на функции... Жаль... Очень мало памяти жрут блоки и достаточно шустры...
Аватара пользователя
diman27
Сержант
Сообщения: 291
Зарегистрирован: 06 сен 2015, 07:33
Откуда: Белово
Благодарил (а): 4 раза

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

Сообщение diman27 »

Привет всем. А может кто сделать еще один размер шрифта "самый большой" в два раза больше большого?
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

[ref]RedSky[/ref], Почему то myOLED не хочет работать с макросом F() - начинает менять символы. Нет мыслей почему?
Аватара пользователя
RedSky
Лейтенант
Сообщения: 576
Зарегистрирован: 19 дек 2016, 20:07
Откуда: Днепропетровск
Имя: Алексей
Поблагодарили: 1 раз

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

Сообщение RedSky »

Не могу ответить, не очень хорошо разбираюсь в С++ и архитектуре AVR. Делал блоки на основе примеров автора библиотеки.
Аватара пользователя
ivanpost
Сержант
Сообщения: 203
Зарегистрирован: 24 сен 2016, 22:26
Откуда: Тольятти
Имя: Иван
Благодарил (а): 3 раза
Поблагодарили: 8 раз
Контактная информация:

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

Сообщение ivanpost »

[ref]ivanpost[/ref], Для работы с часами придется заменить библиотеку Wire.h на iarduinoRTC.h. Все в сумме работает очень быстро и ест мало RAM (жалкие 300 байт :smile427: ). флэш -прилично . Так что библиотеки легко можно использовать для 328p. Вот рабочий блок для часов
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sergii2012
Сержант
Сообщения: 152
Зарегистрирован: 07 янв 2019, 16:02
Имя: Сергей
Благодарил (а): 5 раз

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

Сообщение sergii2012 »

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
Лейтенант
Сообщения: 486
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

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

Сообщение kulibinsvv »

sergii2012 писал(а): 09 янв 2019, 21:54как это исправить?
Начнём:
1.
sergii2012 писал(а): 09 янв 2019, 21:54fatal error: avr/pgmspace.h: No such file or directory
Компилятор на чистом английском вам сообщает, что не может найти avr/pgmspace.h. Ошибку вызывает файл:
sergii2012 писал(а): 09 янв 2019, 21:54c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_OLED_txt\src\DefaultFonts.
строка 1, позиция 124.
Всё это можно было узнать, запихнув вывод компилятора в гугл/яндекс переводчик.
2. Наберитесь терпения и прочтите полностью всю ветку.
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Про это писал тут viewtopic.php?p=57227#p57227
sergii2012
Сержант
Сообщения: 152
Зарегистрирован: 07 янв 2019, 16:02
Имя: Сергей
Благодарил (а): 5 раз

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

Сообщение sergii2012 »

aidar_i писал(а): 10 янв 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:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей