toujour que des zero dans processing. Dans l'arduino j'ai bien les numéro qui s'affiche comme ça :
374,355,333,332,-28624
301,299,303,311,-31214
269,264,275,289,31601
250,248,260,275,28752
252,254,261,273,26162
269,279,279,285,23572
Hors ligne
le problème est que je n'ai pas mon arduino pour tester ce qui ne va pas
met un println(myPortString); dans ton draw et dit moi si tu a quelque chose dans ta console
Hors ligne
avec mon println(myPortString); il me marque sa :
null
0
0
0
0
0
0
Hors ligne
essaye ca et dit moi si tu vois quelque chose avec le println(myPortString);
void serialEvent(Serial myPort) { //on cree une fonction qui elle est toujours en ecoute while(myPort.available() > 0) { // tant que le port contient 1 byte et + myPortString = myPort.readStringUntil('\n'); //store ce que le port contient dans une variable string } if(myPortString != null) { //si la variable myPortString nest pas egal a 0 String[] values = split(myPortString.trim(), ','); //separe les valaur sensorData[0] = int(values[1]); //store les donner de tes capteur numero 1 sensorData[1] = int(values[2]); //numero 2 sensorData[2] = int(values[3]); sensorData[3] = int(values[4]); sensorData[4] = int(values[5]); } }
sinon essaye celui la
void serialEvent(Serial myPort) { //on cree une fonction qui elle est toujours en ecoute myPortString = myPort.readStringUntil('\n'); //store ce que le port contient dans une variable string if(myPortString != null) { //si la variable myPortString nest pas egal a 0 String[] values = split(myPortString.trim(), ','); //separe les valaur sensorData[0] = int(values[1]); //store les donner de tes capteur numero 1 sensorData[1] = int(values[2]); //numero 2 sensorData[2] = int(values[3]); sensorData[3] = int(values[4]); sensorData[4] = int(values[5]); } }
tien moi au courant
Hors ligne
toujours pareil meme valeur.
Hors ligne
j'ai l'impression que tu te connecte pas a ton Arduino mais a un autre module ex: souris ou clavier sans fil ou autre
ouvre ton logiciel Arduino et clique sur l'onglet en haut outils puis jusqu’à la ligne port série regarde quel com il est écrit pour moi c'est COM 4
ensuite ouvre ton sketch processing et a cette ligne remplace le [0] (juste le 0 pas les accolades) par le chiffre écrit dans le port serie de arduino
myPort = new Serial(this, Serial.list()[0], 9600);
donc pour moi comme c'est le COM4 ce sera donc
myPort = new Serial(this, Serial.list()[4], 9600);
et si ca te donne une erreur enleve 1 a ton chiffre de port COM
si je ne suis pas asser claire je trouverais une autre façon de te l'expliquer
Hors ligne
j'ai essayer ce que tu ma dit avec mon port com 23 cependant quand je met 23 entre les acolade comme ceci il me met un message d'erreur " Arrayindexoutofbounds exeption23 j'ai aussi essayer avec 22 mais sans succes :
myPort = new Serial(this, Serial.list()[23], 9600);
Je pense que tu te rapproche de la solution tu a toucher quel'que chose la !
ps dans outil de mon logiciel arduino j'ai un autre port COM1 qui lui ne fonctionne pas.
Hors ligne
ok alors dans ton setup commente // toute les ligne par apport au myPort
Et ecrit println(Serial.list()); dans le setup
Donne moi le resultat
Dernière modification par imdidi (2016-11-17 00:57:41)
Hors ligne
tu touche vraiment le but imdidi voila ce que cela me marque dans le moniteur serie de processing (prend en compte que je n'ai aucun fil de brancher sur mon arduino pour l'instant) !!! :
339
272
-28624
360
339
272
-28624
360
339
272
-28624
360
339
272
-28624
360
339
272
-28624
360
339
272
-28624
360
339
Dernière modification par vasalva (2016-11-17 02:21:18)
Hors ligne
Ok ton setup remet le comme il etait. dans ton draw met seulement le println(myPortString); et change le numero 0 entre accolade augmente le jusqua temps quil te fasse une erreur et regarde le moniteur a chaque fois que tu change le chiffre quand il va ecrire des numero cest bon et branche ton arduino
void setup() {
myPort = new Serial(this, Serial.list()[0], 9600); //le 0 change le ici
myPort.bufferUntil(10);
myPort.clear(); // on efface ce qui pourrait avoir sur le port serie
}
Hors ligne
sa a l'air de fonctioner, cependant j'ai l'impression que les valeurs ne son mesurer qu'une seul fois, peut etre parce que il n'y a pas de void loop dans mon sketch processing ? :
import processing.serial.*; //importe la librarie pour utiliser le port serie Serial myPort; //on cree la classe myPort int[] sensorData = new int[4]; //variable tableau chiffre entier String myPortString; // variable phrase void setup() { myPort = new Serial(this, Serial.list()[1], 9600);//on declare sur quel port le arduino est brancher ici le port 0 et sa vitesse myPort.bufferUntil(10); myPort.clear(); // on efface ce qui pourrait avoir sur le port serie } void draw(){ background(0); println(sensorData[0]); text(sensorData[0],20,50); color(255); println(sensorData[1]); println(sensorData[2]); println(sensorData[3]); //println(myPortString); } void serialEvent(Serial myPort) { //on cree une fonction qui elle est toujours en ecoute myPortString = myPort.readStringUntil('\n'); //store ce que le port contient dans une variable string if(myPortString != null) { //si la variable myPortString nest pas egal a 0 String[] values = split(myPortString.trim(), ','); //separe les valaur sensorData[0] = int(values[1]); //store les donner de tes capteur numero 1 sensorData[1] = int(values[2]); //numero 2 sensorData[2] = int(values[3]); sensorData[3] = int(values[4]); sensorData[4] = int(values[5]); } }
Hors ligne
ok alors ré-essaye avec ce serialEvent et vois ce que ca donne mais si tes capteurs ne varie pas tu ne verra pas de variation non plus
void serialEvent(Serial myPort) { //on cree une fonction qui elle est toujours en ecoute while(myPort.available() > 0) { // tant que le port contient 1 byte et + myPortString = myPort.readStringUntil('\n'); //store ce que le port contient dans une variable string } if(myPortString != null) { //si la variable myPortString nest pas egal a 0 String[] values = split(myPortString.trim(), ','); //separe les valaur sensorData[0] = int(values[1]); //store les donner de tes capteur numero 1 sensorData[1] = int(values[2]); //numero 2 sensorData[2] = int(values[3]); sensorData[3] = int(values[4]); sensorData[4] = int(values[5]); } }
Hors ligne
pareil les valeur ne change pas. Mon capteur de température brancher sur le A0 de mon arduino est théoriquement obliger de varier quand je mais mes doigts dessus.
Hors ligne
ok on va essayer quelque chose d'autre du coter du Arduino fait ça et vérifie le moniteur série si il varie
si oui va du coter processing et vérifie si ça change
void loop() { sensorData[0] = analogRead(0); sensorData[1] = analogRead(1); sensorData[2] = analogRead(2); sensorData[3] = analogRead(3); sensorData[4] = analogRead(4); serial.print(sensorData[0]); serial.print(","); serial.print(sensorData[1]; serial.print(","); serial.print(sensorData[2]); serial.print(","); serial.print(sensorData[3]); serial.print(","); serial.println(sensorData[4]); delay(100); }
Dernière modification par imdidi (2016-11-17 20:26:11)
Hors ligne
Toujour pareil du cote de processing. Je pense que cela viens du sketch de processing ( comme-ci il n'écoutait les valeur qu'une seul fois et les inscrivaient ensuite en boucle sans réécouter les valeurs.
Hors ligne