Création d'un fichier pour l'enregistrement des données

Bonjour,

je suis actuellement sur un projet simple ( carte arduino Mega + un capteur) j'arrive à afficher les résultats de mon capteur sur le sereal monitor, mais ce qu'il me reste a faire c'est d'enregistrer les résultats dans un fichier afin de les consulter et de voir l’évolution.
Merci pour votre aide.

Cordialement.
wahib.

T'es marrant... c'est ce qu'on était en train de faire (petit à petit ) sur ton autre sujet... :grin:

Déjà trois page .... :

http://arduino.cc/forum/index.php/topic,57516.15.html

Si tu veux on peut continuer ici.

On en était à la partie Processing qui devait lire le port série.

tu tournes sur quoi ? Pc Mac ?

Aucun problème à écrire un petit soft en C afin d'afficher les valeurs courantes, ainsi que de réaliser un fichier de logs ou autre sur ton ordi.

Je le fais très souvent. Si je peux t'aider.

Le principe est simple, les données que tu vois sur le moniteur sont affichiée par Serial.print ou équivalent. La seule chose qu'a à faire le pc, c'est de lire les données du port serie (qui est en fait l'usb avec Serial). C'est très simple à programmer, en tout cas pas trop long.

A+

J'ai vu que sur un autre post il est question de 'processing', cette voie semble pas mal aussi, voir très bien !

Yep!

Allez je continue de promouvoir python

http://arduino.cc/forum/index.php/topic,56590.15.html

XD

@+

Zoroastre.

Bonjour jean froinçois

Juste pour te dire que moi je travaille sur Pc et pas sur mac car si j'ai bien compris y a une différence

Aucune pour le moment.

ok cool on continu alors

Ben oui... on va la finir cette petite appli :wink:

j'ai trouvé ceci coté arduino :

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

void loop() {
int val = analogRead(A0);
Serial.println( 0xff, BYTE);
Serial.println( (val); >> 8)& 0xff, BYTE);
Serial.println( val & 0xff, BYTE);

mais je comprends pas trop l’intérêt de la dernier partie"
Serial.println( 0xff, BYTE);
Serial.println( (val); >> 8)& 0xff, BYTE);
Serial.println( val & 0xff, BYTE);

Coté Arduino on avait tout fait.... on en était à Processing.

tu veux dire ceci :
serial.print('$');
serial.print(char(H1));
Serial.print("#");

voila coté Arduino j'ai met ceci:
char H1;
void setup() {
Serial.begin(9600);
}

void loop() {
int val = analogRead(A1);
Serial.print('$');
Serial.print(char(H1));
Serial.print("#");
}

après coté processing j'ai met ceci:

import processing.serial.*;

import processing.serial.*;

Serial port; // Create object from Serial class
int val; // Data received from the serial port
int[] values;

void setup()
{
size(640, 480);
// Open the port that the board is connected to and use the same speed (9600 bps)
port = new Serial(this, Serial.list()[0], 9600);
values = new int[width];
smooth();
}

int getY(int val) {
return (int)(val / 1023.0f * height) - 1;
}

void draw()
{
while (port.available() >= 3) {
if (port.read() == 0xff) {
val = (port.read() << 8) | (port.read());
}
}
for (int i=0; i<width-1; i++)
values = values[i+1];

  • values[width-1] = val;*
  • background(0);*
  • stroke(255);*
  • for (int x=1; x<width; x++) {*
  • line(width-x, height-1-getY(values[x-1]),*
  • width-1-x, height-1-getY(values[x]));*
  • }*
    }
    mais rien ne s'affiche juste une fenetre noir :roll_eyes:

Je ne comprends pas çà :

void loop() {
int val = analogRead(A1);
Serial.print('$');
Serial.print(char(H1));
Serial.print("#");
}

H1 n'est utilisé nulle part...

Il faudrait plutôt :

Serial.print(val);

Le problème c'est que analogRead(A1) retourne des valeurs entre 0 et 1023.

donc il faut encore bosser...

Grag38:
Je ne comprends pas çà :

void loop() {
int val = analogRead(A1);
Serial.print('$');
Serial.print(char(H1));
Serial.print("#");
}

H1 n'est utilisé nulle part...

Il faudrait plutôt :

Serial.print(val);

Le problème c'est que analogRead(A1) retourne des valeurs entre 0 et 1023.

donc il faut encore bosser...

Cette partie c'est la partie Arduino qui à été traitée dans l'autre sujet... :

Et d'après les résultat que tu me donnais, tu l'a de nouveau modifiée.... c'est sur que comme ça on va jamais aboutir.

Là on est à Processing.... faut suivre. :grin:

Grag38:
donc il faut encore bosser...

Je suis assez d'accord avec toi XD

Coté Arduino tu as ton programme qui t'affiche ton humidité sur un lcd.

Tu reprends ce code tel quel et tu rajoutes ce qu'on avait dit dans l'autre sujet....

Est ce que tu as déjà fait clignoter une led ?

Ensuite quand ce sera clair coté Arduino.... on reprendra sur Processing.

Plus exactement ce que j'ai coté arduino:

float analogPin1 = A1;
float b1;
float H1;
float val1 = 0;
float Delta1;
void setup()
{
Serial.begin(9600);
}

void loop()
{
val1 = analogRead(analogPin1);
b1 = ((val15)/1024);
Delta1 = (pow(0.0281,2)-(4
0.00003*(0.82-b1)));
H1 = ((sqrt(Delta1)-0.0281)/(2*0.00003));
Serial.print(H1), Serial.println("%");
}

donc si j'ai bien compris au lieu de :
Serial.print(H1), Serial.print("%");

je mets:
serial.print('$');
serial.print(char(H1));
Serial.print("#");

c'est ce que je disais... H1 est une valeur analogique traitée, qui maintenant se trouve entre 0 et 100 (c'est les pourcent d'humidité pour ceux qui n'aurais pas suivi ou qui prennent en cours XD ).

Donc ce bout de code tu le modifies comme on a dit pour envoyer "$lavaleurdhumiditémesurée#"....

edit :

wahib:
donc si j'ai bien compris au lieu de :
Serial.print(H1), Serial.print("%");

je mets:
serial.print('$');
serial.print(char(H1));
Serial.print("#");

Oui