Go Down

Topic: Processing (Read 1 time) previous topic - next topic

mistercricri

Bonjour la compagnie  :D

voila j'essaye depuis quelque temps d'afficher en temps réel des données de l'arduino via processing (l'idée est de faire une petite interface avec les données qui s'affichent en temps réel sur la même fenêtre)

j'ai essayé en communiquant via le port série (demande-réponse). Ca marche avec une seule données à la fois ... pas moyen d'en lire plusieurs !

sauriez vous où je pourrais trouver un exemple qui puisse m'aider ? car la, je sèche ...

merci d'avance  :)

Hexa Emails

Bonjour,
Je cherche aussi. J'ai trouvé un sketch qui envoyeait 16 bits de données, les 8 premiers pour x et les 8 suivants pour Y.
Ma solution serait d'envoyer les données successivement (x,y,z, puis les nouvelles valeurs de x,y,z...) mais je n'ai jamais eu le courage de me lancer dans un sketch de ce type. (il faut sans doute ajouter un octet d'initialisation, pour être bien sur que l'on commence à "x" par exemple).
En tout cas si quelqu'un a une solution plus simple, je suis preneur!
J'apprends tous les jours!

Jean-François

#2
Feb 07, 2011, 10:21 pm Last Edit: Feb 07, 2011, 10:31 pm by Jean-François Reason: 1
Tout dépends de ce que tu appelles "temps réel", car cette notion est relative et sera influencée par la marge que tu vas donner à cette "réalité".

Si c'est à perception humaine, alors pas de problème tu auras facilement du temps réel avec Arduino et Processing.

Par contre si c'est pour donner la position d'un mobile à un moment précis... ça devient déjà plus difficile :

à 50 km/h tu fais 13,89 m/s >>> 13,89 mm/milliseconde  >>> 13,89 microns/microsecondes

la mesure ne pourra au mieux n'être prise que toutes les 4 microsecondes par l'Arduino, donc une réalité décalée de 55,56 microns.... et ensuite ta liaison série ne sera pas aussi rapide que le nombre de mesures traitées, disons que ta liaison série est 10 fois moins rapide que la prise de mesure, tu auras de nouveau un décalage et tu ne connaitra ta position que tout les 5,556 centièmes de mm.

De plus l'Arduino ne lit les capteurs qui sont branché dessus que l'un après l'autre, donc ce ne sera pas possible d'avoir toutes les mesures en mêmes temps.

Pour parler de mesure en "temps réelle", il faut déjà savoir ce que l'on veux mesurer, pourquoi faire et avec quelle "précision" ....

Alors dit nous en plus sur ton projet
MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

mistercricri


Tout dépends de ce que tu appelles "temps réel", car cette notion est relative et sera influencée par la marge que tu vas donner à cette "réalité".

Si c'est à perception humaine, alors pas de problème tu auras facilement du temps réel avec Arduino et Processing.

Par contre si c'est pour donner la position d'un mobile à un moment précis... ça devient déjà plus difficile :

à 50 km/h tu fais 13,89 m/s >>> 13,89 mm/milliseconde  >>> 13,89 microns/microsecondes

la mesure ne pourra au mieux n'être prise que toutes les 4 microsecondes par l'Arduino, donc une réalité décalée de 55,56 microns.... et ensuite ta liaison série ne sera pas aussi rapide que le nombre de mesures traitées, disons que ta liaison série est 10 fois moins rapide que la prise de mesure, tu auras de nouveau un décalage et tu ne connaitra ta position que tout les 5,556 centièmes de mm.

De plus l'Arduino ne lit les capteur qui sont branché dessus que l'un après l'autre, donc ce ne sera pas possible d'avoir toutes les mesures en mêmes temps.

Pour parler de mesure en "temps réelle", il faut déjà savoir ce que l'on veux mesurer, pourquoi faire et avec quelle "précision" ....

Alors dit nous en plus sur ton projet


oui c'est vrai que j'ai pas été précis désolé  :smiley-red:

en fait j'ai pas forcément besoin de précision, une fréquence d'acquisition d'une seconde suffirait largement. Donc si la page avec toutes mes données se rafraîchit toutes les secondes c'est bon ...

c'est essentiellement des mesures de tensions, d'état de capteurs (HIGH ou LOW), de mesures de températures ... je dois avoir une dizaine de capteurs en tout. C'est pour un banc d'essai de mesure pour une batterie au lithium.

Jean-François

#4
Feb 07, 2011, 10:53 pm Last Edit: May 16, 2014, 05:28 pm by Jean-François Reason: 1
Il y a des choses à finir et d'autres à modifier, mais en gros c'est ça.

Coté Arduino :
Quote




void setup()
{
 Serial.begin(115200);
}

void loop()
{
 
 Serial.print(Volt);
 Serial.print(";");
 Serial.println(Ampere);
}




Et coté Processing :

Quote

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
 size (300,240); //taille de la fenetre
 background(0); // couleur du fond >> noir

 println(Serial.list()); // liste les ports usb utilise >> [2] pour moi

 myPort = new Serial(this, Serial.list()[2], 115200);   // initialise le port usb [2] a 15200 baud
 myPort.clear();  // vide le buffer

   myString = myPort.readStringUntil(lf);   // lit sur le port jusqu'a "lf" et fait la chaine "myString"
 myString = null;
}


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 ;
     if (list.lenght==2) {  // si le tableau a bien deux valeurs
       background(0); // couleur du fond >> noir
       text("Volts "+list[0] +"  Amperes "+ list[1],30,50);
     }
   }
 }
}




Ensuite, tu peux rajouter un fonction de temps pour que l'affichage ne se fasse que 25 x par secondes, ça te soulage un peu la CPU... java est gourmand et bouffe tout ce que tu lui laisses  XD
MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

mistercricri

super merci, plus qu'à essayer  :smiley-mr-green:

Bozon

Petite correction :
la syntaxe de la fonction qui donne la longeur d'une liste est list.length

A part ca le code fonctionne nickel !

Jean-François

ça c'est du déterrage utile....  XD

C'est corrigé, merci.
MacBook intel core 2 duo  os X snow Leopard 10.6
 eMac PPc G4  os X Leopard 10.5
powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up