Страница 2 из 2

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

Добавлено: 23.08.2018{, 09:21}
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
Описание входов и параметров пользователя внутри блоков.
В архиве блоки и библиотека.

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

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

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

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

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

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

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

Добавлено: 11.01.2019{, 14:20}
Dimm
aidar_i, низкий поклон)

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

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

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

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

Добавлено: 12.01.2019{, 10:40}
aidar_i
В начале темы пишут же про это. Не помогает?

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

Добавлено: 12.01.2019{, 11:34}
sergii2012
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}
В начале темы пишут же про это. Не помогает?
не помогает

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

Добавлено: 14.01.2019{, 16:56}
sergii2012
:smile225: пока не решен вопрос

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

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

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

Добавлено: 01.02.2019{, 20:01}
aidar_i
Накидал блок для теста 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 скачивания

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

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

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

Добавлено: 02.02.2019{, 10:40}
aidar_i
Я думаю, можно, на счёт потенциометра не знаю, надо схему смотреть.

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

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

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

Добавлено: 02.02.2019{, 13:56}
aidar_i
Мне хватает и нравится I2C.

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


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

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

Добавлено: 04.02.2019{, 20:33}
pipapsix
aidar_i,
запустил значит, все ок.
Больше двух строчек можно выводить??
Чет я в дебрях не разобрался))

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

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

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

Добавлено: 05.02.2019{, 13:06}
aidar_i
Выложил сюда.

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

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

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

Добавлено: 10.02.2019{, 08:45}
aidar_i
Автор пишет, это плата за "лёгкость". Почитайте его тему.

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

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