Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2016-11-14 00:40:14 a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

a l'aide je vous en suplie



Bonjour à tous et à toute,

ayant pour projet de crée une station qui me donnerai tout un tas d'information sur mes aquarium (température,ph et j'en passe....) je suis au départ c'est a dire à la sonde de température. je vous explique mon problème :
        - 1 - j'ai bien fait mes branchement de ma sonde sur ce point la aucun problème.
        - 2 - coter arduino y a pas de problème je reçois bien les données dans le "moniteur serie"
        - 3 - c'est la que sa coince : au niveau de processing je ne sais pas comment faire pour récupérer la valeur de plusieurs slot analogique (a0, a1, a2....). je vous met les codes ci-dessous pour que vous voyer ou j'en suis (soyer indulgent avec moi sa fait à peut prés 24 h que je suis la dessus sans relâche et je comence a fatiguer.

code arduino :

citation :

int analogPin = 1; // Patte centrale LM35 sur l'entrée analogique 1.
int value = 0; // Variable de stockage de la valeur mesurée.
float tempC;
void setup()
{
Serial.begin(9600); // Transfert des données série a 9600 bauds.
}
void loop()
{
value = analogRead(analogPin); // lecture en entrée de la pin 1.
tempC=(5.0*value*100.0)/1024; //conversion de la valeur analogique temperature
Serial.println(tempC); // Debug value.
delay(100) ;
}

code processing :

citation :

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
    size(600,600);
    background(0);
  // List all the available serial ports:
  printArray(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[1], 9600);

}

void draw() {

  while (myPort.available() > 0) {
    String inBuffer = myPort.readString();   
    if (inBuffer != null) {
      println(inBuffer);
      text(inBuffer,30,50);
      color(255);

    }
  }
}

Hors ligne

 

#2 2016-11-14 00:53:03 Re : a l'aide je vous en suplie

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 727

Re: a l'aide je vous en suplie



Pour te décoincer, regarde sur l'aide d'Arduino comment ils envoient plusieurs données :
https://www.arduino.cc/en/Tutorial/SerialCallResponse

Le but set de vérifier que la communication est bien établie et ensuite on sait que le premier octet reçu correspond à la température le second au ph etc.

Bon courage.

Hors ligne

 

#3 2016-11-14 01:20:36 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



salut coter processing

Serial myPort;

void setup() {
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.bufferUntil(10);
  myPort.clear();
}

void serialEvent(Serial myPort) {
  // read a byte from the serial port:
 while(myPort.available() > 0) {
    myPortString = myPort.readString();
 }
 if(myPortString != null) {
   
   if(myPortString.substring(0,1).equals("A")) { 
   String[] values = split(myPortString.trim(), ',');
   unitDot = int(values[1]);
   delaiDepartMorse = int(values[2]);
   delaiFinMorse = int(values[3]); }
   
 }

et coter arduino

void menu() {
  
  Serial.print("A");
  Serial.print(",");
  Serial.print(unitLength);
  Serial.print(",");
  Serial.print(phraseDelaystart);
  Serial.print(",");
  Serial.print(phraseDelaystop);
  Serial.println();
}

voila comment transférer le Multi variable c'est un bout de code que javais développer pour un code morse
si ta des question n’hésite pas

a+
Danny

Hors ligne

 

#4 2016-11-14 02:50:44 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



Mushussu a écrit:

Pour te décoincer, regarde sur l'aide d'Arduino comment ils envoient plusieurs données :
https://www.arduino.cc/en/Tutorial/SerialCallResponse

Le but set de vérifier que la communication est bien établie et ensuite on sait que le premier octet reçu correspond à la température le second au ph etc.

Bon courage.

Merci pour ta réponse Mushussu mais j'ai vraiment du mal à extrapoler le code de ton lien qui est beaucoup plus complexe que ce que je veut faire en faite. Peut-tu s'il te plait m’apporter plus de précision ?


Et Dany , pour ce qui est du code Arduino, il manque des ligne ou je colle ce que tu ma donner dans arduino.

Merci de votre aide en tout cas ses cool.

Hors ligne

 

#5 2016-11-14 04:02:32 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



il ne manque aucune ligne c'est pour te montrer comment le faire si dans arduino tu veux tes 5 analogues alors tu aura quelque chose du genre

int numberSensor = 4;
int[] sensorData = new int[numberSensor];

void loop() {
   for(int i = 0; i<numberSensor; i++) {
       sensorData[i] = analogRead(i);
       delay(10);
   }
  
  serial.print("A");
  serial.print(",");
  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.print(SensorData[4]);
  delay(10);
}

voila

Hors ligne

 

#6 2016-11-14 18:06:58 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



Imidi ,
j'ai un souci sur le code que tu ma envoyer ci dessus (ligne 2) "expected unqualified-id before '[' token" :

int numberSensor = 4;
int[] sensorData = new int[numberSer];// expected unqualified-id before '[' token


void loop() {
   for(int i = 0; i<numberSensor; i++) {
       sensorData[i] = analogRead(i);
       delay(10);
   }
  
  serial.print("A");
  serial.print(",");
  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.print(SensorData[4]);
  delay(10);
}

Hors ligne

 

#7 2016-11-14 18:33:32 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



Ca se peut je ne l'ai pas testé cetais senser te montrer comment faire pour transferer des donner de arduino vers processing
Mon erreur est que j'ai declarer un array pour processing et non pour arduino
Essais ca ca devrais corriger remplace la ligne int par

Int sensorData[numberSensor];

Dernière modification par imdidi (2016-11-14 18:34:03)

Hors ligne

 

#8 2016-11-15 00:24:23 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



Re, j'ai toujours une erreur dans le la fenêtre arduino meme en changeant cette ligne "//// 'int' does not a name type".

int numberSensor = 4;
Int sensorData[numberSensor] = new int[numberSensor]; //// 'int' does not a name type

void loop() {
   for(int i = 0; i<numberSensor; i++) {
       sensorData[i] = analogRead(i);
       delay(10);
   }
  
  serial.print("A");
  serial.print(",");
  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.print(SensorData[4]);
  delay(10);
}

Hors ligne

 

#9 2016-11-15 00:50:36 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



Enleve le = new int[numberSensor] jessayerais le code quand jarriverai chez nous tentot mais tu a les grande ligne

Hors ligne

 

#10 2016-11-15 01:12:58 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



j'ai déjà essayer cela.

Hors ligne

 

#11 2016-11-15 02:16:34 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



Tien essais celui la

int numberSensor = 4;
int sensorData[4];

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

void loop() { 
for(int i = 0; i<numberSensor; i++) { 
sensorData[i] = analogRead(i); 
delay(10); 
} 
Serial.print("A"); 
Serial.print(","); 
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.print(sensorData[4]);
 delay(10); 
}

Hors ligne

 

#12 2016-11-15 03:26:22 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



Merci beaucoup imdidi sa marche du coté d'arduino.
Cependant du cote de processing y a un souci, dans le code ci-dessous processing me dit qu'il ne connais pas les fontction "myPortString, unitDot, delaiDepartMorse, delaiFinMorse". De plus pourrait tu m'expliquer comment marche ce code (est ce que processing ecoute tout les port en meme temps et fait sa sauce tout seul) désolé tu doit voir que je suis  débutant dans le sujet mais je suis vraiment intéresser par ta passion lol.

import processing.serial.*;
Serial myPort;

void setup() {
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.bufferUntil(10);
  myPort.clear();
}

void serialEvent(Serial myPort) {
  // read a byte from the serial port:
 while(myPort.available() > 0) {
    myPortString = myPort.readString();
 }
 if(myPortString != null) {
   
   if(myPortString.substring(0,1).equals("A")) { 
   String[] values = split(myPortString.trim(), ',');
   unitDot = int(values[1]);
   delaiDepartMorse = int(values[2]);
   delaiFinMorse = int(values[3]); }
   
 }

Hors ligne

 

#13 2016-11-15 04:35:00 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



cest normal que tu as cette erreur la cest un code dont tu na pas tout le programme les erreur sont des variable non declarer

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()[0], 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(){
Println(sensorData[0]);
}
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.readString();  //store ce que le port contient dans une variable string
 }
 if(myPortString != null) {       //si le port nest pas egal a 0
   
   if(myPortString.substring(0,1).equals("A")) {       si la 1 ou 2ieme byte est egal a A
   String[] values = split(myPortString.trim(), ',');    //separe les valaur 
   sensoData[0] = int(values[1]);                 //store les donner de tes capteur numero 1
   sensoData[1] = int(values[2]);  //numero 2
   sensoData[2] = int(values[3]);
   sensoData[3] = int(values[4]);   
   sensoData[4] = int(values[5]);
   }
}
}

Dernière modification par imdidi (2016-11-15 04:38:53)

Hors ligne

 

#14 2016-11-15 20:02:19 Re : a l'aide je vous en suplie

vasalva
membre
Date d'inscription: 2016-11-14
Messages: 27

Re: a l'aide je vous en suplie



Bonjour Imdidi,

je te remerci encore car avec tes explications je commence a mieu comprendre comment processing écoute l'arduino.
Cependant avec le code que j'ai modifier je n'ai que des valeur = à zero dans moniteur de 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()[0], 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(){
println(sensorData[0]);
println(sensorData[1]);
println(sensorData[2]);
println(sensorData[3]);

}
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.readString();  //store ce que le port contient dans une variable string
 }
 if(myPortString != null) {       //si le port nest pas egal a 0
   
   if(myPortString.substring(0,1).equals("A")) {    //   si la 1 ou 2ieme byte est egal a A
   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

 

#15 2016-11-15 20:48:19 Re : a l'aide je vous en suplie

imdidi
membre
Date d'inscription: 2012-10-05
Messages: 216

Re: a l'aide je vous en suplie



dans ton moniteur de arduino a tu des valeurs ? si oui

alors essaye ca comme ca
coter 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()[0], 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(){
println(sensorData[0]);
println(sensorData[1]);
println(sensorData[2]);
println(sensorData[3]);

}
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.readString();  //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]);
   
}
}

et coter Arduino

int numberSensor = 4;
int sensorData[4];

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

void loop() { 
for(int i = 0; i<numberSensor; i++) { 
sensorData[i] = analogRead(i); 
delay(100); 
} 
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-15 21:07:18)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017