Вывод на экран графики через плоттер

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Коллеги, подскажите, если выводится график данных из массива через println()

Как сделать так чтобы по истечении цикла вывода из массива очередной вывод начался с начала координаты x? 

Мне это нужно чтобы смотреть спектр от FFT

Гриша
Offline
Зарегистрирован: 27.04.2014

Andrey2020 пишет:

Как сделать так чтобы по истечении цикла вывода из массива 

поставить флаг, что вывод завершен

Andrey2020 пишет:

очередной вывод начался с начала координаты x? 

выводить данные массива с означенного элемента массива. 

учимся пользоваться if - как условие, for - как счетчик , массив - как массив 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

Коллеги, подскажите, если выводится график данных из массива через println()

Как сделать так чтобы по истечении цикла вывода из массива очередной вывод начался с начала координаты x? 

Мне это нужно чтобы смотреть спектр от FFT

Открою Вам страшную тайну: микроконтроллер (управляющая им программа) в большинстве случаев работают точно так же, как работал бы человек, окажись он на месте микроконтроллера.

Судя по тому, что для построения графика Вы предполагаете использовать println, микроконтроллер передает данные ПК для последующего построения. Значит, вопрос разбивается на два:

1. Что должен делать ПК при построении графика.

2. Какие данные должен выдавать МК, чтобы ПК мог построить график.

Вот представьте, что график предстоит строить именно Вам по тем данным, которые придут с МК. Что Вам нужно для построения графика?

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Господа, понимаю Ваш юмор в стиле оборжаться.... 

Надеюсь в будущем я тоже вместе с Вами над кем-нибудь поржу...

а сейчас тема такая что я не могу проверить на компе то что предлагается.
Я просто интерпретирую то что прочел ранее на форумах по плоттеру а именно то что:

индекс не передается в сериальный порт, передаются только данные . каждый раз когда 

новые данные передаются то картинка сдвигается влево в случае когда курсор дошёл в крайнюю 

правую позицию и поэтому возникает вопрос : как дать понять плоттеру что индекс обнулился и нужно картинку 

выводить с нудя? Есть ли какой-то символ для этого??

 

Andrey2020
Offline
Зарегистрирован: 09.07.2020

И Вам тоже хотел написать. Как я понял printnl выводит данные на экран последовательно и не знает когда обнулится индекс массива. Напрмер у меня массив 128 точек. Вывожу 128 потом повторно начинаю с нуля ...

так вот вывод будет продолжаться с той позиции экрана где кончился 128 отсчет итп.

блин а если мне нужно с начала экрана начать???? Как ресетить позицию влево?  

Andrey2020
Offline
Зарегистрирован: 09.07.2020

О что за флаг о завершении вывода? Спец символ? Какой?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

Я просто интерпретирую то что прочел ранее на форумах по плоттеру а именно то что:

Ну вот, ни с того, ни с сего вдруг в 3-м посте появился какой-то плоттер, которого в исходном явно не было.

Андрей, Вы бы для начала попытались толково сформулировать, чего именно Вы хотите, чтобы не приходилось вытаскивать из Вас информацию клещами и по крупицам, и чтобы вдруг на десятой странице обсуждения не оказывалось, что Вы имеете в виду совсем не то, что обсуждали до этого на 9 страницах.

Видите ли, хрустальные шары есть далеко не у всех, а у кого есть - тоже нередко барахлят.

b707
Offline
Зарегистрирован: 26.05.2017

andriano пишет:

Ну вот, ни с того, ни с сего вдруг в 3-м посте появился какой-то плоттер, которого в исходном явно не было.

ваще-то плоттер указан прямо в заголовке :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Насколько мне известно, плоттер - это такой большой планшет, по которому ездит каретка с одним или несколькими пишущими узлами. И работать плоттер может либо автономно, либо под управлением ПК. Для чего ПК должен подготовить для плоттера данные, которые тот будет выводить на бумагу. А вопрос ТС связан не с взаимодействием ПК-плоттер, а с взаимодействием МК-ПК. Т.к. любую сложную задачу при решении надо разбивать на части. То начать вполне естественно именно с части МК-ПК. Тем более, что сам ТС упомянул о println, который как раз и есть со стороны МК. Или что-то не так?

Кстати, если об МК мы что-то знаем - это Ардуино. О ПК тоже можно предположить, что это либо IBM PC, либо Mac, то ни о модели плоттера, ни об используемой им системе команд пока не было написано ни одной буквы. Как можно обсуждать, неизвестно что?

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Жесть! Так Вы ребзя дилетанты. А я думал Вы профи.

тогда вот тут прочтите, это расширит Ваши познания в IDE:

 http://developer.alexanderklimov.ru/arduino/articles/plotter.php

Andrey2020
Offline
Зарегистрирован: 09.07.2020
mixail844
Offline
Зарегистрирован: 30.04.2012

Andrey2020 пишет:

Жесть! Так Вы ребзя дилетанты. А я думал Вы профи.

тогда вот тут прочтите, это расширит Ваши познания в IDE:

 http://developer.alexanderklimov.ru/arduino/articles/plotter.php

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

В том то и дело, что профи при слове "плоттер" представляют несколько вариантов, так как "плоттер" очень общее наименование как устройств так и программ для PC и у каждого из них может быть свой протокол общения.
Чем пользуетесь вы известно только вам, и мыслей никто здесь не читает.

Помощь нужна вам, и вытягивать из вас информацию что бы вам помочь, никто не собирается.

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Ладно, без лишних слов...

кто-нибудь юзал функцию вывода графиков на экран в Arduino?

Ссылка на материал тут:

http://out.arduino.ru/?redirect=http%3A%2F%2Fdeveloper.alexanderklimov.ru%2Farduino%2Farticles%2Fplotter.php&baseU=http%3A%2F%2Farduino.ru%2Fforum%2Fpesochnitsa-razdel-dlya-novichkov%2Fvyvod-na-ekran-grafiki-cherez-plotter%23comment-548386
 

Вопрос: если выводить массив данных каждый раз с начальной отметки (с левой части экрана) как туда вернуться? 
Н
апример если я циклически вывожу спектр через функцию плоттера как мне каждый раз попасть в начало экрана? 
 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

Жесть! Так Вы ребзя дилетанты. А я думал Вы профи.

тогда вот тут прочтите, это расширит Ваши познания в IDE:

 http://developer.alexanderklimov.ru/arduino/articles/plotter.php

Честно говоря, не знал.

В связи с полной ненадобностью. Если мне нужен график на экране ПК, я его построю в зависимости от потребностей с помощью Эксель, Процессинга, Си, Паскаля, Фортрана, да и еще чего угодно - что окажется оптимальным в конкретной ситуации. И, думаю, любой профессионал поступит так же.

А если у Вас есть инструмент, который Вас вполне устраивает, зачем тогда вообще обращаться на форум?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

Например если я циклически вывожу спектр через функцию плоттера как мне каждый раз попасть в начало экрана? 

По приведенной Вами же ссылке написано: " Не забывайте заново запускать Serial Plotter после обновления скетча, чтобы избежать различных проблем с отображением данных."

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Этой фразы я как раз и не понял... думал что из Вас кто/нить юзал вывод принта через платтер в Ардуино.

что значит «заново запускать»?

есть какая-то команда «обнуления»? Ресет?

как?

Ну а надобность? Объясню. Читал оживленную дискуссию между Вами господа по поводу достоверности результатов FFT. У Вас они выводятся просто на экран в виде чисел... хрен его поймешь что там. А если бы выводился график спектра через plotter от Arduino то было бы сразу видно где какие гармоники стоят...  наглядно

вот...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

что значит «заново запускать»?

Не знаю. 

В жизни никогда не запускал.

Думал, Вы расскажете.

Цитата:

есть какая-то команда «обнуления»? Ресет?

Если верить описанию (а именно - процитированной мною выше строке) - нет.

(И, кстати, эта одна из причин, по которой я не просто не пользуюсь этим "плоттером", а даже не знаю о его существовании, - он меня явно не устроит по своим возможностям.)

nik182
Offline
Зарегистрирован: 04.05.2015

Можно не перезапускать. Можно просто управлять положением курсора на экране. Почитайте здесь. Я рисовал с помощью print и println таблицы в которых менялись данные в разных клетках. Можно и график изобразить. 

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Спасибо всем, попытаюсь разобраться

отпишу что получилось 

Гриша
Offline
Зарегистрирован: 27.04.2014

Andrey2020 пишет:

Ссылка на материал тут:

http://out.arduino.ru/?redirect=http%3A%2F%2Fdeveloper.alexanderklimov.ru%2Farduino%2Farticles%2Fplotter.php&baseU=http%3A%2F%2Farduino.ru%2Fforum%2Fpesochnitsa-razdel-dlya-novichkov%2Fvyvod-na-ekran-grafiki-cherez-plotter%23comment-548386

Например если я циклически вывожу спектр через функцию плоттера как мне каждый раз попасть в начало экрана? 
 

очевидно же, потребуется использовать машину времени:

"Фактически ось X представляет собой момент времени. Каждая точка на оси X представляет выполнение оператора функции println() - когда вызывается функция, на графике записывается новая точка. "

Andrey2020 пишет:

что значит «заново запускать»?

значит - " закрыли плоттер", а потом заново "открыли плоттер" - руками, другого не предусмотрено.

единственный вариант: закинуть данные в несколько массивов, а потом нужным образом вывести в 2 и более графиков. 

программа простая и почти не пригодна для использования.

 

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Понятно

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Я другую нашёл более мощную. 
https://github.com/CieNTi/serial_port_plotter

сегодня буду смотреть

mixail844
Offline
Зарегистрирован: 30.04.2012
когда надо было быстро вывести данные в графическом режиме, пользовался этой : 
Andrey2020
Offline
Зарегистрирован: 09.07.2020

Спасибо, попробую

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Andrey2020 пишет:

Я другую нашёл более мощную. 
https://github.com/CieNTi/serial_port_plotter

сегодня буду смотреть

Andrey2020 пишет:

Спасибо, попробую

Ну т.е. Вы поняли, что та программа, которую Вы еще несколько часов назад преподносили как безальтернативную, реального интереса не представляет.

Andrey2020 пишет:

Жесть! Так Вы ребзя дилетанты. А я думал Вы профи.

тогда вот тут прочтите, это расширит Ваши познания в IDE:

 http://developer.alexanderklimov.ru/arduino/articles/plotter.php

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Да, конечно...

Вопросов нет

nik182
Offline
Зарегистрирован: 04.05.2015

Andrey2020 пишет:

Я другую нашёл более мощную. 
https://github.com/CieNTi/serial_port_plotter

сегодня буду смотреть


Она требует printf. Moжно конечно извратиться и обеспечить вывод, а просто сразу из ардуины не получится. Есть много программ рисования данных выводимых через сериал порт. Мы тут недавно датчик пульса и кислорода крови обсуждали. Там к либе приложением шла отличная программа рисования данных выдаваемых через сериал. Можно организовать несколько окон с разными граффиками и весь вывод ардуины шёл стандартным srerial.print.

Andrey2020
Offline
Зарегистрирован: 09.07.2020

Смотрите, я ещё не тестил но там же есть библиотека serial_port_plotter-master.zip я так понимаю её надо установить в IDE и тогда можно использовать printf

НЕТ?

nik182
Offline
Зарегистрирован: 04.05.2015

printf можно и так использовать, только он кастрирваный, а полный очень много места в памяти отбирает. Посмотрите, может Вам и кастрированного хватит. Поищите по форуму про printf. Были обсуждения возможностей.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А что за проблема с printf кроме того, что он жрет дофига флеша? (14к в варианте stm32)

Andrey2020
Offline
Зарегистрирован: 09.07.2020

nik182 пишет:
Andrey2020 пишет:

Я другую нашёл более мощную. 
https://github.com/CieNTi/serial_port_plotter

сегодня буду смотреть

Она требует printf. Moжно конечно извратиться и обеспечить вывод, а просто сразу из ардуины не получится. Есть много программ рисования данных выводимых через сериал порт. Мы тут недавно датчик пульса и кислорода крови обсуждали. Там к либе приложением шла отличная программа рисования данных выдаваемых через сериал. Можно организовать несколько окон с разными граффиками и весь вывод ардуины шёл стандартным srerial.print.

 

Коллега, а можно ссылку на эту "программу рисования" 

Спасибо

nik182
Offline
Зарегистрирован: 04.05.2015
Andrey2020
Offline
Зарегистрирован: 09.07.2020

Говорите там вывод через serial.print()

А какие-то спец сиволы нужны для управления выводом?

Не нашёл описания

Andrey2020
Offline
Зарегистрирован: 09.07.2020

А вообще для вывода спектра ввиде вертикальных баров эта прога подойдёт??

будет ли курсор возвращаться в начало координат после каждого вывода буфера ??

nik182
Offline
Зарегистрирован: 04.05.2015

После слов An example packet for plotting to a bar graph: идёт описание пакета данных.
Здесь есть пример, как организован вывод на 4 графика 8 кривых под спойлером код. http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/max30100-kitai...

Andrey2020
Offline
Зарегистрирован: 09.07.2020

nik182 пишет:
После слов An example packet for plotting to a bar graph: идёт описание пакета данных. Здесь есть пример, как организован вывод на 4 графика 8 кривых под спойлером код. http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/max30100-kitaiskii-modul-nastroit-chtoby-vse-rabotalo#comment-539997

Вы имеете ввиду это?

//These are special packets for FlexiPlot plotting tool
  Serial.print("{P0|IR|0,0,255|");
  Serial.print(result.dcFilteredIR);
  Serial.print("|RED|255,0,0|");
  Serial.print(result.dcFilteredRed);
  Serial.println("}");
 
  Serial.print("{P1|RED|255,0,255|");
  Serial.print(result.irCardiogram);
  Serial.print("|BEAT|0,0,255|");
  Serial.print(result.lastBeatThreshold);
  Serial.println("}");
  Serial.print("{P3|IR|255,0,255|");
  Serial.print(result.rawIR);
  Serial.print("|RED|0,0,255|");
  Serial.print(result.rawRed);
  Serial.println("}");

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Долго смотрел за сообщениями и молчал.
И как я понял автору нужно всего-навсего после вывода какого-то массива точек
очистить экран и нарисовать его снова.
Вряд-ли в Ардуиновском плоттере есть такая комманда.
Что-нибудь типа "cls" - CLear Screen

rkit
Offline
Зарегистрирован: 23.11.2016

Просто забей нулями.