Bonjour à tous !
Je viens de commencer dans l'arduino qui est une carte formidable !
Mais je me heurt à un petit problème.
Dans mon projet je voudrais stocker des variables dans une carte SD afin de pouvoir modifier et sauvegarder celle-ci entre deux utilisations.
Donc je pensais utiliser une SD avec un fichier contenant celles-ci (Initialisation = Récupération sur la carte et modification (très rares) => écriture sur la carte) afin d'éviter de rebrancher le PC et de modifier le code.
Donc voici mon problème : j'utilise un module SD en SPI avec une Carte Mega 2560.
Et quand je teste le code exemple de la bibliothèque SD je n'arrive qu'à lire et pas à écrire. Si j'essaye d'écrire dans le fichier ça bug et cela bloque même la lecture qui suit.
Voici mon code :
/*
SD card read/write
This example shows how to read and write data to and from an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
This example code is in the public domain.
*/
#include <SPI.h>
#include <SD.h>
File myFile;
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...");
if (!SD.begin(53)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
myFile = SD.open("test.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
// re-open the file for reading:
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
while (myFile.available()) {
Serial.write(myFile.read());
}
// close the file:
myFile.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening test.txt");
}
}
void loop() {
// nothing happens after setup
}
J'ai tester avec un arduino UNO que j'ai dans mes tiroirs et avec lui pas de problème !
Sur la carte MEGA je suis obligé de commenter la ligne :
myFile.println("testing 1, 2, 3.");
sinon ça plante la lecture et cela aussi fonctionne si je supprime FILE_WRITE de l'ouverture qui je pense bloque l'écriture.
Je ne comprend pas ce qui se passe. Quelques fois ça crée un fichier corrompu de plusieurs Go :o !
Sur la carte j'ai beaucoup de modules de branchés (Ecran LCD, RTC, Télécommande IR, Récepteur Modélisme, BMP180, ...) et dans le doute j'ai implémenté le code exemple dans mon code où tout les modules fonctionne mais cela ne change rien.
Merci d'avance si quelqu'un à une idée.
Bonne journée.