Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 /* Program Example 11.3 Delay / Echo Effect 00002 */ 00003 #include "mbed.h" 00004 AnalogIn Ain(p15); //object definitions 00005 AnalogOut Aout(p18); 00006 AnalogIn delay_pot(p16); 00007 AnalogIn feedback_pot(p17); 00008 Ticker s20khz_tick; 00009 void s20khz_task(void); // function prototypes 00010 #define MAX_BUFFER 14000 // max data samples 00011 signed short data_in; // signed allows positive and negative 00012 unsigned short data_out; // unsigned just allows positive values 00013 float delay=0; 00014 float feedback=0; 00015 signed short buffer[MAX_BUFFER]={0}; // define buffer and set values to 0 00016 int i=0; 00017 00018 //main program start here 00019 int main() { 00020 s20khz_tick.attach_us(&s20khz_task,50); 00021 } 00022 // function 20khz_task 00023 void s20khz_task(void){ 00024 data_in=Ain.read_u16()-0x7FFF; // read data and normalise 00025 buffer[i]=data_in+(buffer[i]*feedback); // add data to buffer data 00026 data_out=buffer[i]+0x7FFF; // output buffer data value 00027 Aout.write_u16(data_out); // write output 00028 if (i>(delay)){ // if delay loop has completed 00029 i=0; // reset counter 00030 delay=delay_pot*MAX_BUFFER; // calculate new delay buffer size 00031 feedback=(1-feedback_pot)*0.9; // calculate feedback gain value 00032 }else{ 00033 i=i+1; // otherwise increment delay counter 00034 } 00035 } 00036
Generated on Sat Sep 10 2022 14:02:21 by
1.7.2