Arduino плоттер по последовательному соединению несколько графиков

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как использовать функцию Serial Plotter в Arduino IDE для отображения графиков

Визуализация данных при работе с Arduino – это то, что нам всем приходилось делать в прошлом, используя стороннее или самостоятельно разработанное программное обеспечение. Но команда Arduino недавно решила это изменить. Сегодня мы рассмотрим их решение, называемое Serial Plotter, новый инструмент, который поставляется с новыми версиями Arduino IDE.

Serial Plotter обеспечивает среду, через которую мы можем видеть графики данных, выводимых в последовательный порт Arduino в режиме реального времени. Перед включением этой функции в Arduino IDE инженерам и любителям обычно приходится писать дополнительный код с использованием других инструментов и языков программирования, таких как Python. Иногда это затрудняет отладку из-за дополнительной работы и времени, которое требуется, особенно в приложениях, основанных на сигналах, где просмотр данных на последовательном мониторе будет недостаточным.

Serial Plotter или последовательный плоттер в основном принимает значения, поступающие из заданного последовательного порта, и отображает их на графике плоскости x-y. Ось Y представляет значения из последовательного порта и автоматически настраивается при увеличении или уменьшении значения. Можно сказать, что ось X представляет собой момент времени. Каждая точка на оси x представляет выполнение оператора println в коде Arduino. Проще говоря, каждый раз, когда выполняется команда println, на графике записывается новая точка / данные (значение Y, соответствующее этой конкретной инструкции println). Ограничением Serial Plotter в этой версии Arduino IDE является тот факт, что он поддерживает всего 500 выборок данных, после чего может потребоваться перезапуск плоттера. Это может сделать плоттер непригодным для определенных приложений, но, возможно, это изменится в следующих версиях Arduino IDE.

Serial Plotter можно вызвать после загрузки кода на плату Arduino, щелкнув tools — serial plotter в раскрывающемся меню или нажав CTRL + SHIFT + L, что является сочетанием клавиш для той же операции.

Чтобы продемонстрировать использование последовательного плоттера в сегодняшнем уроке, мы создадим два примера. Для первого примера мы будем использовать Serial Plotter для получения данных с фоторезистора. Это даст нам возможность изучить, как данные изменяются в зависимости от силы света, не пытаясь понять, какие числа выводятся на последовательном мониторе. Во втором примере мы будем использовать датчик температуры и влажности DHT22. Цель этого примера – показать, как выводить данные с нескольких датчиков с помощью последовательного плоттера Arduino.

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

Для второго примера схема содержит датчик температуры и влажности DHT22, подключенный к Arduino, как показано на следующей схеме.

Код для двух примеров, с которыми мы будем работать, довольно прост. В обоих программах важна функция println(). Функция Serial.println() Arduino выводит данные на последовательный порт в виде читаемого человеком текста ASCII, за которым следует символ возврата каретки (ASCII 13 или «\r») и символ новой строки (ASCII 10 или «\n») , Эта команда принимает ту же форму, что и инструкция Serial.print(), с той лишь разницей, что символ новой строки не связан с serial.print(). Как упоминалось в начале, каждый раз, когда выполняется команда serial.println(), данные записываются в последовательный плоттер, что делает его очень важным для этого проекта. С учетом сказанного давайте рассмотрим код примеров, начиная с первого.

Здесь в рамках функции бесконечного цикла void loop() мы используем функцию analogRead() для получения данных с вывода делителя напряжения, после чего данные отправляются в последовательный порт с помощью команды serial.println(), благодаря чему отображаются в виде графика в Serial Plotter.

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

В функции void loop(), как обычно, делается большая часть работы. Мы начали с использования функций dht.readTempera() и dht.readHumidity, чтобы получить значение температуры и влажности от датчика. После чего мы приступили к их распечатке таким образом, чтобы Serial Plotter понимал разницу между переменными. Это делается путем печати пустого пространства между переменными (после первого значения, перед вторым значением). Без этого пустого пространства между данными плоттер увидит следующий оператор println как обновление предыдущего.

Этот проект довольно прост, и здесь не должно возникнуть каких-либо сложностей, но в случае, если что-то пойдет не так, убедитесь, что ваши соединения соответствуют описанным в схемах. Для каждого примера, после двойной проверки ваших соединений, загрузите соответствующий код в плату Arduino и откройте монитор последовательного порта. Вы должны увидеть данные через некоторое время, как показано на изображениях ниже.

Источник

Визуализация данных в виде графика — SFMonitor

С помощью Ардуино можно легко собирать данные с самых разных датчиков. Можно, к примеру, измерить температуру, скорость ветра и влажность воздуха на улице. А если добавим к этому списку МЭМС барометр и датчик освещенности, получим настоящую погодную станцию у себя во дворе. Но что делать с огромной массой полученных данных? Как проанализировать накопленные массивы чисел?

Самое простое, что мы можем сделать — это вывести показания датчиков в монитор COM-порта в виде таблицы, а затем построить с помощью них график в одном из редакторов таблиц. Например, показания барометра, полученные с помощью трех разных датчиков в одном из моих экспериментов, выглядели так:

Такой подход хорош, когда нам достаточно оценить показания датчиков уже после проведения эксперимента. Если же график нужно строить в режиме реального времени потребуется специальное приложение для визуализации потоков данных. Например, это можно сделать с помощью известного пакета MatLab. В одной из послежний версий Arduino IDE также появилась возможность строить простые графики.

На этом уроке мы поговорим еще про один инструмент для визуализации — приложение SFMonitor. Это монитор последовательного порта с открытыми исходными кодами, который я разработал пару лет назад для работы над системой стабилизации беспилотников. В основе SFMonitor лежит проект Eli Bendersky написанный на языке python и библиотеки PyQt. Монитор позволяет строить сразу несколько графиков, используя для передачи данных библиотеку SerialFlow. Обо всем этом я расскажу далее.

Строим простой график в SFMonitor

Для того, чтобы построить в SFMonitor самый простой тип графика, потребуется несложная программа, которая будет отправлять в COM-порт показания какого-нибудь датчика. Для примера используем фоторезистор, подключенный к аналоговому порту Ардуино.

Важно отметить, что мы будем передавать всего один байт за раз, а это число от 0 до 255. АЦП же нам дает число от 0 до 1023. Мы используем функцию map, чтобы нормировать результат АЦП в 1 байт.

Также следует после каждой отправки данных в порт делать небольшую паузу, не менее 10мс. В противном случае COM-порт персонального компьютера начнет тормозить.

Теперь включим монитор и настроим параметры. Первое, что нужно будет выбрать — это тип графика. В выпадающем меню выбираем «Простой».

Затем настраиваем формат данных в пакете. Для этого зайдем в пункт меню «Данные/Настройка потоков».

На вкладке «Общие» выбираем размер чисел в пакете — 1 байт.

Переходим на вкладку «Поток №1» и ставим галку «Беззнаковые значения». Это означает, что мы будем принимать строго положительные числа от 0 до 255.

Теперь выбираем COM-порт Ардуино и скорость передачи данных.

Наконец, запускаем монитор и наблюдаем график.

Пакетная передача данных

Что делать, если нам нужно строить график по шкале от 0 до 1024? или еще больше, от -1 000 000 до 1 000 000. А еще интересно, как сразу передавать данные с двух, или с трех датчиков? Нужен другой способ передачи данных. Способ, при котором данные складываются в некий виртуальный пакет в заданном порядке, затем отправляются адресату, который разворачивает пакет. Собственно, такой метод передачи данных и называют пакетным. На основе пакетов работает весь интернет и большинство промышленных линий связи.

В SFMonitor для пакетной передачи используется библиотека SerialFlow. Эта библиотека позволяет задать формат пакета и предоставляет функции для упаковки данных в пакет и для их распаковки обратно.

Напишем программу для Ардуино, которая будет передавать показания акселерометра ADXL345 для всех трех осей в диапазоне от -32768 до 32767.

Чтобы SFMonitor смог отобразить три графика настроим следующие параметры:

  • Формат данных — выбираем v(t);
  • Потоки — ставим галку для всех трех;
  • Размер значения в пакете — 2 байта;
  • Беззнаковые значения — ставим для всех трех потоков.

После запуска монитора получим такие вот три графика:

Построение графиков в Arduino IDE

Начиная с версии 1.6.6 в среде Arduino IDE появилось штатное средство для построения графиков. Немного изменим программу, чтобы Ардуино смогла корректно передавать данные с акселерометра для встроенного монитора.

Используем обычный println. Загружаем программу на Ардуино и запускаем встроенный монитор через меню «Инструменты/ Плоттер по последовательному соединению». Результат ниже.

К сожалению, встроенный инструмент Arduino IDE пока позволяет строить только один график, и не имеет вообще никаких настроек.

Заключение

SFMonitor постоянно дорабатывается и прирастает новыми возможностями. Например, в последней версии появился режим векторного отображения, который использовался для визуализации данных датчика TSL1401.

В будущих версиях планируется режим отображения трехмерных данных, который удобно использовать для визуализации данных инклинометра. И напоминаю, приложение SFMonitor полностью открытое, и мы приветствуем любую помощь по доработке!

Источник

Using The Arduino Serial Plotter To Visualize Real Time Data

Skill Level: Intermediate

Introduction

This tutorial will teach you how to display waveforms and real time data using the Arduino Serial Plotter. A basic understanding of electronics and programming is expected along with some familiarity with the Arduino platform. If you are new to the Arduino platform or would just like to refresh your knowledge, please see our Blink: Making An LED Blink On An Arduino Uno tutorial before proceeding with this one.

The resources created for this tutorial are available on GitHub for your reference.

What Is Needed

  • Linux, macOS, Or Windows Based Computer With A USB Port
  • Arduino IDE
  • Arduino Uno WiFi R2 (available on Arduino and SparkFun) With Compatible USB Cable

Background Information

Although I have worked with the Arduino IDE for a while now, I only recently came across a really cool feature called the Serial Plotter. I had previously seen it in the Tools pulldown of the main menu, but had assumed that since I did not have a physical plotter, it did not apply to me. I only realized recently that it is actually used for plotting values on a graph and can be a valuable tool for visualizing data along with debugging code. You know what they say about assumptions.

My development system consists of the Arduino Uno WiFi Rev2 development board connected to a macOS based computer running the desktop Arduino IDE. If you are using a different Arduino board or computer setup, the vast majority of this tutorial should still apply, however, some minor changes may be necessary. I am using the Uno WiFi R2 in this tutorial to take advantage of the on-board inertial measurement unit (IMU) so that I do not have to connect additional hardware.

If you need assistance with your particular setup, post a question in the comments section below and I, or someone else, can try to help you.

Displaying Generated Waveforms

This section will describe how to generate and display waveforms using the Serial Plotter.

Open the Arduino IDE and create a new sketch named FunctionGenerator with the code shown below.

The code should be fairly straightforward, but if there is something that needs further explanation, please let me know in the comment section and I will try to answer your question.

Open the Serial Plotter window (Tools > Serial Plotter) and make sure the baud rate is set to 9600. This is where the generated waveforms will be displayed.

Upload (Sketch > Upload) the sketch to the board and you should see a sine wave being displayed in the Serial Plotter window as shown below.

Sine Wave In Serial Plotter Window

If we take a look at the sketch, we see that the plotSineWave() function is being called from within the loop() function. Display one of the other waveforms by commenting out the plotSineWave() function, uncommenting one of the other waveforms, and rerunning your sketch. Note, if you see data left over from the previous plot, you will need to close and re-open the Serial Plotter window to clear the screen.

Reviewing the plotSineWave() function, we see the data is simply being sent using the Serial.println() function that you are probably already familiar with for printing text and data to the Serial Monitor. As long as only numbers and whitespace are sent over the serial port in a particular format, the Serial Plotter can interpret that data to graph it visually. This format requires that a new line character be sent in between x-axis tick marks and that y-axis values are separated by whitespace such as a space or tab.

For instance, we would use the following general format to plot single variable data

and the following for multivariable data.

Notice that only the last statement, println() , actually sends a new line. You can add more variables as long as you add the appropriate whitespace in between the print() statements for each of the variables. You may even choose to use a tab, print(“\t”) , in between your variables to make the data easier to read while viewing the data directly within the Serial Monitor window.

Whereas all other wave functions display only a single variable plot, the plotCombinedWaves() function displays three different waveforms simultaneously. View this function for a better understanding of how to plot a multivariable graph. The plot for this is shown below.

Combined Waveforms In Serial Plotter Window

Displaying Real Time Data

Until now, we have only plotted data for waveforms we generated ourselves. Now let’s use the on-board IMU of the Arduino Uno WiFi R2 to plot actual real time motion data.

Create a new sketch named LSM6DS3_SerialPlotter with the code shown below. I won’t go into the details of how to access the IMU data, but if you are interested, please see our Accessing The IMU On The New Arduino Uno WiFi Rev2 tutorial for more information.

Within the loop() function, we are accessing and displaying all three axes of the IMU motion data every 100 ms. The plot of this data is shown below.

IMU Sensor Data In Serial Plotter Window

The blue squiggles at the beginning of the graph represent moving the board in the x direction. The red and green ones represent the y and z directions respectively. The mass of movement in all directions at the end of the graph represents moving and rotating the board in all kinds of directions.

Summary

In this tutorial, we learned how to generate and display various types of waveforms using the Arduino IDE’s Serial Plotter. We also learned how to graph real time motion data from the Arduino Uno WiFi R2’s on-board IMU.

The Serial Plotter may be a simple tool, but it can be a powerful one allowing you to visualize and debug your program’s data and sensor measurements. As they say, “a picture is worth a thousand words”.

The final source code used for this tutorial is available on GitHub.

Thank you for joining me in this journey and I hope you enjoyed the experience. Please feel free to share your thoughts in the comments section below.

Источник

Ардуино плоттер по последовательному соединению несколько графиков

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как использовать функцию Serial Plotter в Arduino IDE для отображения графиков

Визуализация данных при работе с Arduino – это то, что нам всем приходилось делать в прошлом, используя стороннее или самостоятельно разработанное программное обеспечение. Но команда Arduino недавно решила это изменить. Сегодня мы рассмотрим их решение, называемое Serial Plotter, новый инструмент, который поставляется с новыми версиями Arduino IDE.

Serial Plotter обеспечивает среду, через которую мы можем видеть графики данных, выводимых в последовательный порт Arduino в режиме реального времени. Перед включением этой функции в Arduino IDE инженерам и любителям обычно приходится писать дополнительный код с использованием других инструментов и языков программирования, таких как Python. Иногда это затрудняет отладку из-за дополнительной работы и времени, которое требуется, особенно в приложениях, основанных на сигналах, где просмотр данных на последовательном мониторе будет недостаточным.

Serial Plotter или последовательный плоттер в основном принимает значения, поступающие из заданного последовательного порта, и отображает их на графике плоскости x-y. Ось Y представляет значения из последовательного порта и автоматически настраивается при увеличении или уменьшении значения. Можно сказать, что ось X представляет собой момент времени. Каждая точка на оси x представляет выполнение оператора println в коде Arduino. Проще говоря, каждый раз, когда выполняется команда println, на графике записывается новая точка / данные (значение Y, соответствующее этой конкретной инструкции println). Ограничением Serial Plotter в этой версии Arduino IDE является тот факт, что он поддерживает всего 500 выборок данных, после чего может потребоваться перезапуск плоттера. Это может сделать плоттер непригодным для определенных приложений, но, возможно, это изменится в следующих версиях Arduino IDE.

Serial Plotter можно вызвать после загрузки кода на плату Arduino, щелкнув tools — serial plotter в раскрывающемся меню или нажав CTRL + SHIFT + L, что является сочетанием клавиш для той же операции.

Чтобы продемонстрировать использование последовательного плоттера в сегодняшнем уроке, мы создадим два примера. Для первого примера мы будем использовать Serial Plotter для получения данных с фоторезистора. Это даст нам возможность изучить, как данные изменяются в зависимости от силы света, не пытаясь понять, какие числа выводятся на последовательном мониторе. Во втором примере мы будем использовать датчик температуры и влажности DHT22. Цель этого примера – показать, как выводить данные с нескольких датчиков с помощью последовательного плоттера Arduino.

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

Для второго примера схема содержит датчик температуры и влажности DHT22, подключенный к Arduino, как показано на следующей схеме.

Код для двух примеров, с которыми мы будем работать, довольно прост. В обоих программах важна функция println(). Функция Serial.println() Arduino выводит данные на последовательный порт в виде читаемого человеком текста ASCII, за которым следует символ возврата каретки (ASCII 13 или «\r») и символ новой строки (ASCII 10 или «\n») , Эта команда принимает ту же форму, что и инструкция Serial.print(), с той лишь разницей, что символ новой строки не связан с serial.print(). Как упоминалось в начале, каждый раз, когда выполняется команда serial.println(), данные записываются в последовательный плоттер, что делает его очень важным для этого проекта. С учетом сказанного давайте рассмотрим код примеров, начиная с первого.

Здесь в рамках функции бесконечного цикла void loop() мы используем функцию analogRead() для получения данных с вывода делителя напряжения, после чего данные отправляются в последовательный порт с помощью команды serial.println(), благодаря чему отображаются в виде графика в Serial Plotter.

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

В функции void loop(), как обычно, делается большая часть работы. Мы начали с использования функций dht.readTempera() и dht.readHumidity, чтобы получить значение температуры и влажности от датчика. После чего мы приступили к их распечатке таким образом, чтобы Serial Plotter понимал разницу между переменными. Это делается путем печати пустого пространства между переменными (после первого значения, перед вторым значением). Без этого пустого пространства между данными плоттер увидит следующий оператор println как обновление предыдущего.

Этот проект довольно прост, и здесь не должно возникнуть каких-либо сложностей, но в случае, если что-то пойдет не так, убедитесь, что ваши соединения соответствуют описанным в схемах. Для каждого примера, после двойной проверки ваших соединений, загрузите соответствующий код в плату Arduino и откройте монитор последовательного порта. Вы должны увидеть данные через некоторое время, как показано на изображениях ниже.

Источник

Using the Serial Plotter Tool

AUTHOR: Karl Söderby

LAST REVISION: 10/05/2022, 01:00 PM

The Serial Plotter

The Serial Plotter tool is a versatile tool for tracking different data that is sent from your Arduino board. It functions similarly to your standard Serial Monitor tool which is used to print data «terminal style», but is a greater visual tool that will help you understand and compare your data better.

In this tutorial, we will take a quick look on how to enable this feature (works for practically any sketch that uses serial communication), how a sample sketch looks like, and how it is expected to work.

If you need help to download and install the Arduino IDE 2, you can visit the IDE 2 downloading and installing guide. For other guides on how to use the editor, visit the IDE 2 docs.

Requirements

  • Arduino IDE 2.0 installed.
  • Core installed for the board used.
  • Arduino board.
  • Potentiometer (optional).

Goals

The goal with this tutorial is:

  • Learn how to use the Serial Plotter.
  • Create a simple sketch and test it out.

Example Sketch

To use the Serial Plotter, we will need to create a sketch and upload it to our board. This sketch needs to include at least one numerical variable, such as an or .

Below you will find two sketches, one using a potentiometer and function, the other using the function. Both sketches have a variable named which has a permanent value of , used as a reference value.

Choose and upload any of the examples below to your board.

Sketch (With Potentiometer)

  • — variable to store value from a potentiometer, connected to an analog pin (gives a value between 0-1023).
  • — variable that has an unchanged value of 500.

Sketch (Without Potentiometer)

  • — variable that stores a randomized value between 0-1000.
  • — variable that has an unchanged value of 500.

The Serial Plotter recognizes only CRLF & LF as linebreak characters. So ensure that the either there is a linebreak character after the last variable. You can use or to introduce a linebreak character at the end. Conversely, introduces a CRLF character automatically. Further, you can also use (tab) or (space) as a delimiter instead of (comma) in the above example.

The Serial Plotter

Once the sketch is uploaded, we can test out the Serial Plotter.

Make sure the sketch has finished uploading before opening the Serial Plotter. You will see the text «upload complete» in the terminal output.

Click the button in the the top right of the IDE window to open the Serial Plotter.

Opening the Serial Plotter

If you choose the potentiometer example sketch, when turning the knob, you should be creating a «wave-like» pattern in the plotter. Here, we can use the as a reference, as we know it is always . This is an easy example of just testing out an analog component.

If you chose the random example sketch, when you open the plotter you will see very random spikes, as the values fluctuate rapidly.

You can also enable/disable the variables by checking the box next to the variable name.

Conclusion

The Serial Plotter is a really useful tool for tracking your variables. It can be used for testing and calibrating sensors, comparing values and other similar scenarios.

To learn more about the Arduino IDE 2 features, you can visit the Arduino IDE 2 docs.

Источник

Using The Arduino Serial Plotter To Visualize Real Time Data

Skill Level: Intermediate

Introduction

This tutorial will teach you how to display waveforms and real time data using the Arduino Serial Plotter. A basic understanding of electronics and programming is expected along with some familiarity with the Arduino platform. If you are new to the Arduino platform or would just like to refresh your knowledge, please see our Blink: Making An LED Blink On An Arduino Uno tutorial before proceeding with this one.

The resources created for this tutorial are available on GitHub for your reference.

What Is Needed

  • Linux, macOS, Or Windows Based Computer With A USB Port
  • Arduino IDE
  • Arduino Uno WiFi R2 (available on Arduino and SparkFun) With Compatible USB Cable

Background Information

Although I have worked with the Arduino IDE for a while now, I only recently came across a really cool feature called the Serial Plotter. I had previously seen it in the Tools pulldown of the main menu, but had assumed that since I did not have a physical plotter, it did not apply to me. I only realized recently that it is actually used for plotting values on a graph and can be a valuable tool for visualizing data along with debugging code. You know what they say about assumptions.

My development system consists of the Arduino Uno WiFi Rev2 development board connected to a macOS based computer running the desktop Arduino IDE. If you are using a different Arduino board or computer setup, the vast majority of this tutorial should still apply, however, some minor changes may be necessary. I am using the Uno WiFi R2 in this tutorial to take advantage of the on-board inertial measurement unit (IMU) so that I do not have to connect additional hardware.

If you need assistance with your particular setup, post a question in the comments section below and I, or someone else, can try to help you.

Displaying Generated Waveforms

This section will describe how to generate and display waveforms using the Serial Plotter.

Open the Arduino IDE and create a new sketch named FunctionGenerator with the code shown below.

The code should be fairly straightforward, but if there is something that needs further explanation, please let me know in the comment section and I will try to answer your question.

Open the Serial Plotter window (Tools > Serial Plotter) and make sure the baud rate is set to 9600. This is where the generated waveforms will be displayed.

Upload (Sketch > Upload) the sketch to the board and you should see a sine wave being displayed in the Serial Plotter window as shown below.

Sine Wave In Serial Plotter Window

If we take a look at the sketch, we see that the plotSineWave() function is being called from within the loop() function. Display one of the other waveforms by commenting out the plotSineWave() function, uncommenting one of the other waveforms, and rerunning your sketch. Note, if you see data left over from the previous plot, you will need to close and re-open the Serial Plotter window to clear the screen.

Reviewing the plotSineWave() function, we see the data is simply being sent using the Serial.println() function that you are probably already familiar with for printing text and data to the Serial Monitor. As long as only numbers and whitespace are sent over the serial port in a particular format, the Serial Plotter can interpret that data to graph it visually. This format requires that a new line character be sent in between x-axis tick marks and that y-axis values are separated by whitespace such as a space or tab.

For instance, we would use the following general format to plot single variable data

and the following for multivariable data.

Notice that only the last statement, println() , actually sends a new line. You can add more variables as long as you add the appropriate whitespace in between the print() statements for each of the variables. You may even choose to use a tab, print(“\t”) , in between your variables to make the data easier to read while viewing the data directly within the Serial Monitor window.

Whereas all other wave functions display only a single variable plot, the plotCombinedWaves() function displays three different waveforms simultaneously. View this function for a better understanding of how to plot a multivariable graph. The plot for this is shown below.

Combined Waveforms In Serial Plotter Window

Displaying Real Time Data

Until now, we have only plotted data for waveforms we generated ourselves. Now let’s use the on-board IMU of the Arduino Uno WiFi R2 to plot actual real time motion data.

Create a new sketch named LSM6DS3_SerialPlotter with the code shown below. I won’t go into the details of how to access the IMU data, but if you are interested, please see our Accessing The IMU On The New Arduino Uno WiFi Rev2 tutorial for more information.

Within the loop() function, we are accessing and displaying all three axes of the IMU motion data every 100 ms. The plot of this data is shown below.

IMU Sensor Data In Serial Plotter Window

The blue squiggles at the beginning of the graph represent moving the board in the x direction. The red and green ones represent the y and z directions respectively. The mass of movement in all directions at the end of the graph represents moving and rotating the board in all kinds of directions.

Summary

In this tutorial, we learned how to generate and display various types of waveforms using the Arduino IDE’s Serial Plotter. We also learned how to graph real time motion data from the Arduino Uno WiFi R2’s on-board IMU.

The Serial Plotter may be a simple tool, but it can be a powerful one allowing you to visualize and debug your program’s data and sensor measurements. As they say, “a picture is worth a thousand words”.

The final source code used for this tutorial is available on GitHub.

Thank you for joining me in this journey and I hope you enjoyed the experience. Please feel free to share your thoughts in the comments section below.

Источник

Adblock
detector