View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

SD Card : Afficher le contenu de la carte mémoire micro SD

Par X. HINAULT - Page créée le : 16/2/2012.

1.  Présentation

Ce programme lit et affiche dans le Terminal Série la liste des fichiers et répertoires présents sur une 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 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.

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.
  • une carte mémoire micro-SD

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

Pour ce programme, on pourra au préalable créer des fichiers et répertoires sur la SD-Card sur son PC. Un fois fait, on pourra l'utiliser avec le programme décrit ici.

4.  Le circuit du montage

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

5.  Explication du programme

  • Ce programme initialise la SD Card puis lit le contenu du répertoire : tant qu'un contenu existe il est affiché. Si le contenu correspond à un fichier, sa taille est affichée.
  • 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 ».
  • La fenêtre « Terminal » s'ouvre alors :
  • 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 :

6.3  Fonctionnement

Pour ce programme, on pourra au préalable créer des fichiers et répertoires sur la SD-Card sur son PC. Un fois fait, on pourra l'utiliser avec le programme décrit ici.

  • Au lancement, du Terminal Série, le contenu de la SD-Card s'affiche, répertoires et fichiers.

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 : 02/2012.

// ------- 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/>.


//-- ce programme lit le contenu de la SD Card et l'affiche dans le Terminal Serie
// dérivé de l'exemple listFile des exemples fournis pour la librairie SD

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

File myDir; // objet file

boolean test=false;

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

  //----- affiche le contenu du répertoire

  myDir = SD.open("/"); // ouvre la SD Card à la racine

  afficheContenu(myDir, 0); // affiche contenu d'un répertoire avec 0 tab

  Serial.println("Operation Terminee!");

  } // fin si initialisation réussie

} // fin setup()  

void loop(){



}


void afficheContenu(File dir, int numTabs) { // la fonctin reçoit le
rép et le décalage tab

   while(true) { // tant que vrai = crée une "loop" qui séxécute tant
que contenu // la sortie se fait par break;

     File entry =  dir.openNextFile(); // ouvre le fichier ou
repertoire suivant

     if (! entry) { // si aucun nouveau fichier /repertoire

       //Serial.println("** pas d'autre fichier ou repertoires**");
       entry.close();
       break; // sort de la fonction

     } // fin si aucun nouveau fichier / répertoire

     // affiche le nombre de tab voulu - 0 si racine, 1 si sous Rép, 2
si sous-sous rép, etc.. for (int i=0; i<numTabs; i++) {
       Serial.print('\t');
     }

     Serial.print(entry.name()); // affiche le nom du fichier/repertoire

     if (entry.isDirectory()) { // si le fichier est un répertoire
       Serial.println("/"); // affiche un slash
       afficheContenu(entry, numTabs+1); // affiche le contenu en
décalant d'un tab } // fin si le fichier est un répertoire

     else { // sinon affiche la taille - les fichiers ont une taille,
pas les répertoires // files have sizes, directories do not
       Serial.print("\t\t"); // affiche de Tab de décalé
       Serial.print(entry.size(), DEC); // affiche la taille
       Serial.println(" octets"); // affiche la taille

     } // fin sinon = si pas un rép

   } // fin while(true)
   entry.close();

} // fin fonction