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

Научите строить график на OLED дисплее.

Добавлено: 11.08.2019{, 19:21}
thrash
OLED 128x64 1306. Нужно построить точечный график зависимости времени (координата Х) на числовое значение (Y). И по достижении границы экрана (х=127), то есть при переходе на 0, нужно очистить экран и рисовать заново. Третий день бьюсь в FlProg. Скачал целую кучу пользовательских блоков, но не получается. К сожалению С++ не знаю. Только визуалкой спасаюсь.
Заранее благодарен!

Научите строить график на OLED дисплее.

Добавлено: 12.08.2019{, 02:41}
aidar_i
Попробуйте так:
Вывод графика.flp
(507.83 КБ) 179 скачиваний
Координаты начала графика поставьте с помощью штатных блоков суммирования [SUM(+)], перевернуть график можно блоком масштабирования [Scale].

Научите строить график на OLED дисплее.

Добавлено: 12.08.2019{, 21:36}
thrash
Большое спасибо. Всё подошло.

Научите строить график на OLED дисплее.

Добавлено: 13.08.2019{, 07:00}
aidar_i
Отлично! Свой проект тоже выложите, будет интересно форумчанам.

Научите строить график на OLED дисплее.

Добавлено: 28.01.2021{, 18:44}
thrashes
Доброго времени суток. Моя прошлая учётка слетела, пришлось перерегистрироваться. Ну не суть.
Мужики, помогите с сабжем.
График строится. Всё нормально. Но появилась задача прокручивать график влево по достижении границы экрана. Игрался с кодом и ни чего не выходит.
В этой части кода
..................if(X_265515045_2>=123)
{
X_265515045_2=0;
display.clearDisplay();..............
происходит очистка дисплея. А мне бы его не очищать, а прокручивать дальше. Попробовал сделать так:
Вместо display.clearDisplay() ставлю display.startscrollleft(0x00, 0x0F); но экран начинает глючить, когда доходит до этого места программы. Если после этого поставить delay(xxx) то график двигается то время, какое в скобках.
Но тогда стоит вся остальная программа, что ни есть хорошо.
Что я не так делаю? Помогите прикрутить прокрутку к этому блоку. Пожалуйста.

Научите строить график на OLED дисплее.

Добавлено: 28.01.2021{, 23:19}
aidar_i
thrashes писал(а):
28.01.2021{, 18:44}
Помогите прикрутить прокрутку к этому блоку.
Пожалуйста! Прокручивается, рамка рисуется и пишутся максимумы , минимумы и реальные уровни.
Удалил, выложил ниже исправленный.
СпойлерПоказать
Безымянный.png
Испытаете, напишите сюда, выложу в раздел пользовательские блоки

Научите строить график на OLED дисплее.

Добавлено: 30.01.2021{, 18:30}
thrashes
Тестировал всю ночь, игрался с настройками, экспериментировал.
В общем, что получилось.
Есть константа period, равная 200мСек по умолчанию. Если её увеличить, то получается задержка на включение блока. То есть если необходимо отслеживать период в несколько минут или часов, то блок включится только по истечению заданного времени.
Я подключал к блоку датчик атмосферного давления. На нём показания почти статичны. Давление особо не прыгает. И измерять его не получиться, по той причине, что необходимо дождаться включения блока с установленной константой в несколько часов.
Первое включение рисует график так: от нуля до считанного значения, которое угоняет график вверх (максимальное), далее заполняется рамка и начинается прокрутка и начинает работать вычисление мин и макс значений с автоматическим масштабированием графика.
Я не описал для чего это всё нужно, потому и результат такой. Сам дурак :smile44:
Я пытаюсь соорудить бортовой компьютер на мотоцикл.
На олед 12864 будут выводиться данные с часов реального времени с возможность их установки (это я уже реализовал)
С датчика Dallass температура двигателя.
Вольтметр для измерения бортсети.
И данные с датчика BME280 (температура окружающего воздуха и атмосферное давление)
Управляется это всё дело одним энкодером.
И вот не могу я добиться того, чтобы при выводе на экран значения атм. давления тут же рисовался его график за последние 12 часов. Это нужно для прогнозирования погоды (дабы успеть не попасть в какой нибудь шторм)
Теперь сама задача.
Раз в час, считать значение с датчика давления и на основе данных за последние 12 часов вывести график изменения давления. И при этом иметь возможность не выводить этот график на экран постоянно.
Так как на экране будут отображаться другие данные.
Вообще, алгоритм работы дисплея у меня такой:
В верхней половине экрана всегда отображается время.
А в нижней части отображаются остальные данные путём перелистывания.
И вот к этому всему, я хотел добавить этот график. То есть, при перелистывании данных, в момент когда я дошёл до вывода данных давления, на экран бы выводился этот график.
Вот такая нелёгкая задача у меня нарисовалась.
Я уже давно бьюсь с этим проектом. С год наверное. Не плотно конечно занимаюсь, но когда есть свободное время.
Очень огромное количество времени ушло на то, чтобы всё это уместить в память UNO.
Там одна настройка часов отнимает большое количество памяти. Сперва пытался через меню это всё сделать, но память заканчивалась только на одних часах.
Потому от меню пришлось отказаться.
Да и сейчас я сомневаюсь, что всё влезет на одну плату ардуино уно. Но я особо и не рассчитывал на это.
Можно и вторую добавить. Одна будет нести на себе энкодер с дисплеем, а другая всё остальное. Переменные отправлять в кольцо.
Вот примерно так.

Научите строить график на OLED дисплее.

Добавлено: 31.01.2021{, 11:56}
aidar_i
Вам нужно сохранять в массив длиной 12 и выводить оттуда.
Я примерно накидал тест, но с логикой поработайте. Скроллинг Вам не нужен. 12 часов с периодом час укладываются в дисплее.

Отправлено спустя 3 часа 24 минуты 23 секунды:
thrashes писал(а):
30.01.2021{, 18:30}
Есть константа period, равная 200мСек по умолчанию. Если её увеличить, то получается задержка на включение блока. То есть если необходимо отслеживать период в несколько минут или часов, то блок включится только по истечению заданного времени.
Блок из сообщения 6 подправил, сейчас начинает работать сразу.
Вывод графика1.1.flp
(985.82 КБ) 68 скачиваний
Отправлено спустя 52 минуты 36 секунд:
То же без автомасштабирования
Вывод графика1.2.flp
(995.41 КБ) 67 скачиваний
Поставьте Mega2560, ESP, STM32

Научите строить график на OLED дисплее.

Добавлено: 04.02.2021{, 05:27}
thrashes
Айдар, спасибо! Блоки "вывод графика" заработали и рисуют то что надо.
А вот схема с выводом из массива рисует что то непонятное, но оно мне и не надо.
Ещё раз, благодарствую :smile9: