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

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

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

#21

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

slavas писал(а):Вы не пробовали сделать блок для вывода иконок?
Пока нет.
Установил сегодня этот блочек в обогреватель, подключил нагрузку и началось... Спустя 5-20 мин после включения на экране появляются светящиеся пиксели. В хаотичном порядке по всему экрану, зажигаются по несколько штук и горят, пока с розетки не выдернешь. В строке флоат, с показанием температуры, бывает добавляются еще какие то символы и видно перенос текста на другую строку. В общем программа работает, но на экран иногда выводится непонятно что. Похоже в экран проходят команды функций отрисовки пикселей, со случайными координатами XY.
Буду с этим разбираться, на столе то все работало две недели. Может помехи какие то  .

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

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

#22

Сообщение vovka1973 » 11.12.2016{, 07:56}

Сергей писал(а):Вот видео рабочего проекта
а блок можете выложить?
Изображение


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

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

#24

Сообщение robocraft » 12.12.2016{, 11:08}

Сделал блок очистки экрана, что бы помигать можно было экраном или избавится от накладки слов.
Перед блоком рекомендую ставить триггер RTrig.

Блоки для вывода I2C и на русском Взял отсюда
С этими блоками глючит генератор. Думаю может от часов реального времени генер прикрутить.
Ещё эти блоки 52% памяти отжирают.
Попробую теперь всё это дело к меню прикрутить, с часами, установкой времени и будильником.
Вложения
cleaning_oled_e.ubi
(8.21 КБ) 104 скачивания
Последний раз редактировалось robocraft 12.12.2016{, 11:29}, всего редактировалось 1 раз.
☃ Loading... ██████████████] 99%

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

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

#25

Сообщение robocraft » 12.12.2016{, 11:39}

Вот пример, меняет на экране слово Привет на слово Пока.
Вложения
PP_Oled_I2C.flp
(1.13 МБ) 109 скачиваний
6345862.png
☃ Loading... ██████████████] 99%

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

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

#26

Сообщение slavas » 12.12.2016{, 12:13}

Сергей, это помехи. В коде у Вас нет команды clear, попробуйте привязать её к if (text != text_)
тогда если на входе изменится строка пройдёт очистка экрана далее display.println(text_); только мне кажется эта строка выводит на экран с переводом строки.

Добавлено (12.12.2016, 12:13)
---------------------------------------------
robocraft, Это я рисовал этот блок, там вместо delay использован таймер вот и конфликтует. Я пробовал без задержки и тоже нормально.

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

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

#27

Сообщение robocraft » 12.12.2016{, 12:56}

slavas, как сделать без задержки?
☃ Loading... ██████████████] 99%

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

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

#28

Сообщение Dev1 » 12.12.2016{, 13:24}

robocraft писал(а):Вот пример, меняет на экране слово Привет на слово Пока.
В библиотеке OLED I2C данные загружаются в буфер лсд. Для вывода на экран используется функция Update. Ставиться в конце выполняемых блоков. Не стоит ставить Update дополнительно в других местах, начинает мигать экран. Функция Clear совсем очищает дисплей с буфером.
Вложения
3681143.jpg
Win10-64 FLProg v7.5.2 Portable :fie:

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

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

#29

Сообщение slavas » 12.12.2016{, 13:48}

robocraft, в главном блоке потрите всё что относится к таймеру.

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

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

#30

Сообщение Сергей » 12.12.2016{, 15:45}

slavas
slavas писал(а):В коде у Вас нет команды clear
в том то и дело что я не хочу очищать весь экран. Он с каждым проходом программы мигает.
В моем случае надо с помехами бороться. Наверно очистку сделаю раз в пару минут, но как помехи побороть пока не знаю.

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

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

#31

Сообщение slavas » 12.12.2016{, 16:20}

точки это мусор в памяти экрана я бы попробовал экран заэкранировать.

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

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

#32

Сообщение Сергей » 12.12.2016{, 16:37}

slavas, а как этот мусор в памяти экрана может туда попасть? Без подключенной нагрузки работал нормально. Когда подключил тэн на 1500 Вт, через родную 12В реле, а родную коммутирую ардуиновской 5В, тогда начались проблемы. В дальнейшем поставлю твердотельную, она еще в пути, напишу результат.

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

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

#33

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

У меня такая же фигня с акваконтроллером, экран nokia5110 дубовый и ему помехи пофиг зато неудачно сделал переключение, сначала изменение состояния выхода и далее запись состояния в переменную, похоже это происходит одновременно с помехой от реле и в память пишется бред. На экране нагрузка включается свет мигает и выключается. Правда есть ещё один косяк у меня переключается состояние  по достижению времени и если время прошло то всё.

Добавлено (13.12.2016, 14:20)
---------------------------------------------
Вот схема твёрдотельного реле
Изображение

Skyter
Рядовой
Сообщения: 1
Зарегистрирован: 13.12.2016{, 15:48}
Репутация: 0

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

#34

Сообщение Skyter » 14.12.2016{, 18:34}

У меня при использовании на этом дисплее (Oled 128*64) библиотеки OLED_I2C выдавала хаотический мусор на экране. После подключения библиотеки Adafruit_SSD1306-master все чисто. Монитор прекрасно работает с часами и датчиками.

При этом Oled 128*32 отлично работает с OLED_I2C. С Adafruit_SSD1306-master не запустился.

В скетче в конце блока void loop() строки. Неприятного мигания не наблюдаю.

void loop() {

......код блока.....

  display.display();
  delay(1000);
  display.clearDisplay();
}
Последний раз редактировалось Skyter 14.12.2016{, 20:37}, всего редактировалось 1 раз.

golowa70
Сержант
Сообщения: 195
Зарегистрирован: 20.02.2016{, 00:05}
Репутация: 6

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

#35

Сообщение golowa70 » 08.01.2017{, 22:19}

Сергей, удалось ли добиться приемлемого результата с блоками дисплея?

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

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

#36

Сообщение Сергей » 09.01.2017{, 04:55}

golowa70, по блокам ничего нового не делал. Жду твердотельное реле. Должна быть уже на подъезде. 
По помехам, заметил их увеличение при длительном включении нагрузки. Возможно за это время прогревается весь обогреватель с отсеком электроники, возможно все же помехи от наводок. Однозначно что глючить контроллер начинает спустя какое то время после включения нагрузки. При отключенной нагрузке (заданная темп. минимальна) глюков нет вообще никаких.

bav123
Рядовой
Сообщения: 52
Зарегистрирован: 05.03.2016{, 09:22}
Репутация: 0

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

#37

Сообщение bav123 » 02.02.2017{, 19:08}

slavas, в ваших блоке при подачи стринг вместо точки выводится буква *ю*
т.е. при просмотре температуры или влажности от датчика десятые доли отделены не точкой а ю

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

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

#38

Сообщение slavas » 03.02.2017{, 00:06}

Это проблема русификации я только блок делал.

bav123
Рядовой
Сообщения: 52
Зарегистрирован: 05.03.2016{, 09:22}
Репутация: 0

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

#39

Сообщение bav123 » 03.02.2017{, 08:02}

Понятно, а можно сделать вывод только английкого языка?

golowa70
Сержант
Сообщения: 195
Зарегистрирован: 20.02.2016{, 00:05}
Репутация: 6

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

#40

Сообщение golowa70 » 16.02.2017{, 22:59}

При использовании блоков таймеры начинают считать не корректно, с большой задержкой , даже если выводить раз в секунду.
Похоже используемая библиотека работает на прерываниях и тем самым мешает функции millis считать время корректно. Кто то сталкивался с такой проблемой ?

Добавлено (16.02.2017, 22:59)
---------------------------------------------
Может кому пригодится. Выяснил причину задержки таймеров при использовании библиотеки OLED_I2C. Функция update(); запрещает прерывания и соответственно функция millis() не правильно считает время.
Поправить можно в папке с библиотекой в файле HW_AVR.h в строке 24 закоментировать noInterrupts() ;

Ответить

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