Pages: [1]   Go Down
Author Topic: Processing  (Read 1519 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour la compagnie  smiley-grin

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  smiley
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

J'apprends tous les jours!

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 07, 2011, 04:31:08 pm by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-lol
« Last Edit: May 16, 2014, 10:28:04 am by Jean-François » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

A part ca le code fonctionne nickel !
Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ça c'est du déterrage utile....  smiley-lol

C'est corrigé, merci.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1]   Go Up
Jump to: