Страница 1 из 3

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

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

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

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

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

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

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

text и En_text и  x_text и  y_text  

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

text1 и En_text  x_text и  y_text 

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

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

Добавлено: 31.01.2016{, 22:52}
Сергей
Слимпер, да все верно, это изза подчеркивания.

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

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

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

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

Добавлено: 01.02.2016{, 01:11}
Skull
Изображение МАМА ))
А вообще работает, спасибо!!
Сереж, погляди вот это- русифицированная

Описание ТУТ

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

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

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

Добавлено: 01.02.2016{, 03:29}
Сергей
Skull, позже. Сначала блок до ума доведу.
Вообще круто что теперь есть возможность Си вставлять.
Спасибо автору!!! Я ведь раньше Си знал только в общих чертах. А теперь, спустя неделю уже блоки делаю, о чем раньше только мечтал и ждал пока кто то сделает.

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

Добавлено: 12.02.2016{, 18:50}
Evgesha
Сергей немогли бы выложить библиотеку, у меня ошибки при компиляции, то glcdfont ненаходит то еще ....
спасибо

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

Добавлено: 13.02.2016{, 01:43}
Сергей
Evgesha, там же их две надо!

Дисплей покупал здесь - 9,44$ но не советую. Дорого и SPI. 
Вот тут в разы дешевле и вроде I2C

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

Добавлено: 07.03.2016{, 14:39}
vovka1973
Можете выложить пример, вывод температуры или просто слово, не пойму как блоком пользоваться .

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

Добавлено: 09.12.2016{, 13:04}
robocraft
Как подключить I2C? И желательно пример работы блока.

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

Добавлено: 09.12.2016{, 15:14}
hrach
robocraft писал(а):Как подключить I2C? И желательно пример работы блока.
Пример подключение.

_uVideoPlayer({'url':'');

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

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

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

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

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

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

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

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

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

Добавлено: 10.12.2016{, 13:38}
slavas
Вы библиотеку правили, а у вас описание есть или в коде разбирались?

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

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

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

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

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