Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Связь chevron_right Построение графика в Processing по данным с Arduino

Построение графика в Processing по данным с Arduino

Отправляем данные с аналогового входа Arduino на компьютер и строим по ним живой график в Processing или Max/MSP.

В этом уроке мы разберём, как отправить данные с Arduino на компьютер и отобразить их в виде графика. Связь между платой и ПК называется последовательной (serial), потому что и плата, и компьютер видят соединение как серийный порт — даже если физически используется USB-кабель, переходник serial→USB и USB→serial.

Просмотреть поток данных можно прямо в Serial Monitor среды Arduino IDE, а построить график — с помощью Processing (код ниже), Flash, PD, Max/MSP и других инструментов.

Необходимое железо

  • Аналоговый датчик (потенциометр, фоторезистор, датчик давления FSR и т. д.)

Необходимое программное обеспечение

Схема подключения

Подключите потенциометр или другой аналоговый датчик к аналоговому входу A0.

Схема подключения потенциометра к плате Arduino UNO на макетной плате: крайние выводы потенциометра идут на 5V и GND, средний (движок) — на A0.

Принципиальная схема

Принципиальная схема: ПОТЕНЦИОМЕТР подключён между 5V и GND, средний вывод — на A0 платы Arduino UNO.

Код

Скетч для Arduino считывает значение с аналогового входа A0 и отправляет его в последовательный порт. Скетч Processing читает эти данные и рисует линию на экране.

Как это работает

Ардуино непрерывно читает напряжение на пине A0 с помощью analogRead() — получается число от 0 до 1023. Это значение отправляется в порт через Serial.println(), который добавляет в конце символы возврата каретки (\r) и перевода строки (\n). Processing принимает строку, преобразует её в число и рисует вертикальную линию соответствующей высоты. Когда линия доходит до правого края окна, экран очищается и рисование начинается сначала — получается бегущий график.

Скетч Processing

Используя скетч Processing из примера выше, вы получите живой график значений датчика. По мере изменения положения потенциометра график будет выглядеть примерно так:

Окно Processing с графиком данных, считанных с потенциометра.

Код для Max/MSP

Патч Max/MSP выглядит следующим образом. Текст патча находится в примере кода выше — скопируйте его и вставьте в новое окно Max, чтобы увидеть результат.

Патч Max/MSP для построения графика: принимает строку с числом от 0 до 1023 (ASCII, с символами \r\n в конце), преобразует её в целое число и строит график. Нажмите на кнопку открытия порта, чтобы начать приём данных.

Практические замечания

  • Скорость порта должна совпадать. В скетче Arduino и в скетче Processing/Max указывается одинаковая скорость — обычно 9600 бод. Если они расходятся, на экране будет мусор или тишина.
  • Закрывайте Serial Monitor перед запуском Processing. Два приложения не могут одновременно открыть один и тот же последовательный порт — получите ошибку Port busy.
  • Правильно укажите порт в Processing. В скетче Processing нужно прописать имя вашего порта (например, "COM3" на Windows или "/dev/cu.usbmodem..." на macOS). Список доступных портов выводится в консоль при запуске скетча.
  • Потенциометр можно заменить любым аналоговым датчиком: фоторезистором, датчиком температуры, акселерометром — главное, чтобы сигнал попадал в диапазон 0–5 В на входе A0.

Типичные ошибки

СимптомВероятная причина
График не появляетсяSerial Monitor открыт, порт занят
Хаотичные скачки на графикеПлохой контакт среднего вывода потенциометра
Ошибка ArrayIndexOutOfBoundsException в ProcessingНеверный индекс порта в Serial.list()[...]
Плоская линия внизу или вверхуПотенциометр подключён без среднего вывода

Дополнительные материалы

Больше базовых примеров вы найдёте в разделе built-in examples.

Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.

Последнее обновление: 29.07.2015, SM