Auto Analog Audio v1.50.0
TMRh20 2020 - Automatic DAC, ADC & Timers on Arduino Due
Loading...
Searching...
No Matches
NRF52_PDM_PWMTest.ino

For Arduino XIAO 52840 Sense

Recording (pin A0) and playback (pin 5)

This example demonstrates recording and playback on a single device using PDM microphone and PWM output

AutoAnalog aaAudio;
// REQUIRES MBed Enabled Core for NRF52 (XIAO 52840 Sense)
void setup() {
//Startup the PDM Microphone and PWM(pseudo DAC) on pin 5
aaAudio.begin(1, 1);
aaAudio.autoAdjust = 0;
aaAudio.adcBitsPerSample = 16; // 16-bit audio at 16khz is the default on NRF52 and cannot be modified currently (in progress)
aaAudio.dacBitsPerSample = 16;
aaAudio.setSampleRate(16000);
}
void loop() {
aaAudio.getADC(320); // Get 320 Samples from the ADC
for (int i = 0; i < 320; i++) { // Copy them into the DAC Buffer and change from signed to unsigned ( + 0x8000)
aaAudio.dacBuffer16[i] = (uint16_t)(aaAudio.adcBuffer16[i] + 0x8000);
}
aaAudio.feedDAC(0,320); // Feed the DAC with the ADC data
}
uint8_t dacBitsPerSample
void getADC(uint32_t samples=MAX_BUFFER_SIZE)
uint16_t adcBuffer16[MAX_BUFFER_SIZE]
uint16_t dacBuffer16[MAX_BUFFER_SIZE]
void setSampleRate(uint32_t sampRate=0, bool stereo=true)
void feedDAC(uint8_t dacChannel=0, uint32_t samples=MAX_BUFFER_SIZE, bool startInterrupts=false)
uint8_t adcBitsPerSample
void begin(bool enADC, bool enDAC)