diff --git a/README.md b/README.md index 7f37cac..8b9a3ca 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,19 @@ ## Pins +Amplifier: RX -> DIN D8 -> BCLK D4 -> LRC 5V -> Vin GND -> GND +SD Card: +CS -> D1 +MOSI -> D7 +CLK -> D5 +MISO -> D6 + ## Links https://github.com/earlephilhower/ESP8266Audio diff --git a/src/main.cpp b/src/main.cpp index 73e0525..015af81 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,9 +8,19 @@ #include "AudioFileSourceSPIFFS.h" #include "AudioGeneratorMP3.h" #include "AudioOutputI2SNoDAC.h" +#include "AudioFileSourceSD.h" + +#include +#include + +File root; +File mp3File; + +void printDirectory(File dir, int numTabs); AudioGeneratorMP3 *mp3; AudioFileSourceSPIFFS *file; +AudioFileSourceSD *sdFile = NULL; AudioOutputI2S *out; unsigned long lastStart = 0; @@ -19,6 +29,14 @@ const int startDelay = 250; void initMp3File() { file = new AudioFileSourceSPIFFS("/ex2.mp3"); + + File next = root.openNextFile(); + if (!next) { + root = SD.open("/"); + } + if (String(next.name()).endsWith(".mp3")) { + sdFile = new AudioFileSourceSD(next.name()); + } out = new AudioOutputI2S(); mp3 = new AudioGeneratorMP3(); } @@ -56,6 +74,22 @@ void setup() // if you get here you have connected to the WiFi Serial.println("connected...yeey :)"); audioLogger = &Serial; + + + Serial.print("Initializing SD card..."); + + if (!SD.begin(D1)) { + Serial.println("initialization failed!"); + while (1); + } + Serial.println("initialization done."); + + root = SD.open("/"); + + + //printDirectory(root, 0); + + Serial.println("done!"); SPIFFS.begin(); Serial.println("beginning mp3 setup..."); @@ -64,6 +98,29 @@ void setup() } +void printDirectory(File dir, int numTabs) { + while (true) { + + File entry = dir.openNextFile(); + if (! entry) { + // no more files + break; + } + for (uint8_t i = 0; i < numTabs; i++) { + Serial.print('\t'); + } + Serial.print(entry.name()); + if (entry.isDirectory()) { + Serial.println("/"); + printDirectory(entry, numTabs + 1); + } else { + // files have sizes, directories do not + Serial.print("\t\t"); + Serial.println(entry.size(), DEC); + } + entry.close(); + } +} void loop() @@ -72,13 +129,12 @@ void loop() if (digitalRead(D3)==LOW) { unsigned long now = millis(); - Serial.print("LOW"); if (now-lastStart>startDelay) { if (mp3->isRunning()) { mp3->stop(); } initMp3File(); - mp3->begin(file,out); + mp3->begin(sdFile,out); Serial.print("started."); lastStart=now; }