Bonjour a vous
Je suis julien
J'ai un probleme pour mon lycée je dois crée un code qui enregistre des donnés sur un fichier est avec exel ou calc arriver a faire un graphique (les donnés sont hauteur d'un avion maquette et vitesse du vent de notre souflerie ) mais le probleme
c'est comment faire car je n'y arrive pas
j'ai un module de carte sd
mais ducoup je n'arrive pas a comprendre comment faire pour s'eparer les donnés dans le tableur en vue de faire un graphique si vous avez une idée je prend
Bonsoir
chercher des informations sur le format CSV = données faciles à écrire sous Arduino dans un fichier sur une carte SD et format exploitable par tout tableur. (séparateur de données au choix : virgule, tabulation, point virgule....)
A tire d'exemple voilà un petit extrait d'enregistrements horodatés de température et d'hygrométrie, au format csv (fichier formé de lignes de texte)
LibreOffice ouvre ce fichier et propose le bon découpage des colonnes et la mise en lignes
T_H.zip (445 Bytes)
Ok merci je ne connaissais pas je vais me renseigner
Tu parle de l'heure mais c'est obliger d'avoir un module de temps avec une carte sd ??
Bien sûr que non.
Tu mets ce que tu veux.
Sur une période de temps courte, l'oscillateur du microcontrôleur peut suffire.
Il va dériver de quelques secondes par heure.
Tu peux utiliser TimeLib.
Peut être que les données hauteur et vitesse suffisent, sans horodatage.
Ok Merci
Pour le moment j'ai trouvé ça mais pas de quoi faire pour l'enregistrer en mode "tableur"
#include <SPI.h>
#include <SD.h>
const int chipSelect = 4;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1);
}
Serial.println("card initialized.");
}
void loop() {
// make a string for assembling the data to log:
String dataString = "";
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// if the file is available, write to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}
c'est code donné sur le site arduino
Tu enregistre des lignes vides ...
Il faudrait premièrement enregistrer le nom des colonnes en début de fichier (donc si celui-ci est vide) :
dataFile.println("VITESSE;HAUTEUR");
Ensuite en boucle :
dataFile.print(v); dataFile.print(';'); dataFile.println(h);
v étant la vitesse et h étant la hauteur.
Ok merci est le fichier je le mets en datalog.txt ou datalog.csv
Merci a toi de t'as réponse
Ce n'est qu'une question de système d'exploitation et d'association extension / application.
L'extension .csv est associée en général au tableur, l'extension .txt plutôt associée à un éditeur de texte.
Ok d'accord, merci je vous donnerais des nouvelle une fois montre a mon groupe est je vous donnerais tout le code dans projet finis
voici le code pour le moment
#include <SPI.h>
#include <SD.h>
//pin de branchement
const int chipSelect = 4;
//Valeur de donnés
int v = 0;
int h = 0;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1);
}
Serial.println("card initialized.");
//ecrire le nom des donnés
File dataFile = SD.open("datalog.csv", FILE_WRITE);
dataFile.println("VITESSE;HAUTEUR");
}
void loop() {
// make a string for assembling the data to log:
String dataString = "";
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.csv", FILE_WRITE);
if (dataFile) {
dataFile.print(v); dataFile.print(';'); dataFile.println(h);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
Serial.print(v);
Serial.print(';');
Serial.println(h);
}
// if the file isn't open, pop up an error:
else {
Serial.println("error opening datalog.txt");
}
}