CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Processing и Arduino

Processing
Processing является языком программирования для создания визуализаций с помощью платформы Java Virtual Machine и позволяет быстро создавать интерактивные программы отображения изображений и анимации.
Processing использовался для создания некоторых реклам, клипов, инсталляций, а также входит в учебные курсы некоторых вузов США.
официальный сайт:
http://processing.org
скачать версию IDE для Windows (версия 1.2.1 (65 Mb) )

Итак, Processing:
— простой язык программирования для создания интерактивных визуальных эффектов.
— базируется на графических возможностях языка Java и использует его упрощённый синтаксис.
— лёгкий и быстрый инструментарий для людей, которые хотят программировать изображения, анимацию и интерфейсы.
— используется студентами, художниками, дизайнерами, исследователями и любителями, для изучения, прототипирования и производства.
— создан для изучения основ компьютерного программирования в визуальном контексте.
— это открытый проект, он абсолютно бесплатен, а исходный код доступен для всех желающих.

Если скачать и запустить PDE (Processing Development Evironment), то сразу обнаружится абсолютное сходство с Arduino IDE. В это нет ничего удивительного, так как именно от IDE Processing-а была унаследована Arduino IDE.
Processing IDE

Программы Processing-а, так же называются скетчами. Однократно выполняемая часть оформляется в функции setup(), повторяемая циклически — в функции draw() (аналог ардуиновского loop()).
Меню Sketch -> Run запускает компиляцию скетча в полноценное Java-приложение и его запуск в отдельном окне.
После окончательной отладки можно нажать Export (соответствует пиктограмме Upload для ArduinoIDE) — и тогда создается html-код страницы с java-апплетом, который можно разместить на своём сайте (согласитесь — очень удобно).

Быстро ознакомиться с различиями Processing и Wiring можно здесь:
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;
* запустите скетч на выполнение.

Результатом работы скетча является окно состояния цифровых выходов ардуины:


Каждый квадратик обозначает один цифровой выход от 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;
  }
}


Как и в 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 <= 13; i++)
    arduino.pinMode(i, Arduino.OUTPUT);


Как уже упоминалось выше, Processing вместо знакомой функции loop(), для циклической работы использует функцию draw().
В данном примере, draw() выполняет перерисовку квадратиков по текущему состоянию значений выходов ардуины, которые хранятся в массиве values (массив инициализируется вверху скетча, значениями константы Arduino.LOW).

Функция mousePressed() — это обработчик событий от мыши. В ней, по координатам клика, вычисляется нужный квадрат, и инвертируется значение соответсвующей ячейки массива values, а затем вызывается метод digitalWrite(), чтобы изменить состояние выхода подключённого контроллера Arduino.

Лично для меня, единственным минусом Processing-а является программирование на Java. С/С++ для меня ближе, поэтому я смотрю в сторону OpenFrameworks

Ссылки:
http://processing.org
http://ru.wikipedia.org/wiki/Processing
Знакомство с Processing 1.0

Руководства по изучению:
http://processing.org/learning/

Различные примеры скетчей Processing-а:
http://www.openprocessing.org

Книга про Proсessing от издательства O'Relly
«Getting Started With Proсessing»

— обратите внимание, как она похожа на "Getting Started With Arduino" ;)

Прямо и хочется сказать: «Proсessing и Arduino — близнецы-братья...» :)

Полный список книг про Proсessing на сайте processing.org:
http://processing.org/learning/books/

Статья Ильи Данилова: Processing vs Arduino

Про Processing мы уже упоминали в статьях:
* Практическое программирование Arduino/Freeduino — Аналоговый ввод – осциллограф
* Платформа балансирующая шариком

Нельзя обойти вниманием факт, что для Processing-а существует библиотека для интеграции OpenCV:
http://ubaa.net/shared/processing/opencv/

По теме:
Программирование Arduino — библиотека Firmata
Практическое программирование Arduino- программирование работы с COM-портом
Arduino и Matlab
Arduino и LabVIEW
openFrameworks и Arduino
  • +1
  • 14 октября 2010, 10:34
  • noonv

Комментарии (7)

RSS свернуть / развернуть
+
+1
Machine, а не Mashine как написано у вас.

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:
ubaa.net/shared/processing/opencv/

в общем то она существует в первую очередь для java, ну в processing'е ею можно соответственно пользоваться.
Только то на что вы дали ссылку старовато: последние изменения датируются 2008-ым годом.
code.google.com/hosting/search?q=opencv+java&projectsearch=Search+projects
здесь более современные реализации.

Лично для меня, единственным минусом Processing-а является программирование на Java. С/С++ для меня ближе, поэтому я смотрю в сторону OpenFrameworks

а для меня самым главным плюсом :) Минус в ограничениях на производительность, что для мультимедийного приложения очень критично. «Привязка» OpenGl может решить проблему только частично.
В OpenFrameworks проблем с производительностью должно быть куда меньше (или вообще не быть), всё таки C/С++ изначально полностью компилируемый язык.
Зато в нём нельзя делать «скетчей» которые работают в браузере и на win и на mac (на котором сидит наверно половина адептов processing’а: ) )

По-моему следовало дать ссылку на книгу "Processing: A Programming Handbook
for Visual Designers and Artists
" от авторов разработки.
avatar

z-erocoo-l

  • 28 октября 2010, 23:53
+
0
Большое спасибо за замечания!

Зато в нём нельзя делать «скетчей» которые работают в браузере и на win и на mac (на котором сидит наверно половина адептов processing’а: ) )

это да :)
avatar

noonv

  • 29 октября 2010, 09:47
+
0
Книгу «Getting Started With Proсessing» можно скачать отсюда
gfxdaily.com/2010/08/02/getting-started-with-processing-by-casey-reas-ben-fry/
avatar

lcc7

  • 7 января 2011, 20:04
+
0
Помогите малость кто разобрался в Proсessing:

Часть кода Ардуино выводящего температуру

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
avatar

lcc7

  • 10 января 2011, 08:47
+
0
Помогите, пожалуйста, разобраться с этим примером:
При попытки выполнить указаный тут скетч для Processing`а выдает ошибку:
No library found for cc.arduino
As of release 1.0, libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder

В чем дело?
avatar

Kitam1n

  • 11 апреля 2012, 11:59
+
0
помогите, только только начал изучать

сделал все как в примере, только вместо StandardFirmata загрузил в контроллер OldStandardFirmata
так как у меня атмега8, еще там в коментах к коду написано что скорость порта 115200, а не как у обычной StandardFirmata, в processing изменил скорость на 115200 и все равно не работает.
нажимаешь по квадратикам диоды не горят
avatar

FrenkFontaine

  • 10 октября 2013, 17:27
+
0
странная штука перекомпилировал все еще раз и заработало
avatar

FrenkFontaine

  • 10 октября 2013, 17:37

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.