Вывод текста на дисплеи 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 раз.

Dimm
Рядовой
Сообщения: 15
Зарегистрирован: 29.11.2018{, 16:56}
Репутация: 0
Имя: Дмитрий

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

#21

Сообщение Dimm » 11.01.2019{, 10:55}

Приветствую всех! Заюзал данный ПБ, вроде понравилось) Имеет место явление:
не сбрасываются предидущие значения. если, например, вывести трехзначное число, потом на этом же месте вывести двухзначное, то видеть мы будем трехзначное. т.к. третий знак не погас. Например, выводим 99 - видим 99, затем выводим 100- видим 100, потом обратно 99 - увидим 199. Предполагаю, что где-то что-то должно обнуляться... Может знает кто как лечить?, т.к. в коде я нешипко шарю

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

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

#22

Сообщение kulibinsvv » 11.01.2019{, 12:06}

sergii2012 писал(а):
10.01.2019{, 20:12}
на экране пару цифр и точки
Проверяйте питание дисплея и контакты подключения (типа "проводок отвалился").
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

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

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

#23

Сообщение aidar_i » 11.01.2019{, 12:46}

Dimm , у него в блоке нужно передергивать EN, чтобы стирался текст.
Пример
Блок от RedSky.flp
(588.85 КБ) 125 скачиваний

Dimm
Рядовой
Сообщения: 15
Зарегистрирован: 29.11.2018{, 16:56}
Репутация: 0
Имя: Дмитрий

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

#24

Сообщение Dimm » 11.01.2019{, 14:20}

aidar_i, низкий поклон)

Отправлено спустя 10 минут 8 секунд:
aidar_i писал(а):
11.01.2019{, 12:46}
нужно передергивать EN
правда теперь моргает весь показометр, но опять же не ясно будет это напрягать или нет... эксплуатация покажет

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

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

#25

Сообщение sergii2012 » 12.01.2019{, 09:08}

kulibinsvv писал(а):
11.01.2019{, 12:06}
sergii2012 писал(а):
10.01.2019{, 20:12}
на экране пару цифр и точки
Проверяйте питание дисплея и контакты подключения (типа "проводок отвалился").
примеры из другой библиотеки работают как надо, так что дело не в проводке.

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

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

#26

Сообщение aidar_i » 12.01.2019{, 10:40}

В начале темы пишут же про это. Не помогает?

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

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

#27

Сообщение sergii2012 » 12.01.2019{, 11:34}

aidar_i писал(а):
12.01.2019{, 10:40}
В начале темы пишут же про это. Не помогает?
где именно? :smile14:

Отправлено спустя 17 минут 28 секунд:
ivanpost писал(а):
12.12.2018{, 23:59}
ivanpost, Для работы с часами придется заменить библиотеку Wire.h на iarduinoRTC.h. Все в сумме работает очень быстро и ест мало RAM (жалкие 300 байт :smile427: ). флэш -прилично . Так что библиотеки легко можно использовать для 328p. Вот рабочий блок для часов
C:\Users\sergi\AppData\Local\Temp\flprog\pr1\pr1.ino:5:28: warning: extra tokens at end of #include directive [enabled by default]

#include "user_interface.h";

^

In file included from c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_RTC/iarduino_RTC.h:28:0,

from C:\Users\sergi\AppData\Local\Temp\flprog\pr1\pr1.ino:2:

c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_RTC/iarduino_RTC_DS1307.h: In member function 'void iarduino_RTC_DS1307::funcBegin(uint32_t)':

c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_RTC/iarduino_RTC_DS1307.h:65:248: error: 'TWBR' was not declared in this scope

void funcBegin (uint32_t j) /* Установка регистров шины и подтяжка выводов (скорость шины в кГц) */ {pinMode(SDA, INPUT); pinMode(SCL, INPUT); digitalWrite(SDA, 1); digitalWrite(SCL, 1); TWBR=((F_CPU/(j*1000))-16)/2; if(TWBR<10){TWBR=10;} TWSR&=(~(_BV(TWPS1)|_BV(TWPS0))); }

^

c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_RTC/iarduino_RTC_DS1307.h:65:300: error: 'TWSR' was not declared in this scope

void funcBegin (uint32_t j) /* Установка регистров шины и подтяжка выводов (скорость шины в кГц) */ {pinMode(SDA, INPUT); pinMode(SCL, INPUT); digitalWrite(SDA, 1); digitalWrite(SCL, 1); TWBR=((F_CPU/(j*1000))-16)/2; if(TWBR<10){TWBR=10;} TWSR&=(~(_BV(TWPS1)|_BV(TWPS0))); }

^

In file included from sketch\pr1.ino.cpp:1:0:

c:\Program Files (x86)\FLProg\ideV2\libraries\iarduino_RTC/iarduino_RTC_DS1307.h:65:313: error: 'TWPS1' was not declared in this scope

void funcBegin (uint32_t j) /* Установка регистров шины и подтяжка выводов (скорость шины в кГц) */ {pinMode(SDA, INPUT); pinMode(SCL, INPUT); digitalWrite(SDA, 1); digitalWrite(SCL, 1); TWBR=((F_CPU/(j*1000))-16)/2; if(TWBR<10){TWBR=10;} TWSR&=(~(_BV(TWPS1)|_BV(TWPS0))); }

^

c:\Program Files (x86)\FLProg\ideV2\portable\packages\esp8266\hardware\esp8266\2.3.0-rc2\cores\esp8266/Arduino.h:184:25: note: in definition of macro '_BV'

Отправлено спустя 1 час 31 минуту 5 секунд:
aidar_i писал(а):
12.01.2019{, 10:40}
В начале темы пишут же про это. Не помогает?
не помогает

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

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

#28

Сообщение sergii2012 » 14.01.2019{, 16:56}

:smile225: пока не решен вопрос

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

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

#29

Сообщение aidar_i » 14.01.2019{, 18:00}

В просторах интернета есть много примеров с разными библиотеками. Проверьте, какие Вам нравятся, ПБ для олед дисплеев тоже есть в форуме разные.
Еще попробуйте заменить драйверы

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

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

#30

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

Накидал блок для теста OLED + ESP8266. Без кириллицы.
Модель дисплея выберите в "редактирование" блока, в DeclareSection, (удалите ненужный или закомментируйте, по умолчанию стоит
#include "SH1106.h"
SH1106 display(adr_disp, pin_SDA, pin_SCK);
ESP8266+OLED.flp
(60.67 КБ) 113 скачиваний
Библиотека
esp8266-oled-ssd1306-master.zip
(295.71 КБ) 104 скачивания

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#31

Сообщение ingener » 02.02.2019{, 10:36}

А вот вопрос немного не в тему, но касательно дисплея и 12С. Можно ли, если 12С уже впаян в 1602, подключать дисплей напрямую? То есть, к пинам припаивать провода, идущие к выводам Ардуино?
Больно хлопотно выпаивать 12С с дисплея, да и потенциометр яркости уже на месте.

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

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

#32

Сообщение aidar_i » 02.02.2019{, 10:40}

Я думаю, можно, на счёт потенциометра не знаю, надо схему смотреть.

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

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

#33

Сообщение seri0shka » 02.02.2019{, 12:18}

Простите, влезу в тему со своим вопросм, чтоб не создавать новую. Есть возможность купить OLED 128 х 64 с I2C или с SPI (с другими заказами за компанию). Какой из этих интерфейсов проще и удобнее для программирования в ИДЕ и ФЛпрог?

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

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

#34

Сообщение aidar_i » 02.02.2019{, 13:56}

Мне хватает и нравится I2C.

Отправлено спустя 1 минуту 57 секунд:
1602. Лучше отпаяйте и поставьте разъем.


Отправлено спустя 1 час 52 минуты 8 секунд:
Подключил
СпойлерПоказать
IMG_20190202_174402.jpg
СпойлерПоказать
IMG_20190202_174424.jpg

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

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

#35

Сообщение pipapsix » 04.02.2019{, 20:33}

aidar_i,
запустил значит, все ок.
Больше двух строчек можно выводить??
Чет я в дебрях не разобрался))

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

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

#36

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

Да , работает, сегодня прикрутил кириллицу. Можно добавить строки, сколько влезет.
Может работать и с SPI.
Выложу позже, пока доделываю.
СпойлерПоказать
IMG-20190205-WA0002.jpeg
СпойлерПоказать
IMG-20190205-WA0004.jpeg
СпойлерПоказать
IMG-20190205-WA0006.jpeg

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

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

#37

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

Выложил сюда.

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

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

#38

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

av писал(а):
03.02.2019{, 11:39}
Если использовать вместе с ардуиной не советую этот дисплей использовать вообще. Уж очень много ОЗУ съедает не оставляя места для остального алгоритма проекта.
Попробуйте легкую библиотеку ASOLED. Я его приспособил и к ESP8266. Он выводит только текст.
ASOLED.rar
(11.48 КБ) 105 скачиваний
sketchASOLED.ino
(1.94 КБ) 98 скачиваний
Отпишитесь на сколько она легче.

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

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

#39

Сообщение aidar_i » 10.02.2019{, 08:45}

Автор пишет, это плата за "лёгкость". Почитайте его тему.

Shurik2975
Рядовой
Сообщения: 78
Зарегистрирован: 29.04.2018{, 22:59}
Репутация: 1
Имя: Александр

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

#40

Сообщение Shurik2975 » 09.05.2019{, 10:02}

Здравствуйте. Может не совсем в ту тему но по той же тематике. Подскажите пожалуйста почему вот этот блок Автора программы SSD1306 print не отображает кириллицу, хотя автор пишет что он с кириллицей дружит?
Уже не актуально, кириллица появилась.
Админ можете удалить сообщение.

Ответить

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