OLED дисплей 128х64 SPI - пользовательский блок на Си

Использование дисплеев и обсуждение пользовательских блоков к ним
Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#1

Сообщение Сергей » 31.01.2016{, 20:52}

Вот выродил наконец более вменяемый блок для ОЛЭД дисплея.
Получился громоздкий по входам но функционалу неплохо получилось.
Умеет рисовать точку, линию, прямоугольник, залитый прямоугольник, круг, заполненый круг, прямоуг. с закруленными углами, то же заполненный, треугольник заполненный/прозрачный, выводить текст.
Не знаю как лучше. Все в одном (т.е. все команды дисплея в одном блок) или каждую команду отдельным блоком??? Посоветуйте кто как думает.

Или может наверное лучше на каждую функцию отдельный блок?
Блок 1
Блок 2
Вложения
6467277.png

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#2

Сообщение Сергей » 31.01.2016{, 21:00}

Проблема еще с компилятором.
При возникновении таких ошибок
6206601.png
в 1. случае надо дописать идентификатор блока, а во втором убрать задвоенный. Эти несколько ошибок пока править надо вручную. От куда берутся не знаю, автору сообщил. Пока так. Если все ошибки исправить, то компелируется нормально.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

OLED дисплей 128х64 SPI - пользовательский блок на Си

#3

Сообщение Слимпер » 31.01.2016{, 22:23}

Сергей писал(а):в 1. случае надо дописать идентификатор блока, а во втором убрать задвоенный. Эти несколько ошибок пока править надо вручную. От куда берутся не знаю, автору сообщил. Пока так. Если все ошибки исправить, то компелируется нормально.
С задвоением я тоже встречался, как понял он может возникать если есть два похожих названия отличающихся на подчёркивание:
у вас похоже одновременно есть 

text и En_text и  x_text и  y_text  

чтобы пропало нужно убрать, назвать их скажем так 

text1 и En_text  x_text и  y_text 

Первая ошибка тоже наверное из-за знака "_" , попробуй
ClearLcd вместо Clear_lcd

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#4

Сообщение Сергей » 31.01.2016{, 22:52}

Слимпер, да все верно, это изза подчеркивания.

Блоки заменил по ссылкам в 1м сообщении. Теперь все компилируется.

krom23
Лейтенант
Сообщения: 444
Зарегистрирован: 06.09.2015{, 15:18}
Репутация: 12
Откуда: Калуга
Имя: Андрей

OLED дисплей 128х64 SPI - пользовательский блок на Си

#5

Сообщение krom23 » 01.02.2016{, 00:13}

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

Аватара пользователя
Skull
Лейтенант
Сообщения: 424
Зарегистрирован: 08.09.2015{, 16:18}
Репутация: 4
Откуда: Мариуполь

OLED дисплей 128х64 SPI - пользовательский блок на Си

#6

Сообщение Skull » 01.02.2016{, 01:11}

Изображение МАМА ))
А вообще работает, спасибо!!
Сереж, погляди вот это- русифицированная

Описание ТУТ
Вложения
OLED_I2C_UKR_RU.rar
(375.6 КБ) 177 скачиваний
Последний раз редактировалось Skull 01.02.2016{, 01:19}, всего редактировалось 1 раз.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#7

Сообщение Сергей » 01.02.2016{, 03:25}

krom23, да, скорее всего надо будет делать отдельно маленькими. А то памяти много занимает.
Опыты продолжаются. Сейчас набрасываю аналоговые часы. Для примера. Что бы понять на сколько полезный и удобный блок. Пришлось тригонометрию вспоминать Изображение . Но результаты есть. Сейчас видео выложу, а как доделаю то и проект.
[video][/video]
Короче что бы прорисовывать стрелку, известны только начальные координаты линии и угол (6 град или 0,101 рад) на который поворачивается линия каждую секунду. Через синус и косинус определяем ее конечние координаты  X и Y. Прибавляем или отнимаем от центральных координат радиус умноженный на полученный результат.... получаем меняющиеся координаты линии...
Блоки разобью уже завтра на маленькие. Продумаю как это будет. Надо не только рисовать, а еще и очищать дисплей, стирать отдельные области. И я не представляю как оно должно выглядеть. К примеру, каждая фигура это отдельный блок, то есть и стирание отдельными. А инициализацию и запуск дисплея? Они же будут дублироваться в каждом блоке. Или делать отдельно блок инициализации ЛСД?. Не пойму пока как лучше.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#8

Сообщение Сергей » 01.02.2016{, 03:29}

Skull, позже. Сначала блок до ума доведу.
Вообще круто что теперь есть возможность Си вставлять.
Спасибо автору!!! Я ведь раньше Си знал только в общих чертах. А теперь, спустя неделю уже блоки делаю, о чем раньше только мечтал и ждал пока кто то сделает.

Evgesha
Лейтенант
Сообщения: 525
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 20
Откуда: Kazakhstan
Имя: Evgesha

OLED дисплей 128х64 SPI - пользовательский блок на Си

#9

Сообщение Evgesha » 12.02.2016{, 18:50}

Сергей немогли бы выложить библиотеку, у меня ошибки при компиляции, то glcdfont ненаходит то еще ....
спасибо
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#10

Сообщение Сергей » 13.02.2016{, 01:43}

Evgesha, там же их две надо!

Дисплей покупал здесь - 9,44$ но не советую. Дорого и SPI. 
Вот тут в разы дешевле и вроде I2C
Вложения
Adafruit_SSD130.zip
(21.78 КБ) 153 скачивания
Adafruit-GFX-Li.zip
(276.99 КБ) 122 скачивания

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

OLED дисплей 128х64 SPI - пользовательский блок на Си

#11

Сообщение vovka1973 » 07.03.2016{, 14:39}

Можете выложить пример, вывод температуры или просто слово, не пойму как блоком пользоваться .
Изображение

robocraft
Рядовой
Сообщения: 74
Зарегистрирован: 22.11.2016{, 09:10}
Репутация: 0
Откуда: Москва

OLED дисплей 128х64 SPI - пользовательский блок на Си

#12

Сообщение robocraft » 09.12.2016{, 13:04}

Как подключить I2C? И желательно пример работы блока.
Последний раз редактировалось robocraft 09.12.2016{, 13:05}, всего редактировалось 1 раз.
☃ Loading... ██████████████] 99%

Аватара пользователя
hrach
Сержант
Сообщения: 258
Зарегистрирован: 17.09.2015{, 11:05}
Репутация: 13
Откуда: Самара
Имя: Грачик
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#13

Сообщение hrach » 09.12.2016{, 15:14}

robocraft писал(а):Как подключить I2C? И желательно пример работы блока.
Пример подключение.

_uVideoPlayer({'url':'');

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#14

Сообщение Сергей » 09.12.2016{, 23:25}

robocraft писал(а):Как подключить I2C? И желательно пример работы блока
Доделываю проект с дисплеем, выложу потом проект и видео работы. Переделал переносной обогреватель электролюкс. Там электроника сдохла.
vovka1973 писал(а):Можете выложить пример, вывод температуры
как раз и вывод температуры есть.
 
Блоки, те что раньше выкладывал не очень пригодны, т. к. просто выводят текст и т. д. А при работе в реальном проекте необходимо менять содержимое экрана, при чем не одновременно, а выбранные объекты. При добавлении текста, новый текст накладывается на старый. А при использовании функции очистки дисплея, он постоянно моргает, обновляется... Не очень приятно смотреть. Переделал блоки вывода текста так, что бы при установки En, поданный на вход текст выводился. При изменении текста обновляется сам текст, а не весь экран. Сделал это таким способом: если En=1, при изменении текста, сначала выводится старая строка только черным шрифтом (таким образом старый текст просто убирается), а после этого сразу выводится новый текст.
Блоки в проекте потом выложу. Еще надо доработать блок чтобы текст корректно обновлялся при изменении координат начала строки на входе блока. Но это через недельку (работы на работе много).

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#15

Сообщение Сергей » 09.12.2016{, 23:58}

Evgesha писал(а):Сергей немогли бы выложить библиотеку, у меня ошибки при компиляции
Во-первых стандартную библиотеку (Adafruit_SSD1306) необходимо отредактировать. Она настроена на 32-х строчный экран. Без этого на 64-х строчном экране картинка будет растянута и отображать через строку. А кадр будет выходить за нижние пределы экрана.
И попробуйте залить сначала стандартный скетч из примеров.
В файлике Adafruit_SSD1306.h, необходимо сделать как на рисунке
Редактирование библиотеки
Находится этот файлик в папке с библиотеками, только не с программой, а в документах пользователя.
Спустя пол года сам все забыл и заново разбирался что к чему)

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

OLED дисплей 128х64 SPI - пользовательский блок на Си

#16

Сообщение slavas » 10.12.2016{, 13:19}

Сергей, а Вам не кажется что блоки крупноваты и следует разделить их на отдельные функциональные блоки, как то вывод элементарной графики ( круги, рамки...) с входами для координат и en.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#17

Сообщение Сергей » 10.12.2016{, 13:22}

slavas писал(а):Сергей, а Вам не кажется что блоки крупноваты
так это были еще первые пробы. Сейчас с блоком текста работаю, то он маленький. Входы En; X,Y; Text;

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

OLED дисплей 128х64 SPI - пользовательский блок на Си

#18

Сообщение slavas » 10.12.2016{, 13:38}

Вы библиотеку правили, а у вас описание есть или в коде разбирались?
Последний раз редактировалось slavas 10.12.2016{, 13:42}, всего редактировалось 1 раз.

Аватара пользователя
Сергей
Лейтенант
Сообщения: 578
Зарегистрирован: 31.08.2015{, 15:06}
Репутация: 6
Имя: Сергей
Контактная информация:

OLED дисплей 128х64 SPI - пользовательский блок на Си

#19

Сообщение Сергей » 10.12.2016{, 13:44}

slavas,
slavas писал(а):Вы библиотеку правили,
Вообще сам разбирался. Первый раз включил дисплей на скетче из примеров. Ошибки при компиляции были, но я прямо в примере убрал строки выводящие ошибки, он прошился, но работал через строку. Cразу и не заметил что он через строку работает.

Вот видео рабочего проекта. Качество не очень, но других вариантов сейчас показать нету(. Мой телефон с нормальной камерой в СБУ)).
_uVideoPlayer({'url':'');

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

OLED дисплей 128х64 SPI - пользовательский блок на Си

#20

Сообщение slavas » 10.12.2016{, 14:20}

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

Ответить

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