Научите строить график на OLED дисплее.
Научите строить график на OLED дисплее.
OLED 128x64 1306. Нужно построить точечный график зависимости времени (координата Х) на числовое значение (Y). И по достижении границы экрана (х=127), то есть при переходе на 0, нужно очистить экран и рисовать заново. Третий день бьюсь в FlProg. Скачал целую кучу пользовательских блоков, но не получается. К сожалению С++ не знаю. Только визуалкой спасаюсь.
Заранее благодарен!
Заранее благодарен!
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Научите строить график на OLED дисплее.
Попробуйте так:
Координаты начала графика поставьте с помощью штатных блоков суммирования [SUM(+)], перевернуть график можно блоком масштабирования [Scale].У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Научите строить график на OLED дисплее.
Отлично! Свой проект тоже выложите, будет интересно форумчанам.
Научите строить график на OLED дисплее.
Доброго времени суток. Моя прошлая учётка слетела, пришлось перерегистрироваться. Ну не суть.
Мужики, помогите с сабжем.
График строится. Всё нормально. Но появилась задача прокручивать график влево по достижении границы экрана. Игрался с кодом и ни чего не выходит.
В этой части кода
..................if(X_265515045_2>=123)
{
X_265515045_2=0;
display.clearDisplay();..............
происходит очистка дисплея. А мне бы его не очищать, а прокручивать дальше. Попробовал сделать так:
Вместо display.clearDisplay() ставлю display.startscrollleft(0x00, 0x0F); но экран начинает глючить, когда доходит до этого места программы. Если после этого поставить delay(xxx) то график двигается то время, какое в скобках.
Но тогда стоит вся остальная программа, что ни есть хорошо.
Что я не так делаю? Помогите прикрутить прокрутку к этому блоку. Пожалуйста.
Мужики, помогите с сабжем.
График строится. Всё нормально. Но появилась задача прокручивать график влево по достижении границы экрана. Игрался с кодом и ни чего не выходит.
В этой части кода
..................if(X_265515045_2>=123)
{
X_265515045_2=0;
display.clearDisplay();..............
происходит очистка дисплея. А мне бы его не очищать, а прокручивать дальше. Попробовал сделать так:
Вместо display.clearDisplay() ставлю display.startscrollleft(0x00, 0x0F); но экран начинает глючить, когда доходит до этого места программы. Если после этого поставить delay(xxx) то график двигается то время, какое в скобках.
Но тогда стоит вся остальная программа, что ни есть хорошо.
Что я не так делаю? Помогите прикрутить прокрутку к этому блоку. Пожалуйста.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Научите строить график на OLED дисплее.
Пожалуйста! Прокручивается, рамка рисуется и пишутся максимумы , минимумы и реальные уровни.
Удалил, выложил ниже исправленный.
[spoiler] [/spoiler]
Испытаете, напишите сюда, выложу в раздел пользовательские блоки
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 31 янв 2021, 18:14, всего редактировалось 3 раза.
Научите строить график на OLED дисплее.
Тестировал всю ночь, игрался с настройками, экспериментировал.
В общем, что получилось.
Есть константа period, равная 200мСек по умолчанию. Если её увеличить, то получается задержка на включение блока. То есть если необходимо отслеживать период в несколько минут или часов, то блок включится только по истечению заданного времени.
Я подключал к блоку датчик атмосферного давления. На нём показания почти статичны. Давление особо не прыгает. И измерять его не получиться, по той причине, что необходимо дождаться включения блока с установленной константой в несколько часов.
Первое включение рисует график так: от нуля до считанного значения, которое угоняет график вверх (максимальное), далее заполняется рамка и начинается прокрутка и начинает работать вычисление мин и макс значений с автоматическим масштабированием графика.
Я не описал для чего это всё нужно, потому и результат такой. Сам дурак
Я пытаюсь соорудить бортовой компьютер на мотоцикл.
На олед 12864 будут выводиться данные с часов реального времени с возможность их установки (это я уже реализовал)
С датчика Dallass температура двигателя.
Вольтметр для измерения бортсети.
И данные с датчика BME280 (температура окружающего воздуха и атмосферное давление)
Управляется это всё дело одним энкодером.
И вот не могу я добиться того, чтобы при выводе на экран значения атм. давления тут же рисовался его график за последние 12 часов. Это нужно для прогнозирования погоды (дабы успеть не попасть в какой нибудь шторм)
Теперь сама задача.
Раз в час, считать значение с датчика давления и на основе данных за последние 12 часов вывести график изменения давления. И при этом иметь возможность не выводить этот график на экран постоянно.
Так как на экране будут отображаться другие данные.
Вообще, алгоритм работы дисплея у меня такой:
В верхней половине экрана всегда отображается время.
А в нижней части отображаются остальные данные путём перелистывания.
И вот к этому всему, я хотел добавить этот график. То есть, при перелистывании данных, в момент когда я дошёл до вывода данных давления, на экран бы выводился этот график.
Вот такая нелёгкая задача у меня нарисовалась.
Я уже давно бьюсь с этим проектом. С год наверное. Не плотно конечно занимаюсь, но когда есть свободное время.
Очень огромное количество времени ушло на то, чтобы всё это уместить в память UNO.
Там одна настройка часов отнимает большое количество памяти. Сперва пытался через меню это всё сделать, но память заканчивалась только на одних часах.
Потому от меню пришлось отказаться.
Да и сейчас я сомневаюсь, что всё влезет на одну плату ардуино уно. Но я особо и не рассчитывал на это.
Можно и вторую добавить. Одна будет нести на себе энкодер с дисплеем, а другая всё остальное. Переменные отправлять в кольцо.
Вот примерно так.
В общем, что получилось.
Есть константа period, равная 200мСек по умолчанию. Если её увеличить, то получается задержка на включение блока. То есть если необходимо отслеживать период в несколько минут или часов, то блок включится только по истечению заданного времени.
Я подключал к блоку датчик атмосферного давления. На нём показания почти статичны. Давление особо не прыгает. И измерять его не получиться, по той причине, что необходимо дождаться включения блока с установленной константой в несколько часов.
Первое включение рисует график так: от нуля до считанного значения, которое угоняет график вверх (максимальное), далее заполняется рамка и начинается прокрутка и начинает работать вычисление мин и макс значений с автоматическим масштабированием графика.
Я не описал для чего это всё нужно, потому и результат такой. Сам дурак

Я пытаюсь соорудить бортовой компьютер на мотоцикл.
На олед 12864 будут выводиться данные с часов реального времени с возможность их установки (это я уже реализовал)
С датчика Dallass температура двигателя.
Вольтметр для измерения бортсети.
И данные с датчика BME280 (температура окружающего воздуха и атмосферное давление)
Управляется это всё дело одним энкодером.
И вот не могу я добиться того, чтобы при выводе на экран значения атм. давления тут же рисовался его график за последние 12 часов. Это нужно для прогнозирования погоды (дабы успеть не попасть в какой нибудь шторм)
Теперь сама задача.
Раз в час, считать значение с датчика давления и на основе данных за последние 12 часов вывести график изменения давления. И при этом иметь возможность не выводить этот график на экран постоянно.
Так как на экране будут отображаться другие данные.
Вообще, алгоритм работы дисплея у меня такой:
В верхней половине экрана всегда отображается время.
А в нижней части отображаются остальные данные путём перелистывания.
И вот к этому всему, я хотел добавить этот график. То есть, при перелистывании данных, в момент когда я дошёл до вывода данных давления, на экран бы выводился этот график.
Вот такая нелёгкая задача у меня нарисовалась.
Я уже давно бьюсь с этим проектом. С год наверное. Не плотно конечно занимаюсь, но когда есть свободное время.
Очень огромное количество времени ушло на то, чтобы всё это уместить в память UNO.
Там одна настройка часов отнимает большое количество памяти. Сперва пытался через меню это всё сделать, но память заканчивалась только на одних часах.
Потому от меню пришлось отказаться.
Да и сейчас я сомневаюсь, что всё влезет на одну плату ардуино уно. Но я особо и не рассчитывал на это.
Можно и вторую добавить. Одна будет нести на себе энкодер с дисплеем, а другая всё остальное. Переменные отправлять в кольцо.
Вот примерно так.
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Научите строить график на OLED дисплее.
Вам нужно сохранять в массив длиной 12 и выводить оттуда.
Я примерно накидал тест, но с логикой поработайте. Скроллинг Вам не нужен. 12 часов с периодом час укладываются в дисплее.
Отправлено спустя 3 часа 24 минуты 23 секунды:
То же без автомасштабирования Поставьте Mega2560, ESP, STM32
Я примерно накидал тест, но с логикой поработайте. Скроллинг Вам не нужен. 12 часов с периодом час укладываются в дисплее.
Отправлено спустя 3 часа 24 минуты 23 секунды:
Блок из сообщения 6 подправил, сейчас начинает работать сразу. Отправлено спустя 52 минуты 36 секунд:thrashes писал(а): 30 янв 2021, 18:30 Есть константа period, равная 200мСек по умолчанию. Если её увеличить, то получается задержка на включение блока. То есть если необходимо отслеживать период в несколько минут или часов, то блок включится только по истечению заданного времени.
То же без автомасштабирования Поставьте Mega2560, ESP, STM32
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Научите строить график на OLED дисплее.
Айдар, спасибо! Блоки "вывод графика" заработали и рисуют то что надо.
А вот схема с выводом из массива рисует что то непонятное, но оно мне и не надо.
Ещё раз, благодарствую
А вот схема с выводом из массива рисует что то непонятное, но оно мне и не надо.
Ещё раз, благодарствую

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей