70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
#include "boards_pinout.h"
|
|
#include "audio_utils.h"
|
|
#include "Audio.h"
|
|
#include <SPIFFS.h>
|
|
#include "es7210.h"
|
|
#include <driver/i2s.h>
|
|
|
|
|
|
#ifdef HAS_I2S
|
|
|
|
Audio audio;
|
|
|
|
namespace AUDIO_Utils {
|
|
|
|
void setup() {
|
|
audio.setPinout(DAC_I2S_BCK, DAC_I2S_WS, DAC_I2S_DOUT);
|
|
audio.setVolume(21);
|
|
}
|
|
|
|
bool setupCoder() {
|
|
uint32_t ret_val = ESP_OK;
|
|
|
|
Wire.beginTransmission(ES7210_ADDR);
|
|
uint8_t error = Wire.endTransmission();
|
|
if (error != 0) {
|
|
Serial.println("ES7210 address not found"); return false;
|
|
}
|
|
|
|
audio_hal_codec_config_t cfg = {
|
|
.adc_input = AUDIO_HAL_ADC_INPUT_ALL,
|
|
.codec_mode = AUDIO_HAL_CODEC_MODE_ENCODE,
|
|
.i2s_iface =
|
|
{
|
|
.mode = AUDIO_HAL_MODE_SLAVE,
|
|
.fmt = AUDIO_HAL_I2S_NORMAL,
|
|
.samples = AUDIO_HAL_16K_SAMPLES,
|
|
.bits = AUDIO_HAL_BIT_LENGTH_16BITS,
|
|
},
|
|
};
|
|
|
|
ret_val |= es7210_adc_init(&Wire, &cfg);
|
|
ret_val |= es7210_adc_config_i2s(cfg.codec_mode, &cfg.i2s_iface);
|
|
ret_val |= es7210_adc_set_gain(
|
|
(es7210_input_mics_t)(ES7210_INPUT_MIC1 | ES7210_INPUT_MIC2),
|
|
(es7210_gain_value_t)GAIN_6DB);
|
|
ret_val |= es7210_adc_ctrl_state(cfg.codec_mode, AUDIO_HAL_CTRL_START);
|
|
return ret_val == ESP_OK;
|
|
|
|
}
|
|
|
|
void playMP3(const String& filename) {
|
|
bool findMp3 = false;
|
|
findMp3 = audio.connecttoFS(SPIFFS, filename.c_str());
|
|
if (findMp3) {
|
|
audio.setVolume(21);
|
|
while (audio.isRunning()) {
|
|
audio.loop();
|
|
// delay(3);
|
|
}
|
|
/*audio.setVolume(0);
|
|
delay(10);
|
|
audio.stopSong();
|
|
delay(50);*/
|
|
//audio.stop();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#endif |