====== Communication série Arduino/Processing ====== Il est très facile d'envoyer une valeur avec la communication série, mais il souvent utile d'envoyer un paquet de valeurs. Par exemple envoyer les valeurs de deux ou plus capteurs. ===== Code Arduino ===== // Send serial data to Processing // Data are separated by a ",", so you could send any number of data int firstSensor = 0; // first analog sensor int secondSensor = 255; // second analog sensor void setup() { Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } } void loop() { // Update Data with linear values firstSensor += 1; secondSensor -= 1; if (secondSensor < 0) secondSensor = 255; if (firstSensor > 255) firstSensor = 0; // Send Data Serial.print(firstSensor); Serial.print(","); // séparateur // Avec println on ferme le paquet de valeur, car "ln" Serial.println(secondSensor); // Sampling rate delay(5); } ===== Code Processing ===== // Get Serial Data from an Arduino // Parse it with a separator caracter "," // import the Processing serial library import processing.serial.*; Serial myPort; // The serial port // Test values int v1 =0; int v2 = 255; int x; void setup() { size(640,480); // Open serial port //printArray(Serial.list()); myPort = new Serial(this, Serial.list()[0], 9600); // Read bytes into a buffer until you get a linefeed (ASCII 10): myPort.bufferUntil('\n'); //draw with smooth edges: //smooth(); background(255); } void draw() { // Draw circles fill(#ff0000); ellipse(x, v1, 5, 5); fill(#00ff00); ellipse(x, v2, 5, 5); // Update x position x++; // Refresh screen if (x > 600) { background(255); x = 0; } } // serialEvent method is run automatically by the Processing applet // whenever the buffer reaches the byte value set in the bufferUntil() // method in the setup(): void serialEvent(Serial myPort) { // read the serial buffer: String myString = myPort.readStringUntil('\n'); // if you got any bytes other than the linefeed: myString = trim(myString); // split the string at the commas // and convert the sections into integers: int values[] = int(split(myString, ',')); if (values.length > 0) { v1 = values[0]; v2 = values[1]; //println(v2); } }