Comunicación serial de varios sensores de temperatura.

Hola, quería comentarles que ya hace varios días que tengo una duda con respecto a la comunicación serial. He estado trabajando con el sensor LM35 y ya logré realizar la comunicación serial entre arduino y java, entonces aquí viene mi duda ¿Cómo se hace para que java reconozca tres de estos sensores y no solo uno? es decir si conecto los tres sensores y envío los datos a java, este va a recibir una cadena de números, pero como hago para que identifique cuales de ellos son del sensor1, sensor2 y sensor3.

Pero las entradas se reciben por canales distintos, no? Entonces cada canal debe tener su propio identificador.

Cada sensor esta conectado en un pin diferente del arduino, A0, A1 y A2 y en el programa del arduino esos valores los guardo en la variables separadas: sensor1, sensor2 y sensor3. El caso es que cuando envio esos datos por el puerto serial los envio de la siguiente manera:

System.out.println(sensor1);
System.out.println(sensor2);
System.out.println(sensor3);

De esa forma los envío a java, pero como hago para identificar cada uno de ellos y mostrar esos datos en diferentes jTextField.

yo hice algo similar pero usando el labview, enviaba la informacion de los sensores mas un encabezado por ejemplo podria ser 0xFF - sensor1 - sensor2, etc. y lo que hacia con el labview era encontrar el encabezado 0xFF y se ordenaba como yo queria.
asi aunque llegara por ejemplo el sensor1 - sensor2 - 0xFF, el labview iba a ordenar la trama.
No se si te servira de algo.
Saludos

Hola muchas gracias por responder, pero ya encontre una solución aqui les dejo el código que utilize en java talvez le sirve a mas de uno :slight_smile:

Prácticamente lo que hace el programa es cortar en dos el String recibido por el puerto serial, es decir que cuando envío los datos del sensor 1, jave recibe Sensor1=30 y ese conjunto de caracteres los corta por la mitad tomando como referencia el símbolo “=”. Luego la mitad es decir “Senor1” lo guardo en un array y la otra mitad “30” en otro array, luego solo es de comparar y visualizar cada valor en diferentes jTextField.

 public synchronized void serialEvent(SerialPortEvent oEvent) {
		if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
			try {
				String inputLine=input.readLine();
				
                                
                                String [] parts = inputLine.split("=");
                                String part1 = parts[0];
                                String part2 = parts[1];
                                if(parts[0].equalsIgnoreCase("Sensor1")){
                                jTextField1.setText(parts[1]);
                                System.out.println(inputLine);
                                }
                                if(parts[0].equalsIgnoreCase("Sensor2")){
                                jTextField5.setText(parts[1]);
                                System.out.println(inputLine);
                                }
                                if(parts[0].equalsIgnoreCase("Sensor3")){
                                jTextField6.setText(parts[1]);
                                System.out.println(inputLine);
                                }
                                
                                
                              
                                
                                
			} catch (Exception e) {
				System.err.println(e.toString());
			}
		}
	}

,

hola amigos, como estan? estoy teniendo un problema con mi programacion. estoy trabajando en un proyecto con 2 sensores de altura para un mini-auto de niños, cree una aplicacion y cuando pulso BAJO el autito se baja tomando en cuenta la altura minima y maxima, y cuando pulson normal, toma en cuenta si esta abajo para subir, y si esta alto para bajar, por eso tomo en cuenta la parte delantera y la parte trasera del sensando la altura con un sensor en cada eje, el problema es que solo puedo ejecutar un comando IF de la programacion, el otro IF no me lo toma en cuenta, no se como hacer para ejecutar cada comando sin que le afecte lo que haya ejecutado el otro sensor anteriormente. aqui abajo dejo la programacion a ver si me hechan una mano, mil gracias!

int subirder=12;
int bajarizq=13;
int estado=0;

void setup()
{
Serial.begin(9600);
pinMode(bajarizq,OUTPUT);
pinMode(subirder,OUTPUT);

}

void loop()
{

if(Serial.available()>0){
estado = Serial.read(); ///// valores serial recividos desde la aplicacion
}

int SENSORDEL = analogRead(A0);
Serial.println(SENSORDEL);

int SENSORDEL1 = analogRead(A1);
Serial.println(SENSORDEL1);

int SENSORDEL2 = analogRead(A2);
Serial.println(SENSORDEL2);

int SENSORDEL3 = analogRead(A3);
Serial.println(SENSORDEL3);

//…NORMAL…
{
if (SENSORDEL >17 && estado== ‘a’ )

{
digitalWrite (subirder,LOW);
}

else if (SENSORDEL == 15)
{
digitalWrite(subirder,HIGH);
}

//…NORMAL 2…

if (SENSORDEL1 <13 && estado== ‘a’ )
{
digitalWrite (bajarizq,LOW);
}

else if (SENSORDEL1 == 15)
{
digitalWrite(bajarizq,HIGH);
}

//…BAJO…

if (SENSORDEL2 >17 && estado== ‘d’ )
{
digitalWrite (subirder,LOW);

}

else if (SENSORDEL2 == 21)
{
digitalWrite(subirder,HIGH);

}

else
{
digitalWrite (subirder,LOW);
}
//…BAJO 2…

if (SENSORDEL3 <13 && estado== ‘d’ )
{
digitalWrite (bajarizq,LOW);

}

else if (SENSORDEL3 == 21)

{
digitalWrite(bajarizq,HIGH);

}
}
}