Построение графика в Processing по данным с Arduino
Отправляем данные с аналогового входа Arduino на компьютер и строим по ним живой график в Processing или Max/MSP.
В этом уроке мы разберём, как отправить данные с Arduino на компьютер и отобразить их в виде графика. Связь между платой и ПК называется последовательной (serial), потому что и плата, и компьютер видят соединение как серийный порт — даже если физически используется USB-кабель, переходник serial→USB и USB→serial.
Просмотреть поток данных можно прямо в Serial Monitor среды Arduino IDE, а построить график — с помощью Processing (код ниже), Flash, PD, Max/MSP и других инструментов.
Необходимое железо
- Аналоговый датчик (потенциометр, фоторезистор, датчик давления FSR и т. д.)
Необходимое программное обеспечение
- Processing или
Схема подключения
Подключите потенциометр или другой аналоговый датчик к аналоговому входу 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