Arhn - архитектура программирования

Построение графика в реальном времени с помощью Processing

Мне нужно построить график обработки по обратной связи от двигателей энкодера бота. поэтому у меня есть две переменные, в основном левый энкодер двигателя и правый энкодер двигателя. Я планировал изменить по оси X, а другой по оси Y. Пока я просматривал часть кода в Интернете, я обнаружил, что почти все написали код части графа в самом последовательном событии?

Итак, мое первое сомнение заключается в том, почему они пишут это в функции serial event(), а не в void draw()? Другое дело, когда я пытался написать свой код для графика в void draw(), у него был примерно такой псевдокод:

           xpos1=0,ypos1=height;
        void draw():
         line(xpos1,ypos1,xpos,height-ypos);// obviously the data(xpos,ypos) is mapped with the width and height of the processing ide window.
            xpos1=xpos;
            ypos1=height-ypos;
            if(xpos1>=width)
            {
              xpos1=0;
            }
            if(ypos1>=height)
            {
              ypos1=0;
            }

Таким образом, я вижу только небольшую точку, проходящую при обработке окна ide, и я не вижу более старый путь, по которому прошла моя линия, что в случае сайтов, которые я описал, когда писал аналогичный фрагмент кода в последовательном событии (), у них был весь график создается в окне обработки.

Где я ошибаюсь? Также есть ли альтернатива построению графика с использованием void draw()? Я хочу изменить как xpos, так и ypos, поскольку я получаю две обратной связи от левого и правого двигателей.

graph

Скриншот моей попытки графика в разных кадрах!

Изображение

Скриншот одного из графиков, сделанный кодом, похожим на показанный выше, но написанным в последовательном событии(), доступном в Интернете:

16.06.2017

  • Не могли бы вы опубликовать минимально воспроизводимый пример? Забудьте пока о серийных вещах. Можете ли вы просто построить переменную mouseX во времени? 16.06.2017
  • Я думаю, что здесь есть два множества подвопросов. Пожалуйста, сократите это до первой вещи, которую вы хотите исправить, добавив MCVE, который просит Кевин. Он кажется довольно широким и исправит все в настоящее время. 16.06.2017
  • @KevinWorkman хорошо, позвольте мне попробовать построить переменную mouseX с течением времени, и я соответствующим образом отредактирую вопрос. до тех пор, пожалуйста, скажите мне, почему они пишут код построения в последовательном событии(), а не в void draw()? я отправляю вам одну из ссылок, где это делается: arduining .com/2013/08/05/arduino-and-processing-graph-example 16.06.2017
  • @SaadAnwar Нет единственно правильного способа сделать что-либо из этого. Любой подход хорош. Вы столкнетесь с аналогичным решением в своей более простой примерной программе: поместить ее в функцию draw() или в функцию mouseMoved()? Либо один хорошо. Вам просто нужно понимать различия и делать правильные вещи для выбранного вами подхода. 16.06.2017

Ответы:


1

Как указано в комментариях, здесь слишком много подвопросов.

Что касается вопроса о коде, есть одна основная линия, которая делает код намного сложнее, чем он должен быть. Вы пытаетесь провести линию между каждой парой чисел, полученных двумя кодировщиками. В этом нет необходимости. При построении графика я лично использую функцию point(x,y). Его намного проще реализовать для целей прототипирования, и, регулируя частоту кадров(), с которой работает скетч, вы не заметите разницы.

void draw() {

  point(encoder1, encoder2);

  if (encoder1 >= width) {
    encoder1 = encoder1 - width;
  }
  if (encoder2 >= height) {
    encoder2 = encoder2 - height;
  }
}

Простой набросок, подобный этому, сделает эту работу.

Другая вещь, которая не совсем ясна, — это инициализация переменных. Обычно вы инициализируете переменную, если она постоянно увеличивается, например, время, но из вашего описания вы хотите отобразить по оси X один энкодер, а по оси Y — другой энкодер. Так не лучше ли было бы сопоставить значения для начала, чтобы они не выходили за пределы диапазона холста?

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

17.06.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..