Nikolay Sergeev
/
Nucleo_ADC_microphone
Попытка работы с микрофоном
Revision 0:5c44ff47ac5c, committed 2014-09-27
- Comitter:
- Sergeev
- Date:
- Sat Sep 27 15:17:51 2014 +0000
- Commit message:
- ??????? ?????? ? ??????????
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 5c44ff47ac5c main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Sep 27 15:17:51 2014 +0000 @@ -0,0 +1,47 @@ +#include "mbed.h" + +#define MAX_QUEUE 512 // Indexed from 0 to 511 + +AnalogOut speaker(PA_4); // DAC for the speaker/output +AnalogIn mic(A2); // ADC for the microphone/input +//AnalogIn pot(p20); // ADC for the pot + +int main() +{ + int queue[MAX_QUEUE]; // Will be a circular buffer + + int ii = 0; // Queue write position + int jj = 0; // Q read position + int offset = 0; // Delay (number of samples) + int oo; // The analogue data read or written + + while(1) // For ever + { + oo = mic.read_u16() - 32767; // Read ADC and remove DC offset + + queue[ii] = oo; // Add sample to queue + + jj = ii - offset; // Calculate playback position + + if (jj < 0) jj = jj + MAX_QUEUE;// If queue pointer is negative, wrap it around. + + ii = (ii + 1) % MAX_QUEUE; // Next position in the circular queue + + if (ii == 0) // Read the potentiometer + { + offset = MAX_QUEUE * 32767 / 65535; // Scale the reading to fit the queue + + if (offset >= MAX_QUEUE) offset = MAX_QUEUE - 1; // Limit the upper value + } + + oo = oo + queue[jj]; // Add zero referenced signals: input + delayed_input + + oo = oo + 32767; // Restore the DC Offset. + + speaker.write_u16(oo); // DAC output + //printf(); + + if (!(ii % 16)) printf("oo = %5d | ii = %5d | jj = %5d | offset = %5d \n\r", oo, ii, jj, offset); + // FOR DEBUGGING if (!(ii % 16)) printf("oo = %5d | ii = %5d | jj = %5d | offset = %5d \n\r", oo, ii, jj, offset); + } +} \ No newline at end of file
diff -r 000000000000 -r 5c44ff47ac5c mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Sep 27 15:17:51 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file