06.05.2015
controlP5.addSliderdraw a slider
arduino.analogWrite(3, Motor1);write signal in the selected pin
import processing.serial.*; import cc.arduino.*; import controlP5.*; ControlP5 controlP5; Arduino arduino; Textarea myTextarea; int Motor1 = 5; // 0-255 int Motor2 = 5; // 0-255 int Motor3 = 5; // 0-255 void setup() { size(400,400); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 57600); for (int i = 0; i <= 13; i++) arduino.pinMode(i, Arduino.OUTPUT); controlP5 = new ControlP5(this); myTextarea = controlP5.addTextarea("txt1") .setPosition(20,10) .setSize(255,30) .setFont(createFont("verdana",14)) .setLineHeight(14) .setColor(color(0)) .setColorBackground(color(204)) .setColorForeground(color(204)); ; myTextarea.setText("Scarabocchio controller" ); controlP5.addSlider("Motor1",0,255,Motor1,40,60,255,40); controlP5.addSlider("Motor2",0,255,Motor2,40,160,255,40); controlP5.addSlider("Motor3",0,255,Motor3,40,260,255,40); } void draw() { arduino.analogWrite(3, Motor1); arduino.analogWrite(6, Motor2); arduino.analogWrite(11, Motor3); }This is the PC side controller
/* * Firmata is a generic protocol for communicating with microcontrollers * from software on a host computer. It is intended to work with * any host computer software package. * * To download a host software package, please clink on the following link * to open the download page in your default browser. * * http://firmata.org/wiki/Download */ /* Supports as many analog inputs and analog PWM outputs as possible. * * This example code is in the public domain. */ #include <Firmata.h> byte analogPin = 0; void analogWriteCallback(byte pin, int value) { if (IS_PIN_PWM(pin)) { pinMode(PIN_TO_DIGITAL(pin), OUTPUT); analogWrite(PIN_TO_PWM(pin), value); } } void setup() { Firmata.setFirmwareVersion(0, 1); Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); Firmata.begin(57600); } void loop() { while (Firmata.available()) { Firmata.processInput(); } // do one analogRead per loop, so if PC is sending a lot of // analog write messages, we will only delay 1 analogRead Firmata.sendAnalog(analogPin, analogRead(analogPin)); analogPin = analogPin + 1; if (analogPin >= TOTAL_ANALOG_PINS) analogPin = 0; }Below a sample video of Scarabocchio controlled by Processing