Processing является языком программирования для создания визуализаций с помощью платформы Java Virtual Machine и позволяет быстро создавать интерактивные программы отображения изображений и анимации.
Processing использовался для создания некоторых реклам, клипов, инсталляций, а также входит в учебные курсы некоторых вузов США.
официальный сайт:
версию IDE для Windows (версия (65 Mb) )
Итак, Processing:
— простой язык программирования для создания интерактивных визуальных эффектов.
— базируется на графических возможностях языка и использует его упрощённый синтаксис.
— лёгкий и быстрый инструментарий для людей, которые хотят программировать изображения, анимацию и интерфейсы.
— используется студентами, художниками, дизайнерами, исследователями и любителями, для изучения, прототипирования и производства.
— создан для изучения основ компьютерного программирования в визуальном контексте.
— это открытый проект, он абсолютно бесплатен, а исходный код доступен для всех желающих.
Если скачать и запустить PDE (Processing Development Evironment), то сразу обнаружится абсолютное сходство с Arduino IDE. В это нет ничего удивительного, так как именно от IDE Processing-а была унаследована .
Программы Processing-а, так же называются скетчами. Однократно выполняемая часть оформляется в функции setup(), повторяемая циклически — в функции draw() (аналог ).
Меню Sketch -> Run запускает компиляцию скетча в полноценное Java-приложение и его запуск в отдельном окне.
После окончательной отладки можно нажать Export (соответствует пиктограмме Upload для ArduinoIDE) — и тогда создается html-код страницы с java-апплетом, который можно разместить на своём сайте (согласитесь — очень удобно).
Быстро ознакомиться с различиями Processing и можно здесь:
Фактически, всё сводится к отличиям C++ от Java.
А теперь самое интересное:
из Processing-а можно общаться с , при помощи протокола !
Замечательная возможность! Используя Arduino/, как шлюз во внешний мир, ваш Processing-й скетч может стать по-настоящему интерактивным!
Что для этого потребуется:
* потребуется скачать для Processing-а и распаковать её в папку libraries/arduino в каталоге для скетчей Processing (при необходимости, каталоги нужно создать);
* запустите Arduino IDE, откройте скетч из Examples -> Firmata -> StandardFirmata, откомпилируйте и загрузите его в свой контроллер Arduino/CraftDuino;
* запустите Processing, откройте пример из папки libraries/arduino/examples/arduio_output через меню File -> Open;
* запустите скетч на выполнение.
Результатом работы скетча является окно состояния цифровых выходов ардуины:
Каждый квадратик обозначает один цифровой выход от 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 <= 13; i++)
arduino.pinMode(i, Arduino.OUTPUT);
}
void draw() {
background(off);
stroke(on);
for (int i = 0; i <= 13; i++) {
if (values[i] == Arduino.HIGH)
fill(on);
else
fill(off);
rect(420 - i * 30, 30, 20, 20);
}
}
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;
}
}
Как и в -е, сначала выполняется функция setup(), в которой создаётся объект Arduino:
arduino = new Arduino(this, Arduino.list()[0], 57600);
Первым аргументом в списке параметров конструктора идет this.
Вторым аргументом указывается порт, к которому подключен Arduino. Для его получения существует функция Arduino.list() — статическая (можно использовать без привязки к экземпляру объекта), возвращающая список портов. В данном примере, скетч будет подключаться к первому порту из этого списка (номер 0).
Последний — третий аргумент — скорость порта; скорость должна совпадать со скоростью установленной в скетче StandardFirmata, которая составляет 57600.
Далее, объект Arduino позволяет вызывать знакомые по Wiring-у методы.
Пример — перевод всех цифровых пинов в режим вывода:
for (int i = 0; i <= 13; i++)
arduino.pinMode(i, Arduino.OUTPUT);
Как уже упоминалось выше, Processing вместо знакомой функции loop(), для циклической работы использует функцию draw().
В данном примере, draw() выполняет перерисовку квадратиков по текущему состоянию значений выходов ардуины, которые хранятся в массиве values (массив инициализируется вверху скетча, значениями константы Arduino.LOW).
Функция mousePressed() — это обработчик событий от мыши. В ней, по координатам клика, вычисляется нужный квадрат, и инвертируется значение соответсвующей ячейки массива values, а затем вызывается метод digitalWrite(), чтобы изменить состояние выхода подключённого контроллера Arduino.
Лично для меня, единственным минусом Processing-а является программирование на Java. С/С++ для меня ближе, поэтому я смотрю в сторону
Ссылки:
Руководства по изучению:
Различные примеры скетчей Processing-а:
Книга про Proсessing от издательства O'Relly
— обратите внимание, как она похожа на "" ;)
Прямо и хочется сказать: «Proсessing и Arduino — близнецы-братья...» :)
Полный список книг про Proсessing на сайте processing.org:
Статья Ильи Данилова:
Про Processing мы уже упоминали в статьях:
*
*
Нельзя обойти вниманием факт, что для Processing-а существует библиотека для интеграции :
базируется на графических возможностях языка Java и использует его упрощённый синтаксис.
частично. В основном вся реальная работа авторов заключалась в написании своих реализаций алгоритмов 2d — 3d растеризации. Можно так же для растеризации использовать opengl (ну и java2D по умолчанию)
Из найденных мною упрощений синтаксиса всего одно — синтаксический сахар в виде автоматического добавления «f» к каждой вещественной константе, потому что в java «3.2» автоматически считается типом double
Всё остальное — дополнительные классы и методы, некоторые из них являются переименованными библиотечными java.
Если скачать и запустить PDE (Processing Development Evironment), то сразу обнаружится абсолютное сходство с Arduino IDE. В это нет ничего удивительного, так как именно от IDE Processing-а была унаследована Arduino IDE.
лучше бы они ерунды не делали, а почитали документацию eclipse или netbeans. В случаи использования последнего было бы совсем не трудно сделать полноценную IDE (ну может были бы сложности только из-за их переделки в виде «float по умолчанию для вещественных констант»)
Всё что представляет собой PDE это текстовый редактор с разукрашенным синтаксисом. Я им не пользуюсь.
Программы Processing-а, так же называются скетчами.
но по сути являются java аплетами.
arduino = new Arduino(this, Arduino.list()[0], 57600);
этот «this» в конструкторе пример дырявой абстракции в api, this нужен 1 раз для вызова метода registerDispose который имеет пустое тело ;-) ( это я в исходниках данной библиотеки и processing’а посмотрел)
Нельзя обойти вниманием факт, что для Processing-а существует библиотека для интеграции OpenCV:
в общем то она существует в первую очередь для java, ну в processing'е ею можно соответственно пользоваться.
Только то на что вы дали ссылку старовато: последние изменения датируются 2008-ым годом.
здесь более современные реализации.
Лично для меня, единственным минусом Processing-а является программирование на Java. С/С++ для меня ближе, поэтому я смотрю в сторону OpenFrameworks
а для меня самым главным плюсом :) Минус в ограничениях на производительность, что для мультимедийного приложения очень критично. «Привязка» OpenGl может решить проблему только частично.
В OpenFrameworks проблем с производительностью должно быть куда меньше (или вообще не быть), всё таки C/С++ изначально полностью компилируемый язык.
Зато в нём нельзя делать «скетчей» которые работают в браузере и на win и на mac (на котором сидит наверно половина адептов processing’а: ) )
По-моему следовало дать ссылку на книгу "Processing: A Programming Handbook
for Visual Designers and Artists" от авторов разработки.
lcd.begin(16, 2);
lcd.print(«Temp. OUT: „);
lcd.print(Whole);
lcd.setCursor(0, 1);
lcd.print(“Temp. IN: „);
Serial.print(Whole); вывожу температуру в ком порт
На дисплее все нормально (-14) и в com порте Ардуино IDE (-14)
Код Proсessing:
import processing.serial.*;
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
PFont f;
void setup() {
size(200,200);
String portName = Serial.list()[2]; здесь я подбирал номер ком порта
myPort = new Serial(this, portName, 9600);
// Step 3: Load Font
f = loadFont( “ArialMT-16.vlw» );
}
void draw() {
if ( myPort.available() > 0) { // If data is available,
val = myPort.read(); // read it and store it in val
}
background(255);
textFont(f,16); // Step 4: Specify font to be used
fill(0); // Step 5: Specify font color
// Step 6: Display Text
text ( val ,10,100);
delay(10000);
}
Высвечивается белибирда, менял com порт, ничего не выходит
на одном не те цифры, на другом 0, на других ошибка Proсessing IDE
Комментарии (5)
RSS свернуть / развернутьникакой он не скриптовый.
частично. В основном вся реальная работа авторов заключалась в написании своих реализаций алгоритмов 2d — 3d растеризации. Можно так же для растеризации использовать opengl (ну и java2D по умолчанию)
Из найденных мною упрощений синтаксиса всего одно — синтаксический сахар в виде автоматического добавления «f» к каждой вещественной константе, потому что в java «3.2» автоматически считается типом double
Всё остальное — дополнительные классы и методы, некоторые из них являются переименованными библиотечными java.
лучше бы они ерунды не делали, а почитали документацию eclipse или netbeans. В случаи использования последнего было бы совсем не трудно сделать полноценную IDE (ну может были бы сложности только из-за их переделки в виде «float по умолчанию для вещественных констант»)
Всё что представляет собой PDE это текстовый редактор с разукрашенным синтаксисом. Я им не пользуюсь.
но по сути являются java аплетами.
этот «this» в конструкторе пример дырявой абстракции в api, this нужен 1 раз для вызова метода registerDispose который имеет пустое тело ;-) ( это я в исходниках данной библиотеки и processing’а посмотрел)
в общем то она существует в первую очередь для java, ну в processing'е ею можно соответственно пользоваться.
Только то на что вы дали ссылку старовато: последние изменения датируются 2008-ым годом.
здесь более современные реализации.
а для меня самым главным плюсом :) Минус в ограничениях на производительность, что для мультимедийного приложения очень критично. «Привязка» OpenGl может решить проблему только частично.
В OpenFrameworks проблем с производительностью должно быть куда меньше (или вообще не быть), всё таки C/С++ изначально полностью компилируемый язык.
Зато в нём нельзя делать «скетчей» которые работают в браузере и на win и на mac (на котором сидит наверно половина адептов processing’а: ) )
По-моему следовало дать ссылку на книгу "Processing: A Programming Handbook
for Visual Designers and Artists" от авторов разработки.
z-erocoo-l
это да :)
noonv
gfxdaily.com/2010/08/02/getting-started-with-processing-by-casey-reas-ben-fry/
lcc7
Часть кода Ардуино выводящего температуру
lcd.begin(16, 2);
lcd.print(«Temp. OUT: „);
lcd.print(Whole);
lcd.setCursor(0, 1);
lcd.print(“Temp. IN: „);
Serial.print(Whole); вывожу температуру в ком порт
На дисплее все нормально (-14) и в com порте Ардуино IDE (-14)
Код Proсessing:
import processing.serial.*;
Serial myPort; // Create object from Serial class
int val; // Data received from the serial port
PFont f;
void setup() {
size(200,200);
String portName = Serial.list()[2]; здесь я подбирал номер ком порта
myPort = new Serial(this, portName, 9600);
// Step 3: Load Font
f = loadFont( “ArialMT-16.vlw» );
}
void draw() {
if ( myPort.available() > 0) { // If data is available,
val = myPort.read(); // read it and store it in val
}
background(255);
textFont(f,16); // Step 4: Specify font to be used
fill(0); // Step 5: Specify font color
// Step 6: Display Text
text ( val ,10,100);
delay(10000);
}
Высвечивается белибирда, менял com порт, ничего не выходит
на одном не те цифры, на другом 0, на других ошибка Proсessing IDE
lcc7
При попытки выполнить указаный тут скетч для Processing`а выдает ошибку:
В чем дело?
Kitam1n
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.