Processing является языком программирования для создания визуализаций с помощью платформы Java Virtual Machine и позволяет быстро создавать интерактивные программы отображения изображений и анимации.
Processing использовался для создания некоторых реклам, клипов, инсталляций, а также входит в учебные курсы некоторых вузов США.
официальный сайт:
http://processing.org
скачать версию IDE для Windows (версия 1.2.1 (65 Mb) )
Итак, Processing:
— простой язык программирования для создания интерактивных визуальных эффектов.
— базируется на графических возможностях языка Java и использует его упрощённый синтаксис.
— лёгкий и быстрый инструментарий для людей, которые хотят программировать изображения, анимацию и интерфейсы.
— используется студентами, художниками, дизайнерами, исследователями и любителями, для изучения, прототипирования и производства.
— создан для изучения основ компьютерного программирования в визуальном контексте.
Processing урок 1. Основы
— это открытый проект, он абсолютно бесплатен, а исходный код доступен для всех желающих.
Если скачать и запустить PDE (Processing Development Evironment), то сразу обнаружится абсолютное сходство с Arduino IDE. В это нет ничего удивительного, так как именно от IDE Processing-а была унаследована Arduino IDE.
Программы Processing-а, так же называются скетчами. Однократно выполняемая часть оформляется в функции setup(), повторяемая циклически — в функции draw() (аналог ардуиновского loop()).
Меню Sketch -> Run запускает компиляцию скетча в полноценное Java-приложение и его запуск в отдельном окне.
После окончательной отладки можно нажать Export (соответствует пиктограмме Upload для ArduinoIDE) — и тогда создается html-код страницы с java-апплетом, который можно разместить на своём сайте (согласитесь — очень удобно).
Быстро ознакомиться с различиями Processing и Wiring можно здесь:
http://www.arduino.cc/en/Reference/Comparison
Фактически, всё сводится к отличиям C++ от Java.
А теперь самое интересное:
из Processing-а можно общаться с Arduino, при помощи протокола Firmata!
Замечательная возможность! Используя Arduino/CraftDuino, как шлюз во внешний мир, ваш Processing-й скетч может стать по-настоящему интерактивным!
Что для этого потребуется:
* потребуется скачать библиотеку для Processing-а и распаковать её в папку libraries/arduino в каталоге для скетчей Processing (при необходимости, каталоги нужно создать);
* запустите Arduino IDE, откройте скетч из Examples -> Firmata -> StandardFirmata, откомпилируйте и загрузите его в свой контроллер Arduino/CraftDuino;
* запустите Processing, откройте пример из папки libraries/arduino/examples/arduio_output через меню File -> Open;
* запустите скетч на выполнение.
Большой урок по программированию на Processing
Результатом работы скетча является окно состояния цифровых выходов ардуины:
Каждый квадратик обозначает один цифровой выход от 13 до 0. Щелкая по нему, мы переключаем состояние межу HIGH и LOW.
Как помним, на плате Arduino/CraftDuino уже есть сигнальный светодиод L, подключённый к 13 порту — так что для того чтобы посмотреть работу данного примера дополнительные светодиоды необязательны.
Вот как это выглядит внутри скетча Processing:
import processing.serial.*; import cc.arduino.*; Arduino arduino; color off = color(4, 79, 111); color on = color(84, 145, 158); int[] values = < Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW >; void setup() < size(470, 200); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 57600); for (int i = 0; i void draw() < background(off); stroke(on); for (int i = 0; i > void mousePressed() < int pin = (450 — mouseX) / 30; if (values[pin] == Arduino.LOW) < arduino.digitalWrite(pin, Arduino.HIGH); values[pin] = Arduino.HIGH; >else < arduino.digitalWrite(pin, Arduino.LOW); values[pin] = Arduino.LOW; >>
Как и в Wiring-е, сначала выполняется функция setup(), в которой создаётся объект Arduino:
arduino = new Arduino(this, Arduino.list()[0], 57600);
Первым аргументом в списке параметров конструктора идет this.
Вторым аргументом указывается порт, к которому подключен Arduino. Для его получения существует функция Arduino.list() — статическая (можно использовать без привязки к экземпляру объекта), возвращающая список портов. В данном примере, скетч будет подключаться к первому порту из этого списка (номер 0).
Последний — третий аргумент — скорость порта; скорость должна совпадать со скоростью установленной в скетче StandardFirmata, которая составляет 57600.
Далее, объект Arduino позволяет вызывать знакомые по Wiring-у методы.
Пример — перевод всех цифровых пинов в режим вывода:
for (int i = 0; i
Как уже упоминалось выше, Processing вместо знакомой функции loop(), для циклической работы использует функцию draw().
В данном примере, draw() выполняет перерисовку квадратиков по текущему состоянию значений выходов ардуины, которые хранятся в массиве values (массив инициализируется вверху скетча, значениями константы Arduino.LOW).
Функция mousePressed() — это обработчик событий от мыши. В ней, по координатам клика, вычисляется нужный квадрат, и инвертируется значение соответсвующей ячейки массива values, а затем вызывается метод digitalWrite(), чтобы изменить состояние выхода подключённого контроллера Arduino.
Лично для меня, единственным минусом Processing-а является программирование на Java. С/С++ для меня ближе, поэтому я смотрю в сторону OpenFrameworks
Книга про Proсessing от издательства O’Relly
«Getting Started With Proсessing»
— обратите внимание, как она похожа на «Getting Started With Arduino»
Прямо и хочется сказать: «Proсessing и Arduino — близнецы-братья. »
Источник: robocraft.ru
Processing
void draw() background(0);
smooth();
fill(255);
noStroke();
ellipse(sw/2, sh/2, sw/4, sw/4);
noFill();
stroke(255,0,0);
strokeWeight(2);
ellipse(touchX, touchY, sw/4, sw/4);
>
void mouseDragged() touchX = mouseX;
touchY = mouseY;
>
В этом примере обратите внимание на следующее:
size(screenWidth, screenHeight, A2D);
(Внимание: не помещайте переменные в параметры функции size().)
При инициализации экрана Processing для Android можно использовать константы с именами A2D (для 2D графики) или A3D (для 3D). (Я использую Android-имена, но другие имена также будут работать.)
Так как размеры пикселя не меняются для различных размеров экранов, то вместо “screenWidth” и “screenHeight” вы можете получить размеры устройства, на котором выполняется программа. (Например, используйте переменные “sw” и “sh”, так как у них короткие имена, и их можно будет использовать в дальнейшем.)
void mouseDragged() touchX = mouseX;
touchY = mouseY;
>
Вот это самая интересная часть — реакция на прикосновение работает точно также как и в десктопной версии Processing для соответсвующих команд мыши (не включающих работу с кнопками). mousePressed, mouseDragged, mouseX и mouseY работают так, как и ожидалось, пока вам нужно обрабатывать только одиночные прикосновения и не требуется реакция на жесты, «мультитач» и т.д. Не обращайте внимания, что touchX и touchY в примере являются переменными — это сделано для того, чтобы продемонстрировать, что окружность будет перемещаться, когда вы будете тащить её мышкой или когда ваши пальцы будут скользить по экрану. Здесь были рассмотрены основы написания приложения, занимающегося отрисовкой, более интересные примеры будут приведены в следующих руководствах.
Здесь есть одна очень важная вещь: изменяя всего лишь screenWidth и screenHeight, и выполняя рендер, можно один и тот же код запустить как в десктопном Processing, так и в Processing.js в браузере.
О настройке Processing в следующих статьях
В дальнейшем будет представлена важная информация, которую вы не найдёте в официальной документации[http://wiki.processing.org/w/Android], так что прочитайте, пожалуйста.
В следующих статьях будет описано:
- Как заставить код Processing для Android работать из Eclipse. Как легко добавить код Processing к существующим Android-приложениям. (Надеюсь, что в дальнейшем будем использовать gedit и Ant)
- Больше трюков по работе с размером экрана и прикосновениями.
- Android-сниппеты для подключения сенсоров.
- Как можно объединить звук и видеоряд с помощью Pd и Processing, запуская всё на Pd.
Возможно, будут сделаны следующие вещи для Processing под Android (которые также будут освещены в следующих статьях):
- Установка или использование уже установленных шрифтов
- Визуализация данных (только для десктопной версии)
- Реакция на прикосновения, относительные перемещения и обработка событий клавиатуры
- Реакция на ориентацию устройства
- Добавление требований безопасности в манифест (для таких вещей, как сенсоры) прямо из PDE – без необходимости редактировать файл или открывать Eclipse
Также, возможно, несколько заметок по этим темам будет сделано на конференции Android Only.
Processing дял Android сейчас ещё находится в стадии разработки, доступен только пре-релиз. Так что будьте готовы столкнуться с неописанными проблемами.
Здесь представлена презентация «Processing for Android: Getting Started» для конференции в Стокгольме [http://www.slideshare.net/peterkirn/processing-for-android-getting-started]
Также посмотрите презентации от peterkirn [http://www.slideshare.net/peterkirn].
Делитесь тем, что делаете …
Источник: www.malbred.com