Проблема с чтением SD карты после использования библиотеки TMRpcm

dangeon_mASSter
Offline
Зарегистрирован: 18.02.2021

Собрал самодельный SD шилд, подключил по этой схеме:7aab82e1ca40485a5f0f7b596cc2e0c6.png

залил этот код, всё работало:

/*
SD card read/write

Этот пример показывает как читать и писать данные на и из файла на SD карточке
Схема подключения
* SD карточка подсоеденина к SPI шине:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10

создано Ноябрь 2010
David A. Mellis
обновлено 2 Декабря 2010
Tom Igoe
и переведено в Марте 2011
Gleb Devyatkin
Этот пример кода - народное достояние.

*/

#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(10, OUTPUT);

  if (!SD.begin(10)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // открываем файл. заметте, что только один файл может быть открыт за раз,
  // поэтому вы должны закрыть этот, чтобы открыть другой.
  myFile = SD.open("test.txt", FILE_WRITE);

  // если файл нормально открылся, запишем в него:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // закрываем файл:
    myFile.close();
    Serial.println("done.");
  } else {
    // а если он не открылся, то печатаем сообщение об ошибке:
    Serial.println("error opening test.txt");
  }

  // откроем файл снова, для чтения:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // читаем из файла, пока не достигнем конца файла:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // закрываем файл:
    myFile.close();
  } else {
    // а если не открылся, то пишем об ошибке:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
  // больше делать нечего, но тут мог бы быть ваш код
}

дальше подключил DO вместо 12 в 4 порт ардуины, решил воспроизвести аудиофайл wav формата. подключил динамик и залил тестовый код: 

#include <SD.h>                      // need to include the SD library
//#define SD_ChipSelectPin 53  //example uses hardware SS pin 53 on Mega2560
#define SD_ChipSelectPin 4  //using digital pin 4 on arduino nano 328, can use other pins
#include <TMRpcm.h>           //  also need to include this library...
#include <SPI.h>

TMRpcm tmrpcm;   // create an object for use in this sketch


void setup(){

  tmrpcm.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc

  Serial.begin(9600);
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
    Serial.println("SD fail");  
    return;   // don't do anything more if not
  }
  tmrpcm.play("music"); //the sound file "music" will play each time the arduino powers up, or is reset
}



void loop(){  

  if(Serial.available()){    
    if(Serial.read() == 'p'){ //send the letter p over the serial monitor to start playback
      tmrpcm.play("music");
    }
  }

}

на выходе получаю "SD fail". залил первый код, предварительно правило подключив всё по первой схеме. на выходе initialization failed! Произвёл те же манипуляции, с другой ардуиной нано и ситуация точь в точь повторилась. проблема точно не в переходнике или плохих контактах, возможно что-то не так с библиотекой TMRpcm, так как до её использования SD карта читалась, а после - нет. компьютер SD карту видит и спокойно читает и записывает на неё данные. в чём может быть быть проблема?

dangeon_mASSter
Offline
Зарегистрирован: 18.02.2021

Ошибочка: cs во втором случае подключил не 10, а в 4

__Alexander
Offline
Зарегистрирован: 24.10.2012

Написано же, используется аппаратный SPI, потому пины MOSI, MISO, SCK нельзя никуда, как кроме туда куда написано. )) Вот CS можно перекидывать.

dangeon_mASSter
Offline
Зарегистрирован: 18.02.2021

вот я голова дурная, с пинами напутал, всё заработало, спасибо