Arduino и Processing

Сегодня познакомимся с такой штукой как Processing.

Processing — это среда программирования, созданная для легкого и быстрого создания различных визуальных элементов. Зачем она нужна в курсе Arduino? За тем, что с помощью Processing можно легко связать Arduino с компьютером и осуществлять обмен информации между ними. Кроме того, Processing позволит визуально представить данные, получаемые с Arduino.

Скачать среду программирования можно бесплатно с официального сайта processing.org. Там же вы найдете всю необходимую информацию и примеры для работы.

Запустив Processing вы увидите, что эта среда очень похожа на Arduino IDE, что неудивительно, ведь Arduino IDE создавалась на основе Processing.

processing_ide

Для начала научимся передавать данные из Arduino в Processing. В этом нам поможет уже знакомый набор Serial. Пусть Arduino отправляет сообщение Hello, Processing!, а Processing, соответственно, будет принимать это сообщение.

На Arduino будет стандартный код отправки сообщения в последовательный порт раз в секунду:

ard_ser1

Загрузите код в плату.

Теперь настало время написать прием сообщения на Processing. Сначала нужно импортировать библиотеку Serial. Для этого в верхнем меню выберите Sketch -> Import Library -> Serial.

proc_ser1

В коде появится строка

Для работы с Serial нужен объект типа Serial. Создадим его и назовем port.

Также, нам понадобится переменная для хранения принятого сообщения. Создадим строковую переменную message.

proc_ser2

Как и в Arduino, в Processing существуют стандартные функции для однократного исполнения — void setup(), и для циклического повторения — void draw() (аналог void loop() в Arduino).

proc_ser3

В setup() определим порт, по которому будут общаться Arduino и Processing.

Здесь нужно правильно указать ваш COM-порт. В диспетчере устройств (можете найти его нажав правой кнопкой мыши на Мой компьютер и выбрав Свойства) посмотрите задействованные COM-порты.

com-ports

В моем случае есть 2 COM-порта. Arduino подключена к COM4. По счету это второй из занятых портов, но в Java (как и во многих других средах) нумерация начинается с 0, т.е. COM1 — это нулевой порт, COM4 — первый. Поэтому в Serial.list() я указываю номер 1. Если у вас только один COM-порт, то вы поставите Serial.list()[0].

proc_ser4

Теперь в объект port будут передаваться сообщения. Мы же будем их считывать. Для считывания воспользуемся командой readString(). Так как считывать сообщения мы должны все время, то поместим эту часть в функцию void draw(). Принимаемое сообщение будем записывать в переменную message. Также, перед тем, как считать данные, убедимся, что в порт что-то приходило с помощью функции port.available().

В случае принятия сообщения выведем это сообщение в консоль с помощью функции println().

Код программы целиком:

Запустим написанную программу и, если все сделано правильно, увидим в нижней части Processing надпись Hello, Processing!, которая выводится каждую секунду.

proc_ser5

А теперь выведем это сообщение не в консоль, а на экран. Для начала зададим размеры рабочего экрана, например, 400х400. Делается это командой size(400, 400) в функции setup(). Также, нам нужно создать шрифт, которым будет написан текст. Объявим объект типа PFont:

В блоке setup создадим необходимый шрифт, например, Arial размером 25пт.

В блоке draw() сначала зададим цвет фона командой background(). Чтобы фон был черным напишем background(0).

Дальше укажем, что текст должен выводиться шрифтом f, который мы подготовили заранее, командой textFont(f).

После этого останется вывести текст на экран командой text(message, 10, 50), где message — принятое сообщение, а 10 и 50 — координаты вывода текста.

proc_ser6

Код программы:

Если все сделано верно, при запуске у вас появится такое окно:

proc_ser7

У нас получилось передать данные из Arduino в Processing и вывести их на экран. В следующий раз обработаем данные, полученные с датчиков с помощью Arduino.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *