[RESOLU]oscilloscope arduino-processing

Bonjour,

quelqu'un aurait-il les fichiers valides pour cette application ?

Ceux que j'ai à ma disposition date de 2011 et le source processing ne fonctionne pas:

/*
oscilloscope minimaliste avec un arduino
 récupère les valeurs via une liaison serie
 */
import processing.serial.*; // importation de la librairie de communication serie
//variables
Serial maConnection; // Crée un objet de communication série
int tension=0; // variable ou sera stockée la valeur de la tension
//affichage
int fenetreTemps=12000; // temps pour parcourir la largeur de l'écran en millisecondes
int x=0;
int y=0;


void setup() {
  size(650, 400); // taille de l'ecran
  String NomDuPort = Serial.list()[0]; // récupère la première interface serie trouvée
  println("connection a "+NomDuPort);
  maConnection = new Serial(this, NomDuPort, 19200); // création de la connexion série
  background(255); // fond d'écran blanc
  smooth(); // lisser les dessins
  strokeWeight(2); // largeur de trait
  stroke(40); // couleur du trait gris
}


void draw() { //boucle de dessin principale
  //rien ne s'y passe, tout est géré dans la fonction serialEvent
}


void serialEvent (Serial maConnection) { // si des données arrivent par la connexion série
  String retour=maConnection.readStringUntil('\n'); // lit la donnée jusqu'à la fin de ligne
  if (retour != null) { //si le retour n'est pas vide
    retour = trim(retour); // enlever les espaces
    tension = int(retour); // converti le texte en nombre entier
  }
  //détermination du X actuel
  int oldx=x;
  x=(millis()% fenetreTemps)*width/fenetreTemps;
  if (oldx>x) {
    //reprise au debut de l'écran
    oldx=0;
    background(255); //fond d'écran blanc
  }
  //determination de la valeur de Y
  int oldy=y;
  y=int(map(tension, 0, 1023, 380, 20)); // mise à l'échelle de la tension pour entrer dans l'écran
  line(oldx, oldy, x, y); // dessine le trait
}

il me renvoie "the function readStringUntil(char) does not exist."

Merci

Une question juste pour me rassurer.... tu essayes de télécharger ce sketch dans l'arduino ?

non, ça c'est la partie processing, je débute mais pas à ce point là :)

dans arduino, j'ai envoyté çà:

//déclaration des variables
//stockage du numéro de Pin où sera branché l'entrée de la mesure
int PinDeMesure=0;
//conteneur pour stocker la mesure
int tension=0;
// délai entre deux mesures
int periodeDeMesure=20;
void setup(){ // Initialisation du programme
// établir la connection série à 19200 baud
Serial.begin(19200);
// définir le PinDeM esure comme une entrée
pinMode(PinDeMesure, INPUT);
}
void loop() { //boucle principale
tension = analogRead(PinDeMesure); // Lit la tension du pin DeMesure et stocke le résultat
//dans la variable tension
Serial.println(tension); // communique la valeur de la tension au port série
delay(periodeDeMesure); //attendre jusqu'à la prochaine mesure
}

J'ai fait un essai avec tes deux sketch et tout fonctionne.

J'utilise Processing 1.5.1

Je vais essayer de trouver la version 1.5 donc, j'utilise la 2.1

merci d'avoir pris le temps de regarder

Jean-François: J'ai fait un essai avec tes deux sketch et tout fonctionne.

J'utilise Processing 1.5.1

salut JF :grin: me too avec processing 2.0b9

J'ai pas été jusqu'à la capture d'écran.... :grin:

Je vais faire un essai avec Processing 2.1, mais il faut que je télécharge.....

Edit : mon OS ne permet pas d'utiliser la 2.1 :grin:

avec la 1.5, l'application fonctionne mais il a fallu que je modifie cette ligne:

String NomDuPort = Serial.list()[0];

comme çà:

String NomDuPort = Serial.list()[2];

faute de quoi le port COM6 n'était pas vu et le sketch (ça fait vraiment bizarre d'appeler çà comme çà) se connectait sur le COM1. J'ai 3 ports COM déclarés sur mon pc

En faisant comme ça : http://processing.org/reference/libraries/serial/Serial_list_.html

Tu affiches tes ports dispo dans le moniteur série.

ça risque de me servir çà, merci