Arduino e Processing ... non va !

stavo testando i programmi di esempio di processing per comunicare con Arduino

in particolare, ho caricato l'esempio di Processing : Simple Write

se ho capito bene, dovrebbe accedermi un led se passo sopra all'immagine quadrata che mi crea a video

ho caricato il programma in Arduino e avviato quello di Processing ... ma nulla da fare !

l'esempio dice : // I know that the first port in the serial list on my mac * // is always my FTDI adaptor, so I open Serial.list()[0].* * // On Windows machines, this generally opens COM1.* * // Open whatever port is the one you're using.* * String portName = Serial.list()[0];*

e a video compare :

Stable Library ========================================= Native lib Version = RXTX-2.1-7 Java lib Version = RXTX-2.1-7 [0] "COM1" [1] "COM3"

ma devo settare diversamente la seriale visto che ho Windows ?

sono un po' in confusione ... forse sto partendo troppo forte ! ::)

ciao e grazie

Inserisco i due listati :

Processing :

/**
 * Simple Write. 
 * 
 * Check if the mouse is over a rectangle and writes the status to the serial port. 
 * This example works with the Wiring / Arduino program that follows below.
 */


import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val;        // Data received from the serial port

void setup() 
{
  println(Serial.list());
  size(200, 200);
  // I know that the first port in the serial list on my mac
  // is always my  FTDI adaptor, so I open Serial.list()[0].
  // On Windows machines, this generally opens COM1.
  // Open whatever port is the one you're using.
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);
}

void draw() {
  background(255);
  if (mouseOverRect() == true) {  // If mouse is over square,
    fill(204);                    // change color and
    myPort.write('H');              // send an H to indicate mouse is over square
  } 
  else {                        // If mouse is not over square,
    fill(0);                      // change color and
    myPort.write('L');              // send an L otherwise
  }
  rect(50, 50, 100, 100);         // Draw a square
}

boolean mouseOverRect() { // Test if mouse is over square
  return ((mouseX >= 50) && (mouseX <= 150) && (mouseY >= 50) && (mouseY <= 150));
}

E Arduino :

  // Wiring/Arduino code:
 // Read data from the serial and turn ON or OFF a light depending on the value
 
 char val; // Data received from the serial port
 int ledPin = 4; // Set the pin to digital I/O 4
 
 void setup() {
 pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
 Serial.begin(9600); // Start serial communication at 9600 bps
 }
 
 void loop() {
 if (Serial.available()) { // If data is available to read,
 val = Serial.read(); // read it and store it in val
 }
 if (val == 'H') { // If H was received
 digitalWrite(ledPin, HIGH); // turn the LED on
 } else {
 digitalWrite(ledPin, LOW); // Otherwise turn it OFF
 }
 delay(100); // Wait 100 milliseconds for next reading
 }

Controlla la porta in uso nell'ide arduino, tools -> Serial Port e scrivi la stessa cosa direttamente nel codice in Processing, tra doppi apici. Ad esempio io ho settato (sul mac):

String portname = "/dev/tty.usbserial-A6006jY0";

sul PC potrebbe essere qualcosa come:

String portname = "COM2";

Grazie ! giusto ieri ho risolto mettendo

String portName = Serial.list()[1];

dopo il tuo mex ho provato con COM3 e funziona anche così ;)

ciao !