Problems with Arduino communication and Processing

Hola, estoy comenzando con Processing y tengo algunos problemas para comunicarme con el puerto serie del Arduino. El proyecto consiste en la comunicación de dos Arduinos mediante la cual se manda una matriz de 3 datos. En Arduino con el puerto serie puedo ver que los arduinos se comunican bien y recibo la matriz perfectamente. Cuando quiero usarlo en Processing, no puedo ya que el documento se me crea en blanco.

Hello, I am starting with Processing and I have some problems communicating with the Arduino’s serial port.

The project consists of the communication of two Arduinos through which an array of 3 data is sent. In Arduino with the serial port I can see that the arduinos communicate well and I receive the matrix perfectly. When I want to use it in Processing, I can’t because the document is created blank.

Processing code:

import org.firmata.*;
import processing.serial.*; //Importamos la librería Serial

Serial port; //Nombre del puerto serie

PrintWriter output;  //Para crear el archivo de texto donde guardar los datos

int xlogo=450;//Posición X de la imagen
int ylogo=100;//Posición Y de la imagen

int xcama1= 200; // Posición X de la cama 1 
int ycama= 300; // Posicion Y de las camas 
int xcama2= 700; // Posición X de la cama 2 


int valor_cama;//Valor de la temperatura
int temperatura; 

boolean boton = true; 

int radio=350; //Radio del quadrado
int xcuadrado=450;  //Posición X de rect
int ycuadrado=450;  //Posición Y de rect

int[] datos = new int[3];


void setup()
{
println(Serial.list()); //Visualiza los puertos serie disponibles en la consola de abajo
port = new Serial(this, Serial.list()[0], 9600); //Abre el puerto serie COM3
 
output = createWriter("temeratura_datos.txt"); //Creamos el archivo de texto, que es guardado en la carpeta del programa
 
size(900, 600); //Creamos una ventana de 900 píxeles de anchura por 600 píxeles de altura

}

void draw()
{ 
if (boton){
  background(255);
  
  //Ponemos la imagen de las camas 
  PImage imagen_cama=loadImage("cama.jpg");
  image(imagen_cama,xcama1,ycama, 200, 100); //Cama 1
  image(imagen_cama,xcama2,ycama, 200, 100); //Cama 2
  
  //Creamos un texto de color negro con la palabra Cama
  fill(0,0,0);
  PFont f = loadFont("Calibri-48.vlw");//Tipo de fuente
  textFont(f, 20);
  text("Cama 1", 120, 405);
  text("Cama 2", 670, 405);
  
  //Visualizamos la temperatura con un texto
  text("Temperatura =",50,455);
  text("Temperatura =",600,455);
  
  text("ºC",205,455);
  text("ºC",755,455);
  
  //Dibujamos un a esfera para colorear la temperatura 
  noStroke();
  fill(0,0,255); // Color azul (r,g,b) 
  ellipseMode(CENTER);
  ellipse(250,400,20,20); //Temperatura Cama 1
  ellipse(800,400,20,20); //Temperatura Cama 2
 
  //Dibujamos un cuadrado para colorear si la cama está libre o no
  fill(0,0,255); // Color azul (r,g,b)
  rectMode(RADIUS); //Esta función hace que Width y Height de rect sea el radio (distancia desde el centro hasta un costado).
  rect(250,450,10,10); // Cama 1
  rect(800,450,10,10); // Cama 2
  
  // Ponemos el valor obtenido de la temperatura 
 //fill(0);
  //text(datos[1], 180, 455);

if (datos[2] == 1)
{
   // Ponemos el valor obtenido de la temperatura 
  fill(0);
  text(datos[1], 180, 455);
}
else if (datos[2]== 2)
{
  fill(0);
  text(datos[1], 780, 455);
}
  
}else {
  
  background(255); 
  
  //Creamos un cuadrado blanco para pintar sobre el 
  fill(255); // Color rojo (r,g,b)
  rectMode(RADIUS); //Esta función hace que Width y Height de rect sea el radio (distancia desde el centro hasta un costado).
  rect(xcuadrado,ycuadrado,radio,radio);
}

//Ponemos la imagen de nuestro logo
imageMode(CENTER);//Esta función hace que las coordenadas de la imagne sean el centro de esta y no la esquina izquierda arriba
PImage imagen=loadImage("logo.png");
image(imagen,xlogo,ylogo,250,150);

//Ponemos la imagen de las graficas
PImage graf=loadImage("grafico.png");
image(graf,xcama1,500, 40, 30); //Cama 1
image(graf,xcama2,500, 40, 30); //Cama 2


//Recibir datos temperatura del Arduino 
if(port.available() > 0) // si hay algún dato disponible en el puerto
{
  int mensaje = 0;
  mensaje = datos[0];

  for (int i = 1; i < datos.length; i++)
  {
    datos[i]=port.read(); //Lee el dato y lo almacena en la variable "datos"
  }
}



  
//Escribimos los datos de la temperatura con el tiempo (h/m/s) en el archivo de texto
output.print(datos[1] + " ºC     ");
output.print(hour( )+":");
output.print(minute( )+":");
output.println(second( ));
output.println("Cama: " + datos[2]); 
output.println("");
    
//Esfera color visualización temperatura
//float temp = map (temperatura, 15,42, 0, 255);//Escalamos la temperatura donde maximo sea 42ºC y mínimo 15ºC

}

void mousePressed()  //Cuando clicamos con el ratón
{  
    if(mouseX > xcama1-40 && mouseX < xcama1+30 && mouseY > 500-40 && mouseY < 500+30)
     { 
       if (boton) {
         boton=false;
       } else {
         boton=true; 
       }
     }
     else if (mouseX > xcama2-40 && mouseX < xcama2+30 && mouseY > 500-40 && mouseY < 500+30)
     {   
        if (boton) {
         boton=false;
       } else {
         boton=true; 
       }
     }  
}

void keyPressed() //Cuando se pulsa una tecla
{
//Pulsar la tecla E para salir del programa
if(key=='e' || key=='E')
{
  output.flush(); // Escribe los datos restantes en el archivo
  output.close(); // Final del archivo
  exit();//Salimos del programa
}
} ````Texto preformateado`

Hello!
Please change your topic title to include descriptive keywords of your question/issue.
“Problemas con Processing” is too generic. Anyone in the future searching for similar information will not be able to find this thread.
It looks like your question has to do with Arduino not communicating with processing?
Possible to rewrite topic title to include “Arduino” etc?

:nerd_face: