Arduino y Processing

Estoy intentando conectar mi Arduino con Processing. En principio lo que quiero es algo sencillo: mandar datos con Arduino y leerlos con Processing. Estos son los programas:

Arduino:

int ldrPin = 3;
int valor = 0; 

void setup() {

  Serial.begin(9600);

}

void loop() {

  valor = analogRead(ldrPin);
  Serial.println(valor);   
  delay(75);
}

Processing:

import processing.serial.*;
String portname = "/dev/ttyUSB0";  // Puerto de mi máquina
Serial port;  // Objeto port de la clase Serial
int valorUSB;

void setup() {
  // Abre el puerto al que está Arduino
  port = new Serial(this, portname, 9600);
}
void draw() {
  
  if (port.available() > 0) {  // Si el dato está disponible,
       valorUSB = port.read();      // lee y almacena el valor del puerto
  }
  println(valorUSB);
}

El programa Arduino funciona bien, sin embargo el de Processing simre me muestra continuamente el valor 0. ¿Qué estoy haciendo mal?

Buenas tardes...

Mira yo tengo este codigo (que funciona) con el puedes enviar varios datos desde la placa y recibirlos en processing (solo valores numericos)

espero que te sirva de algo... ;-)

//================================================
// 090305
//
// Recibe datos por puerto Serie (USB), los separa
// y visualiza cada uno en su correspondiente sitio.
//
// Los datos son recibidos en el siguiente formato
// "A2510B1610A2610B1610A2610B1510...."
//
// Separador utilizado byte(10) "Salto de li­nea"
//
// ================================================


import processing.serial.*;

Serial myPort; 
int Dato_A = 0;  
int Dato_B = 0;  
int Nueva_Linea = 10;     // Separador entre Datos "byte(10)"
String Datos = "";
String Cabecera = "";

void setup() {
  size(400, 250);
  PFont myFont = createFont(PFont.list()[2], 20);
  textFont(myFont);

  println(Serial.list());

  String portName = Serial.list()[1];
  myPort = new Serial(this, portName, 9600);
}

void draw() {
  background(0);
  text("Dato A: " + Dato_A, 10, 90);
  text("Dato B: " + Dato_B, 10, 120);

  while (myPort.available() > 0) {
    serialEvent(myPort.read());
  }
}

void serialEvent(int Puerto) {
  if(Puerto != Nueva_Linea) {
      Datos += char(Puerto);
  }
  else {
    Cabecera = str(Datos.charAt(0));
    if (Cabecera.equals("A") == true) {
      Dato_A = int((Datos.substring(1, Datos.length())));
    }
    else if (Cabecera.equals("B") == true) {
      Dato_B = int((Datos.substring(1, Datos.length())));
    }
  Datos = "";
  }
}

Como veras le tienes que enviar los datos de la siguiente forma "A"+"Dato"+10....."B"+"Dato"+10....

por cierto los datos no tienen porque tener siempre el mismo orden... vamos puedes enviar cinco veces el dato "A" una el "B" tres el "A" y cinco el "B" (creo que lo he liado un poco.. jejejej)

Bueno, lo dicho, espero te sirva de algo...

Un Saludo

Cosas de la informática. Resulta que hoy el programa funciona correctamente. iuuuuuuujuuuuuuuuuuuu!!