Basic_sine_wave_generator
Dependencies: mbed 4DGL-uLCD-SE mbed-rtos AD5206
Diff: main.cpp
- Revision:
- 9:450d5c8e91f5
- Parent:
- 8:3d3652b8109f
- Child:
- 10:159f38636ed4
--- a/main.cpp Fri Nov 27 20:31:59 2015 +0000 +++ b/main.cpp Fri Nov 27 21:31:47 2015 +0000 @@ -17,15 +17,16 @@ uLCD_4DGL lcd(p13, p14, p15); AnalogOut aout(p18); -// -//Ticker output_trigger; + +DigitalOut led1(LED1); + //-----Global variable used for Func_Gen--------- const double pi = 3.14; float time_interv; int datapoint_counter=0; int length_waveform=100; -uint16_t waveform[10]; +uint16_t waveform[100]; float x; //-----User Specified, change it if needed------- @@ -73,14 +74,15 @@ //------if triangle wave--------- if (waveform_type==2){ - for (int counter=0; counter<length_waveform; counter++){ - if (counter<=length_waveform*duty_cycle){ - x=amp/3.3+offset/3.3; - }else{ - x=-1.0*amp/3.3+offset/3.3; - } + for (int counter=0; counter<length_waveform/2; counter++){ + x=amp/1.65*(2.0*counter/length_waveform-0.5)+offset/3.3; waveform[counter]=(uint16_t) (x*65535); - } + } + + for (int counter=length_waveform/2; counter<length_waveform; counter++){ + waveform[counter]=waveform[length_waveform-counter-1]; + } + } } @@ -102,23 +104,33 @@ } + +void display_on_lod() { + int lcd_counter=0; + while (true) { + lcd.locate(4,4); + lcd.printf("%d",lcd_counter); + lcd_counter++; + } +} + + int main(void){ - waveform_type=1; //0 for sine, + initialize_LCD(); + + waveform_type=0; //0 for sine, freq=1000; //Hz - amp=0.5; //Sacle factor, 1=full range - offset=0.5; - duty_cycle=0.4; + amp=1.65; //Sacle factor, 1=full range + offset=1.65; + duty_cycle=0.2; time_interv=1.0/freq/length_waveform; - initialize_LCD(); generate_waveform_datapoints(); - - //-----output waveform-------- - //output_trigger.attach(&output_waveform_datapoints_timer_ISR, time_interv); + while (1){ output_waveform_datapoints(); }