Go Down

Topic: processing y arduino no se comunican SOLUCIONADO (Read 1 time) previous topic - next topic

Lisergio

Aug 09, 2012, 04:46 pm Last Edit: Aug 13, 2012, 11:06 am by Lisergio Reason: 1
Buenas a todos, me gustaría saber si a alguien le esta pasando esto...

Estoy actualizando un proyecto que tenía apartado, de encender unas luces de casa con el iphone usando touchosc y processing, todo funcionaba perfecto, pero ahora ha dejado de funcionar.

Desde que lo programe en su dia , se han actualizado todos los programas, processing , arduino y OSX mountain lion...

he probado y la comunicación del iphone a processing funciona bien y recibe los toques de los botones, pero processing no envia datos por el puerto serie a arduino...

Estoy un moco mosca, ya que este código me funcionaba bien...
Ahora estoy con processing 1.5.1 arduino 1.0.1 y OSX mountain lion y estoy probando con una placa arduino uno y una mega con el mismo resultado...

pongo el ejemplo de lo que tengo puesto...

ARDUINO:

int message = 0;
int salida = 13;

void setup()
{
 Serial.begin(9600);
 pinMode (salida,OUTPUT);
}

void loop()

{
 
 if (Serial.available() > 0)
 {
   message = Serial.read();
    if (message == '1')
      {  
        digitalWrite (salida,HIGH);
      }
        else
     {    
        digitalWrite (salida,LOW);
     }
   
 }
 
}

PROCESSING:

import oscP5.*;
import netP5.*;
import processing.serial.*;  
OscP5 oscP5;
Serial arduinoPort;


float dato;
int led;


void setup()
{
 oscP5 = new OscP5(this,8000);
 arduinoPort = new Serial(this, Serial.list()[0], 9600);  
}

void oscEvent(OscMessage theOscMessage)
{
  String addr = theOscMessage.addrPattern();
  float  val  = theOscMessage.get(0).floatValue();
 
if(addr.equals("/1/push1"))        
{
  led = int (val);
  if (led==1)
   {
     arduinoPort.write("1");
     println("Enviamos 1 a Arduino");
   }
 }
 
 
}
void draw()
{

}

Lisergio

El problema esta solucionado,


En la linea de código donde inicializamos el puerto serie, hay que decirle cual es el puerto que queremos usar...

arduinoPort = new Serial(this, Serial.list()[0], 9600); (el
  • , indica el puerto que tenemos configurado para programar la placa arduino)

    Para saber cual tenemos , podemos desplegar en arduino la lista de puertos serie ... Herramientas - Puertos Serial

  • - /dev/tty.Bluetooth-PDA-Sync
    [1] - /dev/cu.Bluetooth-PDA-Sync
    [2] - /dev/tty.Bluetooth-Modem
    [3] - /dev/cu.Bluetooth-Modem
    [4] - /dev/tty.linvor-DevB
    [5] - /dev/cu.linvor-DevB

    En mi caso , estoy usando una tarjeta bluetooth conectada a los pines RX y TX de la placa arduino mega para la comunicacion con el Mac, asi que la opción 4 es la que voy a configurar en processing
    ...
    Con lo que la linea de código para inicializar el puerto serie quedaría así...

    arduinoPort = new Serial(this, Serial.list()[4], 9600);

    La cuestión del problema es que en su día funcionó, porque de casualidad me coincidió el puerto, no por que lo configurase a sabiendas.

    queda claro que sin enredar no se aprende nada.

    un saludo a todos y espero haber ayudado.

Go Up