Problema libreria ESP8266Audio con ESP32

Ciao a tutti,

Sono un novizio di Arduino e sto lavorando con il Freenove ESP32 Starter Kit seguendo il tutorial fornito, ma ho incontrato un problema che non riesco a risolvere.

Quando provo a compilare il programma, ricevo un messaggio di errore che dice che il file "AudioFileSourceSD_MMC.h" non può essere trovato. Cercando però tra i file di questa libreria, è presente.

Questo è il messaggio di errore:

C:\Users\Diego\Documents\Arduino\sketch231_musicaSD\sketch231_musicaSD.ino:5:10: fatal error: AudioFileSourceSD_MMC.h: No such file or directory
    5 | #include "AudioFileSourceSD_MMC.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1

Compilation error: AudioFileSourceSD_MMC.h: No such file or directory

Non ho molta esperienza con Arduino o con la programmazione in C, quindi non sono sicuro di come affrontare questa situazione. Ecco alcuni dettagli aggiuntivi che potrebbero essere utili:

  • La versione del firmware del mio ESP32 è Arduino Espressif ESP32 3.3.1.
  • La versione della libreria che sto usando è ESP8266Audio 1.9.8.

Questo è il codice, copiato dal GitHub del kit:

#include <Arduino.h>
#include <WiFi.h>
#include "FS.h"
#include "SD_MMC.h"
#include "AudioFileSourceSD_MMC.h"
#include "AudioFileSourceID3.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"

#define SD_MMC_CMD 38  //Please do not modify it.
#define SD_MMC_CLK 39  //Please do not modify it.
#define SD_MMC_D0 40   //Please do not modify it.

AudioGeneratorMP3 *mp3;
AudioFileSourceID3 *id3;
AudioOutputI2SNoDAC *out;

AudioFileSourceSD_MMC *file = NULL;

// Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string) {
  (void)cbData;
  Serial.printf("ID3 callback for: %s = '", type);

  if (isUnicode) {
    string += 2;
  }

  while (*string) {
    char a = *(string++);
    if (isUnicode) {
      string++;
    }
    Serial.printf("%c", a);
  }
  Serial.printf("'\n");
  Serial.flush();
}

void setup() {
  WiFi.mode(WIFI_OFF);
  Serial.begin(115200);
  delay(1000);
  SD_MMC.setPins(SD_MMC_CLK, SD_MMC_CMD, SD_MMC_D0);
  if (!SD_MMC.begin("/sdcard", true, true, SDMMC_FREQ_DEFAULT, 5)) {
    Serial.println("Card Mount Failed");
    return;
  }
  Serial.printf("Sample MP3 playback begins...\n");

  audioLogger = &Serial;
  file = new AudioFileSourceSD_MMC("/music/01.mp3");
  id3 = new AudioFileSourceID3(file);
  id3->RegisterMetadataCB(MDCallback, (void *)"ID3TAG");
  //out = new AudioOutputI2S();
  out = new AudioOutputI2SNoDAC();
  out->SetPinout(12, 13, 14);  //Set the audio output pin, Only 14 were used
  out->SetGain(3.5);           //Setting the Volume
  mp3 = new AudioGeneratorMP3();
  mp3->begin(id3, out);
}

void loop() {
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }
}

Fatemi sapere se avete bisogno di ulteriori informazioni.

Grazie in anticipo per l’aiuto!


Nel caso leggiate questo thread un po' di tempo dopo l'apertura, mi sono accorto di aver riportato la versione della libreria sbagliata. Non è la 2.0.0 ma la 1.9.8.

Scusate per il disguido :sweat_smile:

Direi che il tutorial incluso nel kit è obsoleto rispetto alla libreria che viene usata (come del resto accade spesso con questi kit).

La libreria in questione è questa e il file che di dice di non trovare in effetti non c'è perché probabilmente è stato rimosso a partire da qualche versione in poi.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.