Problème avec utilisation carte SD...

Bonjour à tous, J'utilise un Mega 2560 sur lequel est installé un Mega Sensor Shield V2.0 KEYES. Sur ce dernier vient se connecter un écran 1.8" Serial 128X160 SPI TFT LCD Modul + PCB Adapter + SD Socket 4 Arduino. Le brochage du Mega Sensor présente un emplacement réservé à la carde SD (j'ai vérifié la continuité et la bonne concordance des pin entre le 2560 et le Mega sensor et il est Ok). Donc tout semble Ok, sauf que... sauf que je n'arrive pas à utiliser cette foutue carte SD ! Quand je regarde les infos ça et là on dit de laisser le 53 en output pour permettre à la librairie de fonctionner, mais si je prends les indications sur l'écran j'ai CS, MOSI, MISO etSCLK (uniquement pour la partie SD) ; le 53, du coup, je dois le passer en CS ou en MISO ? Si je déclare : const int brocheSDCardSelect=53; //broche utilisee pour selectionner la SD card est-ce bon du coup ? Et dans mon test initialisation de carte :

void InitSDCard () {
  pinMode(50, OUTPUT); // SDCard met la broche 50 (MISO) en sortie
  if (!SD.begin(50)) {
    tft.println("Init SDCard failed");
    return;
  }
  tft.println("Init SDCard done.");

Du coup je me pose la question si ça colle sachant qu'on dit partout que le 53 doit être laissé en output ???? J'ai essayé quasiment tout sans succès (ce qui m'a permis de mettre en avant un défaut de configuration du Mega Sensor qui avait un picot de soudure qui venait fiche le caca par contact avec la prise USB du 2560... un isolant plastique a permis de résoudre ce pb !). Bref ça fait plusieurs jours que je m'arrache les cheveux sur le souci, et là, je craque ! J'aurais besoin de votre aide. Pour compléter l'info, la carte SD est Ok et formatée FAT 16 car 500 Mo. Au s'cours sinon bientôt je crois que je serai vraiment chauve !!! Merci à vous

Oui, tu met 53 partout: lors de la definition de "brocheSDCardSelect" et pour definir la broche en sortie (et dans ton "if" aussi).

Voici pour le branchement:http://www.extremadura-web.es/Blog/wp-content/uploads/2012/11/Esquema-Sd-arduino-mega2.jpgt

Tu peux bien sur alimenter en 5v si tu à une entré 5v sur ton module SD

Houaaaa.... j'arrive enfin à avoir mon ""Init SDCard done." ! Super je te remercie beaucoup... Et le module est alimenté effectivement. Ceci dit, et ma question est peut être complètement idiote du coup, mais quelle est la différence alors entre le 53, soit CS, que l'on définit en 'output' et le 50 qui lui est déclaré MISO soit 'data out' ? Là je ne vois pas trop bien. Si je dois chercher des infos sur ma SD dois-je passer par le 50 ou faut-il que je reste sur le 53 ? Je dois être un peu cucu sur la question mais là ça m'échappe. Pour moi une sortie reste une sortie et là, toujours pour moi, je me retrouve donc avec 2 sorties. Est-ce que c'est parce que une des deux est spécifiquement dédiée à la communication avec la SD alors que l'autre ne sert qu'aux données ??? J'aimerais bien comprendre le fin mot de l'histoire. En tout cas merci beaucoup... j'économiserai qques cheveux !!! Bonne journée

si je ne me trompe pas sur la mega : sck= syncronisation comune au bus spi toujours sur 52 miso= envoi des doné toujours sur 50 mosi=reception des doné toujours sur 51 ss ou cs= selection de l' objet sur le bus avec 53 toujours en output(librairie SD) meme si tu change de broche de selection

tu pourait trés bien selectioné deux carte sd diferentes la premiere sur 53 et la seconde sur 48 par exemple

Bonjour,

Heloderma-kris: tu pourait trés bien selectioné deux carte sd diferentes la premiere sur 53 et la seconde sur 48 par exemple

Attention quand même, la librairie SD "de base" ne gére pas plusieurs cartes SD simultanément ;) Pour cela il faut utiliser directement la librairie SdFatLib.

Pour les lignes d'un port SPI quel qu'il soit : SCK = signal d'horloge pour la synchronisation des lignes MISO/MOSI MOSI = "Master Output Slave Input" -> ligne de transfert de données maitre vers esclave MISO = "Master Input Slave Output" -> ligne de transfert de données esclave vers maitre CS/SS/CE = "Chip Select"/"Slave Select"/"Chip Enable" -> ligne de sélection du périphérique SPI avec qui on veut discuter (LOW = "on parle à toi", HIGH = "ignore ce qu'il se passe")