#include "AudioTools.h" #include "AudioLibs/I2SCodecStream.h" AudioInfo info(44100, 1, 16); //Sample Rate - Channels - Bits per Sample DriverPins my_pins; //Driver API for codec AudioBoard board(&AudioDriverES8388, my_pins); //Definition for audio board pins and an audio driver I2SCodecStream out(board); //Provide a board for the I2S stream CsvOutput Serial_out(Serial); // ASCII output stream StreamCopy copier_output(Serial_out, out); SineWaveGenerator sineWave(32000); GeneratedSoundStream sound(sineWave); StreamCopy copier(out, sound); unsigned long lastTime; void setup() { // Setup logging Serial.begin(115200); delay(2000); AudioLogger::instance().begin(Serial, AudioLogger::Info); LOGLEVEL_AUDIODRIVER = AudioDriverInfo; // Setup pins //I2C codec pins: SCL, SDA, PORT (ES8388 I2C Address) my_pins.addI2C(audio_driver::PinFunction::CODEC, 4, 3, 0x20, 100000, Wire); //I2S pins: MCLK (master clock), BCLK/SCLK (bit or serial clock), WS/LRCLK (word select), SDOUT (data out), SDIN (data in) my_pins.addI2S(audio_driver::PinFunction::CODEC, 14, 36, 8, 18, 15); //Start I2S & CODEC Serial.println("starting I2S..."); CodecConfig cfg; //No output to codec cfg.output_device = DAC_OUTPUT_NONE; //Mic input from adc channel 1 cfg.input_device = ADC_INPUT_LINE1; //Set all left format for I2S cfg.i2s.fmt = I2S_LEFT; //Bits per sample (16 bits) cfg.i2s.bits = BIT_LENGTH_16BITS; //Sample Rate (44.1 kHz) cfg.i2s.rate = RATE_44K; board.begin(cfg); auto config = out.defaultConfig(); config.copyFrom(info); delay(1000); Serial.println("Initializing..."); out.begin(config); sineWave.begin(info, N_B4); Serial_out.begin(info); //lastTime = millis(); } void loop() { //copier.copy(); copier_output.copy(); // unsigned long currentTime = millis(); // if (currentTime - lastTime < 1000) { // lastTime = currentTime; // Serial.println("Did some work"); // } }