Paso 7: Explicar el funcionamiento (ADC y DAC PWM)
Para generar datos de voz, dispositivo cliente necesita operación ADC.
ADC acquisite voz analógica de los datos. Y ahorra en búfer.
Y en este proyecto decidir el intervalo de adquisición como 100usec como abajo
// Start acquisition (interval 100usec) trigger_o.period_us(100); trigger_o.write(0.50f);
Entonces adcTickfunc() función será excute cada 100usec.
Ahora tenemos que saber lo que sucederá en esta función.
void adcTickfunc() {# if defined (UDPServer) if (buf_sel) aout.write((float)ad_data_buf1[i]/256*1.32); else aout.write((float)ad_data_buf0[i]/256*1.32); i++; if (i == MAX_BUF_SIZE) i = MAX_BUF_SIZE - 1;# else if (buf_sel == 0) ad_data_buf0[i] = mic.read_u16() >> 4; else ad_data_buf1[i] = mic.read_u16() >> 4; i++; if (i == MAX_BUF_SIZE) { i = 0; toggle = !toggle; if (buf_sel) buf_sel = 0; else buf_sel = 1; send_udp = 1; sent = 1; }#endif}
En modo cliente,
Para generar datos de voz, datos a guardar en el buffer de cada 100usec.
ad_data_buf0[i] = mic.read_u16() >> 4;
Y en modo de servidor,
Para reproducir voz datos, enviará datos para operación PWM.
aout.write((float)ad_data_buf1[i]/256*1.32);