Processing can directly talk with a serial port. Two sections of code are shown here. The first will be the code for processing to talk to the Arduino. The second part will be code for the Arduino to write to the serial port.
There are a few things I want to point out. First, make sure if you change the BAUD rate of one program, you change the other BAUD rate to match each other. Second, you can add more variables to send but make sure the enoughData value matches the amount of data you plan on sending. This includes the eventTriggerValue value in both programs. Lastly, an important thing to remember is that the Arduino program has a default loop rate of 30 frames per second. The Processing program on the other hand has a 60 frames per second default loop rate. For most applications you don’t have to worry about this but it’s safe to note here.
import processing.serial.*; // serial port object to access serial port Serial myPort; // int that will trigger comm with arduino int eventTriggerValue = 'A'; // value to send to arduino int testInt = 5; void setup() { // prints out available serial ports and their COM port number println(Serial.list()); // creates new port at 9600 BAUD from available port 0 myPort = new Serial(this, Serial.list()[0], 9600); } /*--------------------------------------------------------------- Draw method. Writes values to serial port ----------------------------------------------------------------*/ void draw() { writeToPort(); } /*--------------------------------------------------------------- Writes values to serial port ----------------------------------------------------------------*/ void writeToPort() { //write to serial for start reading values myPort.write(eventTriggerValue); // write a value to the port myPort.write(testInt); }
// current imcoming value from kinect int val; // set data buffer from kinect int enoughData = 2; // int that will trigger comm with kinect int eventTriggerValue = 'A'; void setup() { // start serial communication Serial.begin(9600); } void loop() { // check if enough data has been sent from the computer: if (Serial.available()>enoughData){ // read first value. begin communication val = Serial.read(); // if value is the event trigger char 'A' if(val == eventTriggerValue){ // read the most recent byte, which is the x-value val = Serial.read(); Serial.println(val); } } }