Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Carte SD & Arduino"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Pas de photo de profil

cestpasfaux

Membre

#787 | Signaler ce message


Bonjour à tous :)

J'utilise actuellement le tutoriel "Lire et écrire des données sur une carte SD avec une carte Arduino / Genuino". Seulement je rencontre un problème lors de la suppression d'un dossier !!

Alors voilà :

    - initialisation de la carte SD = OK
    - création d'un dossier et d'un sous-dossier = OK
    - suppression d'un dossier/sous-dossier = FAIL

J'utilise un simple module SD avec 8 broches(2x GND, 5V, 3.3V, CS, MISO, CSK, MOSI). Vous avez des idées d'où pourrait venir le problème ?

Je vous joins le code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <SPI.h> // Pour la communication SPI
#include <SD.h> // Pour la communication avec la carte SD
const byte CS_PIN = 10;

void setup() {
  Serial.begin(9600); 
  pinMode(10, OUTPUT); 
/* Initialisation de la carte SD */
  Serial.print("Init SD card... ");
  if (!SD.begin(CS_PIN)) {    // gestion du cas d'erreur
    Serial.println("FAIL");
    for(;;); // Attend appui sur bouton RESET
  } 
  Serial.println("OK");
}

void loop() {
  SD.mkdir("test1");
  SD.mkdir("test1/test2");
/*suppression de 'test2' */
  if(SD.exists("test1/test2")) {
    Serial.print("suppréssion dossier ...");
    if(!SD.remove("test1/test2")) {
      Serial.println("FAIL");
      for(;;); // Attend appui sur bouton RESET
    }
  }

P.S : J'ai le même problème avec l'ouverture d'un dossier :

1
File fichier = SD.open("test1", FILE_WRITE); // Ouverture du fichier en écriture 

Derniére modification le par cestpasfaux


Pas de photo de profil

BugsByte

Membre

#788 | Signaler ce message


Salut,

remove c'est pour supprimer un fichier.
Pour les dossiers, il faut utiliser rmdir : https://www.arduino.cc/en/Reference/SDrmdir

Ouvrir un dossier n'a aucun sens.
Au mieux, tu peux lister la liste des fichiers s'y trouvant.
Pour cela, tu peux regarder là : https://www.arduino.cc/en/Reference/FileRewindDirectory


Pas de photo de profil

cestpasfaux

Membre

#789 | Signaler ce message


Merci de ta réponse !

C'est corrigé pour remove/rmdir, ça marche tout de suite mieux :)

Par contre pour écrire dans un fichier on ne doit pas d'abord l'ouvrir en mode écriture ? Car je suis bloqué à ce niveau là :

1
2
File fichier = SD.open("file1", FILE_WRITE);
fichier.println("Bonjour le monde");

Photo de profil de skywodd

skywodd

Membre

Membre du staff

#790 | Signaler ce message


Bonjour,

C'est quoi le soucis ? Le fichier n'est pas écrit sur la carte SD ? Ou est-il vide ?

Si il est vide, c'est qu'il manque un fichier.close(); dans ton code. L'écriture physique sur la carte SD ne se fait qu'à la fermeture du fichier ou après certaines conditions.


Pas de photo de profil

BugsByte

Membre

#791 | Signaler ce message


Ces 2 lignes de code me semble correctes. Fais-tu un appel à close à la suite ?
Ça sert à fermer proprement le fichier et il s'assure également que toutes les données ont été écrites. https://www.arduino.cc/en/Reference/FileClose


Pas de photo de profil

cestpasfaux

Membre

#792 | Signaler ce message


Bonjour, oui c'était ça !! le fichier était créé mais restait vide. Avec le fichier.close() ça fonctionne.

Encore merci skywodd et BugsByte pour votre aide !! (je risque de repasser sur ce forum étant donné que ce n'était que le prise en main ;) )