ESP8266/ESP32 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 05 фев 2019, 13:04
aidar_i
Пользовательские блоки (ПБ) для вывода текста для дисплеев на SSD1306 и SH1106 I2C. Можно допилить главный блок и под SPI, по аналогии. Блоки работают с ESP8266 и с ESP32.
Пример с блоками :
ESP8266_Oled_SSD1306_display2.flp
Пример с ПБ для переноса длинных текстов в следующую строку.Если заданная строка шире указанной ширины текст будет перенесен на следующую строку через пробел или тире.
ESP8266_Oled_перенос текста.flp
ЗДЕСЬ изменил главные блоки, появился выбор размера дисплея 128х32.
Архив в zip в 22 сообщении.
------------------------------------------------------------------------------------------------------------------------------
Добавил еще 3 шрифта,
DialogRus_Italic_10,
ArialRus_Italic_14,
ArialRus_Italic_26
замените в библиотеке файл шрифтов, иначе получите ошибку при использовании шрифта ArialRus:
OLEDDisplayFonts_rus.h
Библиотека с добавленным файлом шрифтов
esp8266-oled-ssd1306.rar
------------------------------------------------------------------------------------------------------------------------------
Добавил блок очистки выбранного участка дисплея сюда.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 05 фев 2019, 16:00
aidar_i
Несущественные изменения в библиотеке:
Изменил только пример, чтобы было читабельно для пишущих кодами.
Скачивать и менять предыдущий, не обязательно.
Замените папку шрифтов, см выше.
esp8266-oled-ssd1306.rar
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 05 фев 2019, 20:39
pipapsix
Все отлично, только одно неудобство, может это обсужалось.
Даже если выставляю горизонтально, начало строчки 20! все равно уходит за левую сторону экрана, вот и нужно вычислять методом тыка, сколько поставить, чтобы хватило.
По чем он ведет отсчет? не с конца строчки , вроде.
ESP8266/ESP32 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 05 фев 2019, 23:20
aidar_i
Там есть настройки привязки координат к тексту (text_alignment).
Если стоит, слева (TEXT_ALIGN_LEFT),
х будет привязан к левому краю текста. Если х=0, то текст начнется с левого края.
Если стоит по центру (TEXT_ALIGN_CENTER), х привязан к центру текста, тогда, если х=0, то половина текста уйдет за экран. Чтобы текст встал на середину при такой настройке, х=128/2=64.
Справа (TEXT_ALIGN_RIGHT) , х будет привязан к правому краю текста. Если х=127 (ширина экрана), текст будет выровнен по правому краю.
Попробуйте поставить буквы НННН, например, и погонять, изменяя настройки, по экрану.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 05 фев 2019, 23:21
aidar_i
[spoiler]
ОЛЕД.jpeg
[/spoiler]Отправлено спустя 2 часа 5 минут 9 секунд:
ПБ для переноса текста выложил в первое сообщение
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 06 фев 2019, 17:35
pipapsix
[ref]aidar_i[/ref],
Вот сейчас проверяю работу , и происходит наложение, не постоянно а, когда захочет.
В основном вот так, но иногда множится на всю строку, и только в этой строке.
[spoiler]
IMG_20190206_171847.jpg
[/spoiler]
[spoiler]
2019-02-06_18-06-16.png
[/spoiler]Экран +Nodemcu/
Отправлено спустя 27 минут 14 секунд:
Все. Вопрос отменяется. Не в экране дело.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 06 фев 2019, 19:02
aidar_i
Добавил в библиотеку 3 шрифта, а в пример 3 блока: очистки, включения и выключения дисплея.
Отправлено спустя 7 минут 51 секунду:
pipapsix, чтобы не применять много блоков, можно использовать штатный блок суммирование строк или объединить блоки в одну - две (с одним входом En). Чтобы в блоке не было много настроек, можно заполнить значения для проекта (например х и у) в блоке.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 07:49
pipapsix
aidar_i писал(а): 06 фев 2019, 19:02можно использовать штатный блок суммирование строк
Эт я в курсе, я специально так сделал, для удобства.
Чет вопросов много появилось.
aidar_i писал(а): 06 фев 2019, 19:02Чтобы в блоке не было много настроек, можно заполнить значения для проекта (например х и у) в блоке.
Эт как? как то масло масляное получается.
aidar_i писал(а): 06 фев 2019, 19:02или объединить блоки в одну - две (с одним входом En)
Это как и зачем?
Открыл проэкт.
Зачем отключать экран?
Чистка обязательна?? и без нее на данный момент все отлично работает.
Чем дальше вникаю, тем меньше понимаю, уже голова кипит
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 08:59
aidar_i
Делайте, как делаете.
Дополнительные блоки я добавил , чтобы можно было применять по необходимости, пример даже привел. Вдруг захотите, чтобы экран постоянно не горел, олед дисплей, пишут, имеет ограниченный срок службы.
Отправлено спустя 1 минуту 46 секунд:
Чистка стоит в главном блоке, в лооп. Доп блоком можно очистить ещё, когда хотите, см пример.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 09:04
pipapsix
ААА.Ясно понятно.Спасибо.
aidar_i писал(а): 05 фев 2019, 23:20Там есть настройки положения текста. Если стоит, слева, текст будет слева и х будет привязан к левому краю текста. Если х=0, то текст начнется с левого края.
Если стоит по центру, х привязан к центру текста, тогда, если х=0, то половина текста уйдет за экран. Чтобы текст встал на середину при такой настройке, х=128/2=64.
Справа, аналогично слева, наоборот.
С пятого раза получилось бегущую строку вывести, на всю строку.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 15:29
Brand2
[ref]pipapsix[/ref], можешь выложить блок с бегущей строкой сюда?
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 18:28
Brand2
Это блоки для дисплея HD44780,я думал Вы сделали для esp-SSD1306
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 18:37
pipapsix
Brand2 писал(а): 07 фев 2019, 18:28Это блоки для дисплея HD44780,я думал Вы сделали для esp-SSD1306
А кто мешает его здесь использовать??
[spoiler]
2019-02-07_19-37-21.png
[/spoiler]
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 07 фев 2019, 19:26
Brand2
[ref]pipapsix[/ref], Точно,я как то сразу и не понял
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 08 фев 2019, 01:01
aidar_i
Этот блок не совсем подходит для ОЛЕД, там смещение происходит на один символ, а нужно на один пиксель. Текст идет дерганно. Хорошо было бы иметь блок смещения на один пиксель.
Я сделал пример бегущей строки , доделав ПБ вывода текста, создал входы Х и У. Работает хорошо.
Но есть одна проблема: нужен подсчет длины текста, штатный блок считает длину кириллицы неправильно , тк символ в кириллице 2 байта, а в латинице 1 байт. Я делю на 2 и более менее нормально. Для латиницы не надо делить. Для смешанного текста будет проблемно. Можно, конечно, подсчитать и поставить сразу значение, и их подогнать загрузив скетч.
Бегущая строка.flp
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 08 фев 2019, 11:02
Ingwar
При использовании "SSD1306 ESP8266rus главный" компилится, при использовании "SH1106 ESP8266rus главный" вылезает
[spoiler]pr4:8: error: #include expects "FILENAME" or <FILENAME>
#include "SH1106.h
exit status 1
#include expects "FILENAME" or <FILENAME>[/spoiler]
Куда копать?
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 08 фев 2019, 11:12
aidar_i
Прошу прощения, допустил ошибку в этом блоке, стер нечаянно кавычку вторую, см ниже. Исправлю.
[spoiler]
Ошибка.png
[/spoiler]
Заменил пример с блоками.
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 08 фев 2019, 13:03
Ingwar
Продолжение...)
Настройки координат 0 ; 0 число 1234567890
[spoiler]
2.png
[/spoiler]
esp_sh1106.flp
ESP8266 и дисплеи OLED (библиотека esp8266-oled-ssd1306).
Добавлено: 08 фев 2019, 14:50
aidar_i
Ответ здесь
В вашем случае text_alignment = TEXT_ALIGN_LEFT, если хотите слева. Или х = 128/2=64, если хотите по середине.