ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

Пользовательские блоки для вывода текста.

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
aidar_i
Майор
Сообщения: 1126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 108
Откуда: Уфа
Имя: Айдар
Контактная информация:

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#1

Сообщение aidar_i » 05.02.2019{, 13:04}

Пользовательские блоки (ПБ) для вывода текста для дисплеев на SSD1306 и SH1106 I2C. Можно допилить главный блок и под SPI, по аналогии.
Пример с блоками :
ESP8266_Oled_SSD1306_display2.flp
(170.36 КБ) 165 скачиваний
Пример с ПБ для переноса длинных текстов в следующую строку.Если заданная строка шире указанной ширины текст будет перенесен на следующую строку через пробел или тире.
ESP8266_Oled_перенос текста.flp
(66.77 КБ) 89 скачиваний
ЗДЕСЬ изменил главные блоки, появился выбор размера дисплея 128х32.

Пример Бегущая строка
Библиотека измененная под кириллицу, по рекомендациям Vsevolod61 из форума https://esp8266.ru/forum/
esp8266-oled-ssd1306.rar
(313 КБ) 217 скачиваний
Архив в zip в 22 сообщении.

Добавил еще 3 шрифта,
DialogRus_Italic_10,
ArialRus_Italic_14,
ArialRus_Italic_26
замените в библиотеке файл:
OLEDDisplayFonts_rus.h
(415.11 КБ) 158 скачиваний

Скетч добавил в примеры библиотеки (SSD1306Cyrillic_text_output).
Прочитайте и это viewtopic.php?p=64141#p64141
Последний раз редактировалось aidar_i 08.10.2019{, 08:50}, всего редактировалось 22 раза.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#2

Сообщение aidar_i » 05.02.2019{, 16:00}

Несущественные изменения в библиотеке:
Изменил только пример, чтобы было читабельно для пишущих кодами.
Скачивать и менять предыдущий, не обязательно.
Замените папку шрифтов, см выше.
esp8266-oled-ssd1306.rar
(312.65 КБ) 81 скачивание
Последний раз редактировалось aidar_i 07.02.2019{, 19:29}, всего редактировалось 1 раз.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#3

Сообщение pipapsix » 05.02.2019{, 20:39}

Все отлично, только одно неудобство, может это обсужалось.
Даже если выставляю горизонтально, начало строчки 20! все равно уходит за левую сторону экрана, вот и нужно вычислять методом тыка, сколько поставить, чтобы хватило.
По чем он ведет отсчет? не с конца строчки , вроде.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#4

Сообщение aidar_i » 05.02.2019{, 21:10}

Там есть настройки привязки координат к тексту (text_alignment).
Если стоит, слева (TEXT_ALIGN_LEFT),
х будет привязан к левому краю текста. Если х=0, то текст начнется с левого края.
Если стоит по центру (TEXT_ALIGN_CENTER), х привязан к центру текста, тогда, если х=0, то половина текста уйдет за экран. Чтобы текст встал на середину при такой настройке, х=128/2=64.
Справа (TEXT_ALIGN_RIGHT) , х будет привязан к правому краю текста. Если х=128 (ширина экрана), текст будет выровнен по правому краю.
Попробуйте поставить буквы НННН, например, и погонять, изменяя настройки, по экрану.
Последний раз редактировалось aidar_i 08.02.2019{, 14:58}, всего редактировалось 7 раз.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#5

Сообщение aidar_i » 05.02.2019{, 23:21}

СпойлерПоказать
ОЛЕД.jpeg
Отправлено спустя 2 часа 5 минут 9 секунд:
ПБ для переноса текста выложил в первое сообщение

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#6

Сообщение pipapsix » 06.02.2019{, 17:08}

aidar_i,
Вот сейчас проверяю работу , и происходит наложение, не постоянно а, когда захочет.
В основном вот так, но иногда множится на всю строку, и только в этой строке.
СпойлерПоказать
IMG_20190206_171847.jpg
СпойлерПоказать
2019-02-06_18-06-16.png
Экран +Nodemcu/

Отправлено спустя 27 минут 14 секунд:
Все. Вопрос отменяется. Не в экране дело.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#7

Сообщение aidar_i » 06.02.2019{, 18:54}

Добавил в библиотеку 3 шрифта, а в пример 3 блока: очистки, включения и выключения дисплея.

Отправлено спустя 7 минут 51 секунду:
pipapsix, чтобы не применять много блоков, можно использовать штатный блок суммирование строк или объединить блоки в одну - две (с одним входом En). Чтобы в блоке не было много настроек, можно заполнить значения для проекта (например х и у) в блоке.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#8

Сообщение pipapsix » 07.02.2019{, 07:49}

aidar_i писал(а):
06.02.2019{, 19:02}
можно использовать штатный блок суммирование строк
Эт я в курсе, я специально так сделал, для удобства.
Чет вопросов много появилось.
aidar_i писал(а):
06.02.2019{, 19:02}
Чтобы в блоке не было много настроек, можно заполнить значения для проекта (например х и у) в блоке.
Эт как? как то масло масляное получается.
aidar_i писал(а):
06.02.2019{, 19:02}
или объединить блоки в одну - две (с одним входом En)
Это как и зачем?

Открыл проэкт.
Зачем отключать экран?
Чистка обязательна?? и без нее на данный момент все отлично работает.

Чем дальше вникаю, тем меньше понимаю, уже голова кипит

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#9

Сообщение aidar_i » 07.02.2019{, 08:58}

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

Отправлено спустя 1 минуту 46 секунд:
Чистка стоит в главном блоке, в лооп. Доп блоком можно очистить ещё, когда хотите, см пример.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#10

Сообщение pipapsix » 07.02.2019{, 09:04}

ААА.Ясно понятно.Спасибо.
aidar_i писал(а):
05.02.2019{, 23:20}
Там есть настройки положения текста. Если стоит, слева, текст будет слева и х будет привязан к левому краю текста. Если х=0, то текст начнется с левого края.
Если стоит по центру, х привязан к центру текста, тогда, если х=0, то половина текста уйдет за экран. Чтобы текст встал на середину при такой настройке, х=128/2=64.
Справа, аналогично слева, наоборот.
С пятого раза получилось бегущую строку вывести, на всю строку.

Brand2
Сержант
Сообщения: 176
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 13
Откуда: Haifa
Имя: Alex

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#11

Сообщение Brand2 » 07.02.2019{, 15:29}

pipapsix, можешь выложить блок с бегущей строкой сюда?

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#12

Сообщение pipapsix » 07.02.2019{, 17:27}

Brand2,
ссылка

Brand2
Сержант
Сообщения: 176
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 13
Откуда: Haifa
Имя: Alex

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#13

Сообщение Brand2 » 07.02.2019{, 18:28}

Это блоки для дисплея HD44780,я думал Вы сделали для esp-SSD1306

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 341
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 4
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#14

Сообщение pipapsix » 07.02.2019{, 18:37}

Brand2 писал(а):
07.02.2019{, 18:28}
Это блоки для дисплея HD44780,я думал Вы сделали для esp-SSD1306
А кто мешает его здесь использовать??
СпойлерПоказать
2019-02-07_19-37-21.png
2019-02-07_19-37-21.png (7.6 КБ) 1507 просмотров

Brand2
Сержант
Сообщения: 176
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 13
Откуда: Haifa
Имя: Alex

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#15

Сообщение Brand2 » 07.02.2019{, 19:26}

pipapsix, Точно,я как то сразу и не понял :smile250:

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#16

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

Этот блок не совсем подходит для ОЛЕД, там смещение происходит на один символ, а нужно на один пиксель. Текст идет дерганно. Хорошо было бы иметь блок смещения на один пиксель.
Я сделал пример бегущей строки , доделав ПБ вывода текста, создал входы Х и У. Работает хорошо.
Но есть одна проблема: нужен подсчет длины текста, штатный блок считает длину кириллицы неправильно , тк символ в кириллице 2 байта, а в латинице 1 байт. Я делю на 2 и более менее нормально. Для латиницы не надо делить. Для смешанного текста будет проблемно. Можно, конечно, подсчитать и поставить сразу значение, и их подогнать загрузив скетч.
Бегущая строка.flp
(199.23 КБ) 49 скачиваний

Ingwar
Лейтенант
Сообщения: 669
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 26
Откуда: Ленобласть
Имя: Игорь

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#17

Сообщение Ingwar » 08.02.2019{, 11:02}

При использовании "SSD1306 ESP8266rus главный" компилится, при использовании "SH1106 ESP8266rus главный" вылезает
СпойлерПоказать
pr4:8: error: #include expects "FILENAME" or <FILENAME>

#include "SH1106.h
exit status 1
#include expects "FILENAME" or <FILENAME>
Куда копать?
С точки зрения геометрической прогрессии, если посмотреть сверху,
то снизу покажется, что сбоку ничего не видно.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#18

Сообщение aidar_i » 08.02.2019{, 11:12}

Прошу прощения, допустил ошибку в этом блоке, стер нечаянно кавычку вторую, см ниже. Исправлю.
СпойлерПоказать
Ошибка.png
Ошибка.png (9.09 КБ) 1444 просмотра
Заменил пример с блоками.

Ingwar
Лейтенант
Сообщения: 669
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 26
Откуда: Ленобласть
Имя: Игорь

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#19

Сообщение Ingwar » 08.02.2019{, 13:03}

Продолжение...)
Настройки координат 0 ; 0 число 1234567890
СпойлерПоказать
2.png
esp_sh1106.flp
(64.27 КБ) 46 скачиваний
С точки зрения геометрической прогрессии, если посмотреть сверху,
то снизу покажется, что сбоку ничего не видно.

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

ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).

#20

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

Ответ здесь
В вашем случае text_alignment = TEXT_ALIGN_LEFT, если хотите слева. Или х = 128/2=64, если хотите по середине.

Ответить

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

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

Сейчас этот форум просматривают: aidar_i и 1 гость