Étape 7: Expliquez le fonctionnement (ADC & DAC PWM)
Pour générer des données vocales, périphérique Client besoin d’opération de l’ADC.
ADC acquisite voix analogique des données. Et ils permettra d’économiser de la mémoire tampon.
Et dans ce projet, je décide l’intervalle d’acquisition comme 100usec comme ci-dessous
// Start acquisition (interval 100usec) trigger_o.period_us(100); trigger_o.write(0.50f);
Puis adcTickfunc() fonction sera excute toutes 100usec.
Maintenant, il faut savoir ce qui se passera dans cette fonction.
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 mode Client,
Pour générer des données vocales, données seront enregistrer dans la mémoire tampon de chaque 100usec.
ad_data_buf0[i] = mic.read_u16() >> 4;
Et en mode serveur,
Pour lire les données de voix, données enverra au fonctionnement du PWM.
aout.write((float)ad_data_buf1[i]/256*1.32);