Echec initialisation! Shield MémoireV2

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

Echec initialisation! Shield MémoireV2

Message non lude Serime » Jeu 27 Fév 2014 10:29

Bonjours, voilà mon problème:
J'ai lancé ce programme, avec ma arduino Uno et un Shield MémoireV2
Code: Tout sélectionner
// 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(9600); // 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

  delay(1000);
 
  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(){



}


Et le moniteur série m'envois sa:
Initialisation de la SD card...
Echec initialisation!
Test=0
Le fichier n'existe pas !


J'ai bien mis une carte SD dans le lecteur et pourtant je ne trouve aucune solution.
Serime
 
Messages: 3
Inscription: Jeu 27 Fév 2014 10:13

Re: Echec initialisation! Shield MémoireV2

Message non lude Florian » Jeu 27 Fév 2014 16:32

Pouvez vous précisez ce que vous attendez de ce sketch, s'il vous plait?
Quel but recherchez vous?
Car la réponse que donne le moniteur est en concordance avec le programme donné.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Re: Echec initialisation! Shield MémoireV2

Message non lude Serime » Jeu 27 Fév 2014 16:59

Je sais que c'est bien se que le programme m’envoie mais je ne comprend pas pourquoi, la communication échoue...
C'est pareil avec l’exemple du logiciel Arduino dont le moniteur série envoi:
Initializing SD card...initialization failed. Things to check:
* is a card is inserted?
* Is your wiring correct?
* did you change the chipSelect pin to match your shield or module?

Et pourtant une carte SD est bien mise dans le lecteur, il n'y a pas de câblage a ma connaissance a faire, et j'ai bien la broche 10 comme il faut pour les cartes arduino uno...
Donc je ne comprend pas pourquoi sa ne veut pas marcher, faut t-il faire des manipulations préalable ou autre?
Et merci de vouloir m'aider, car c'est vrai que je n'était pas clair sur se que je recherchez.
Serime
 
Messages: 3
Inscription: Jeu 27 Fév 2014 10:13

Re: Echec initialisation! Shield MémoireV2

Message non lude Florian » Ven 28 Fév 2014 10:30

Si le shield ne communique pas et cela avec n'importe quel sketch prévu pour ça, il est possible qu'un élément mal soudé ou mal incorporé soit à l'origine du problème. Notamment au niveau du slot de la card SD.

Pouvez vous vérifier les soudures? Surtout celle du slot SD, il y a deux petites pistes totalement à droite de ce composant. Elles doivent être soudées séparement, si il y a un pont entre il se peut qu'il soit à l'origine du problème.
Vous pouvez également nous poster des photos nettes du shield recto/verso si vous n’êtes pas certain.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Re: Echec initialisation! Shield MémoireV2

Message non lude Serime » Ven 28 Fév 2014 21:38

Voilà, désolé pour la qualité, et encore merci de m'aider car je suis en 1erSTI2DSIN et je connais absolument rien au soudure...
IMG_20140228_203518.jpg
Arduino face
IMG_20140228_203518.jpg (273.63 Kio) Vu 4518 fois
IMG_20140228_203543.jpg
Arduino dos
IMG_20140228_203543.jpg (362.89 Kio) Vu 4518 fois
Serime
 
Messages: 3
Inscription: Jeu 27 Fév 2014 10:13

Re: Echec initialisation! Shield MémoireV2

Message non lude Laetitia » Lun 3 Mar 2014 10:51

Bonjour,

La librairie SD est basée sur la librairie SPI. La fonction SD.begin() initialise la carte SD en spécifiant la broche qui va signaler à la carte SD qu'on veut lui parler (Il s'agit de la broche SS ou CS, "Slave Select / Chip Select", voir ici pour plus d'explications sur le fonctionnement du bus SPI).

Dans votre code, vous configurez cette broche SS sur la pin 4 de l'Arduino :

Code: Tout sélectionner
test=SD.begin(4); // initialisation de la carte SD avec broche 4 en tant que CS - renvoie true/false

Le branchement de la carte SD n'a pas changé depuis la V1 : SS est toujours situé sur la pin 10, votre test en l'état actuel ne peut renvoyer qu'un résultat "false".

SD.begin() sans argument initialise la carte SD avec la valeur par défaut, soit la ligne SS sur la pin 10. Il serait préférable de le laisser en l'état ;)
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse


Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron