[Processing] Graphe d'acquisition température plusieurs capteurs

Bonjour!

Je suis actuellement en train de dévelloper un programme me permettant de visualiser l'acquisition en temps réel de mes capteurs de températures sur un Arduino.
Je souhaite afficher un (et un seul dans la mesure du possible) graphe avec plusieurs courbes qui représenteront chaque capteurs, une abscisse qui sera de 0 jusqu'à l'arrêt de mon acquisition (si je veux 15 jours de test-avec une acquisition/10 min-, à la fin de mes 15 jours mes valeurs s'affichent sur le même graphique).
C'est peut être trop demandé pour processing, mais est-ce réalisable ?

J'ai bien fait des heures de recherches mais sans grands résultats, les tuto sont nombreux et parfois représentent des cas très particulier qui ne peuvent pas s'appilquer à ce que je veux faire.

Mon arduino envoit au pc :

    Serial.print(temp1);                                                    
    Serial.print(";");
    Serial.print(temp2);
    Serial.print(";");
    Serial.println(temp3);

Je précise que je reçois directement dans le serial.print la valeur en °C de ma température.

et mon code Processing

import processing.serial.*;
import g4p_controls.*;

 Serial myPort; 
 String a;

public void setup(){
 
 println(Serial.list());
 myPort = new Serial(this, Serial.list()[1], 9600);
 myPort.bufferUntil('\n');
    
  size(1024, 700, JAVA2D);
  createGUI();
  customGUI();  
}

public void draw(){
  
  while (myPort.available()>0){
   String a=myPort.readStringUntil('\n');
    if(a!=null) {
      print(a);
      String list[] = splitTokens(a,";");  
      Capteur1 = list[0];
      Capteur2 = list[1];
      Capteur3 = list[2];
      }   
    } 
}
// Use this method to add additional statements
// to customise the GUI controls
public void customGUI(){
}

En gros ce qui est fonctionnel dans ce code c'est le serial de communication et la séparation des trois valeurs de température. Mais après je bloque...

Si quelqu'un à une piste dans laquelle je peux m'y faufiler pour mieux comprendre et avancer sur mon programme, je le remercie d'avance!

Cordialement Lykaa

?

Bonjour,

désolé de ma réponse tardive =(

Je viens de jeter un coup d'oeil à ton lien, j'essaye de mettre en oeuvre un simple graphique avec une seule courbe mais je bute pas mal... Processing ne reconnait pas mes tableaux contenant mes données. Je m'explique :

je récupère mes données comme ça :

Serial.println(time;capteur1;capteur2;Capteur3...etc;);

Mon processing me selectionne chaque valeurs différentes :

void draw() {
  while (myPort.available() > 0) {
    myString = myPort.readStringUntil(lf);
    if (myString != null) {
      print(myString);
      String list[] = splitTokens(myString,";"); //divise la chaine a chaque; et supprime les ;

Ce qui fait qu'en list[0] j'ai mon temps, en list[1] mon capteur 1, et ainsi de suite.

Mais dans l'exemple giCentre :

lineChart.setData(new float[] {1900, 1910, 1920, 1930, 1940, 1950,
                                  1960, 1970, 1980, 1990, 2000},
                    new float[] { 6322,  6489,  6401, 7657, 9649, 9767,
                                  12167, 15154, 18200, 23124, 28645});

Je ne peux pas simplement remplacer les new float[] par mes valeurs :confused:

Merci d'avances pour vos réponses
Cordialement
Lykaa

Dans l'exemple qui suit ça fait presque ce que tu veux :

  // Load in data from a file 
  // (first line of file contains column headings).
  String[] data = loadStrings("ukIncomeAndLifeExp.csv");
  float[] income  = new float[data.length-1];
  float[] lifeExp = new float[data.length-1];
      
  for (int i=0; i<data.length-1; i++)
  {
    String[] tokens = data[i+1].split(",");
    income[i]  = Float.parseFloat(tokens[1]);   
    lifeExp[i] = Float.parseFloat(tokens[2]); 
  }
  scatterplot.setData(income,lifeExp);

La c'est à partir d'un csv, donc il y a un prédécoupage. Mais grosso modo il te suffit de répéter l'opération à chaque nouvelle réception série en alimentant deux tableau qui sont ici income et lifeExp

tu as tout ce qu'il te faut ici :

http://accrochages.drone.ws/en/node/90