Logo Mon Club Elec

SD Card : Test de l’ouverture et de l’écriture dans un fichier

Les cartes SD sont des supports de stockage très pratiques et très répandus. Elles sont utilisées dans de nombreux appareils, notamment les appareils photo numériques, les téléphones portables et les consoles de jeux. Dans cet article, nous allons nous intéresser à l’ouverture et à l’écriture dans un fichier sur une carte SD. Nous verrons comment tester ces fonctionnalités et quelles sont les considérations à prendre en compte lors de l’utilisation d’une carte SD.

SD Card : Test de l’ouverture et de l’écriture dans un fichier

SD Card : Test de l’ouverture et de l’écriture dans un fichier

1.  Présentation

Ce programme teste l’ouverture et l’écriture d’une valeur dans un fichier de SD card.

Ce programme utilise les fonctionnalités suivantes :

  • Utilise la connexion série vers le PC
  • Utilise le module Ethernet Arduino (uniquement pour le connecteur SD Card)

Ressources utiles associées à ce programme :

  • La librairie Serial – pour les communications séries entre la carte Arduino et l’ordinateur ou d’autres composants
  • La librairie Ethernet – pour se connecter à Internet en utilisant le module Arduino Ethernet
  • La librairie SD – pour utiliser une SD Card

2.  Matériel Nécessaire

2.1  L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.
SD Card : Test de l’ouverture et de l’écriture dans un fichier

2.2  Le matériel suivant pour réaliser le montage associé

  • un module Arduino Ethernet ou tout autre module disposant d’un emplacement pour carte mémoire SD.
SD Card : Test de l’ouverture et de l’écriture dans un fichier
  • une carte mémoire micro-SD
SD Card : Test de l’ouverture et de l’écriture dans un fichier

3.  Instructions de montage

  • La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
  • Le module Ethernet est à enficher broche à broche sur la carte Arduino
    • Connecter broche SCLK du module Ethernet sur la broche 13
    • Connecter broche MISO du module Ethernet sur la broche 12
    • Connecter broche MOSI du module Ethernet sur la broche 11
    • Connecter broche Select Ethernet du module Ethernet sur la broche 10
    • Connecter broche Select SD Card du module Ethernet sur la broche 4
    • Le module Ethernet est compatible avec la carte Mega via le connecteur ICSP

Avant de l’utiliser, il est nécessaire d’initialiser la carte mémoire micro-SD sur le PC en créant un répertoire /monrep et un fichier. test.txt.

4.  Le circuit du montage

SD Card : Test de l’ouverture et de l’écriture dans un fichier

Le schéma du montage à réaliser (cliquer pour agrandir)

5.  Explication du programme

  • Ce programme teste l’existence d’un fichier : si le fichier existe, le répertoire est ouvert et une valeur est écrite en fin de fichier.
  • Le déroulement des opérations est affiché dans un Terminal Série

6.  Mise en oeuvre du programme

6.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d’expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

6.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
SD Card : Test de l’ouverture et de l’écriture dans un fichier
  • La fenêtre « Terminal » s’ouvre alors :
SD Card : Test de l’ouverture et de l’écriture dans un fichier
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :
SD Card : Test de l’ouverture et de l’écriture dans un fichier

6.3  Fonctionnement

Avant de l’utiliser, il est nécessaire d’initialiser la carte mémoire micro-SD sur le PC en créant un répertoire /monrep et un fichier. test.txt.

  • Au lancement, du Terminal Série, les messages des opérations s’affiche. Relancer plusieurs fois le Terminal Série pour voir les valeurs ajoutées dans le fichier.
SD Card : Test de l’ouverture et de l’écriture dans un fichier

7.  Le programme complet en langage Arduino

A copier/coller directement dans l’éditeur Arduino

// Auteur du Programme : X. HINAULT – Tous droits réservés
// Programme écrit le : 12/2011.

// ——- Licence du code de ce programme —–
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include <SD.h> // crée automatiquement un objet racine SD représentant la carte mémoire SD

File myFile; // objet file

char dirName[]=« /monrep »; // tableau de caracteres pour le nom du répertoire

// nom du fichier court (8 caractères maxi . 3 caractères maxi) (dit format DOS 8.3)
char fileName[] = « test.txt »; // tableau de caractères pour le nom du fichier

char pathFile[] = « /monrep/test.txt »; // tableau de caractères pour le nom du fichier

int test; //variable mémorisation résultat renvoyé par fonctions

void setup()
{

  Serial.begin(115200); // utiliser le meme debit coté Terminal Serie

  //—– initialisation de la carte SD —–
  Serial.println(« Initialisation de la SD card… »);

  pinMode(10, OUTPUT); // laisser la broche SS en sortie – obligatoire avec librairie SD

  test=SD.begin(4); // initialisation de la carte SD avec broche 4 en tant que CS – renvoie true/false

  if (test!=true) { // si initialisation n’est pas réussie
    Serial.println(« Echec initialisation! »); // message port Série
  }
  else { // si nitialisation réussie
    Serial.println(« Initialisation reussie ! »); // message port Série
  } // fin si SD.begin

  //—– test de l’existence d’un répertoire

 test=SD.exists(pathFile); // test si le répertoire existe – renvoie true/false

 Serial.print (« Test= »); Serial.println(test);

 if (test!=true) { // si le répertoire n’existe pas

   Serial.println (« Le fichier n’existe pas ! »);

 }
 else { // si le répertoire existe

     Serial.println (« Le fichier existe ! »);

     //SD.remove(pathFile); // efface le fichier  
     //Serial.println (« Fichier efface ! »);

    //—– ouverture du fichier —

    myFile=SD.open(pathFile,FILE_WRITE); // ouvre le fichier en écriture et crée fichier si existe pas

    //Serial.print (« Test= »); Serial.println(test);

     if (myFile!=true) { // si échec ouverture

       Serial.println (« Echec ouverture fichier ! »);

     }

     else { // si ouverture réussie

       Serial.println (« Ouverture fichier reussie ! »);

      myFile.seek(myFile.size()); // positionnement à la fin du fichier

       Serial.println (« Positionnement a la fin du fichier! »);

      myFile.println(); // ajoute un saut de ligne

      myFile.println(« —— Debut nouvel enregistrement ——-« ); // ajoute une ligne

      myFile.println(millis()); // ajoute la ligne au fichier – ici enregistre la valeur de millis

      /*– affiche une nouvelle série de 30 valeur
      for (int i=0; i<30; i++) {

        myFile.println(i); // ajoute la ligne au fichier

      }
      */

       myFile.close(); // fermeture du fichier

       Serial.println (« Fermeture fichier effectuee! »);

       test=SD.exists(pathFile); // test si le fichier existe – renvoie true/false

       Serial.print (« Test= »); Serial.println(test);

       if (test!=true)  { // si fichier existe pas

         Serial.println (« Le fichier existe pas ! »);

       }

       else { // si fichier existe

         Serial.println (« Le fichier existe ! »);

         //— ouverture du fichier en lecture —
          myFile=SD.open(pathFile,FILE_READ); // ouvre le fichier en lecture

         Serial.println (« Ouverture du fichier en lecture »);

         for (int i=0; i<myFile.size(); i++ ) {

           myFile.seek(i); // se positionne à la position i
           Serial.print(char(myFile.peek())); // affiche le caractère courant

         }

       myFile.close(); // fermeture du fichier

       Serial.println (« Fermeture fichier effectuee! »);

       } // fin else si fichier existe

     } // fin else si ouverture répertoire réussie

 }// fin else si répertoire

} // fin setup()  

void loop(){

}
 

Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.