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

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

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

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

Добавлено: 11.12.2016{, 07:56}
vovka1973
Сергей писал(а):Вот видео рабочего проекта
а блок можете выложить?

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

Добавлено: 11.12.2016{, 15:43}
Сергей
Еще не доделан.

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

Добавлено: 12.12.2016{, 11:08}
robocraft
Сделал блок очистки экрана, что бы помигать можно было экраном или избавится от накладки слов.
Перед блоком рекомендую ставить триггер RTrig.

Блоки для вывода I2C и на русском Взял отсюда
С этими блоками глючит генератор. Думаю может от часов реального времени генер прикрутить.
Ещё эти блоки 52% памяти отжирают.
Попробую теперь всё это дело к меню прикрутить, с часами, установкой времени и будильником.

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

Добавлено: 12.12.2016{, 11:39}
robocraft
Вот пример, меняет на экране слово Привет на слово Пока.

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

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

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

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

Добавлено: 12.12.2016{, 12:56}
robocraft
slavas, как сделать без задержки?

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

Добавлено: 12.12.2016{, 13:24}
Dev1
robocraft писал(а):Вот пример, меняет на экране слово Привет на слово Пока.
В библиотеке OLED I2C данные загружаются в буфер лсд. Для вывода на экран используется функция Update. Ставиться в конце выполняемых блоков. Не стоит ставить Update дополнительно в других местах, начинает мигать экран. Функция Clear совсем очищает дисплей с буфером.

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

Добавлено: 12.12.2016{, 13:48}
slavas
robocraft, в главном блоке потрите всё что относится к таймеру.

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

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

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

Добавлено: 12.12.2016{, 16:20}
slavas
точки это мусор в памяти экрана я бы попробовал экран заэкранировать.

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

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

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

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

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

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

Добавлено: 14.12.2016{, 18:34}
Skyter
У меня при использовании на этом дисплее (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();
}

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

Добавлено: 08.01.2017{, 22:19}
golowa70
Сергей, удалось ли добиться приемлемого результата с блоками дисплея?

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

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

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

Добавлено: 02.02.2017{, 19:08}
bav123
slavas, в ваших блоке при подачи стринг вместо точки выводится буква *ю*
т.е. при просмотре температуры или влажности от датчика десятые доли отделены не точкой а ю

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

Добавлено: 03.02.2017{, 00:06}
slavas
Это проблема русификации я только блок делал.

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

Добавлено: 03.02.2017{, 08:02}
bav123
Понятно, а можно сделать вывод только английкого языка?

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

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

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