Basic_sine_wave_generator
Dependencies: mbed 4DGL-uLCD-SE mbed-rtos AD5206
main.cpp@2:cc462c2a54f6, 2015-11-27 (annotated)
- Committer:
- taoqiuyang
- Date:
- Fri Nov 27 00:42:38 2015 +0000
- Revision:
- 2:cc462c2a54f6
- Parent:
- 1:fb8f053747d6
- Child:
- 3:bb920a8eb590
early working code for sine wave; ;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
taoqiuyang | 0:52af3c50f548 | 1 | #include "mbed.h" |
taoqiuyang | 1:fb8f053747d6 | 2 | #include "uLCD_4DGL.h" |
taoqiuyang | 1:fb8f053747d6 | 3 | |
taoqiuyang | 1:fb8f053747d6 | 4 | // Objects for devices |
taoqiuyang | 1:fb8f053747d6 | 5 | Serial pc(USBTX, USBRX); |
taoqiuyang | 1:fb8f053747d6 | 6 | uLCD_4DGL lcd(p13, p14, p15); |
taoqiuyang | 0:52af3c50f548 | 7 | AnalogOut aout(p18); |
taoqiuyang | 0:52af3c50f548 | 8 | DigitalOut dout(LED1); |
taoqiuyang | 0:52af3c50f548 | 9 | |
taoqiuyang | 1:fb8f053747d6 | 10 | const double pi = 3.14; |
taoqiuyang | 1:fb8f053747d6 | 11 | float time_interv; |
taoqiuyang | 0:52af3c50f548 | 12 | uint16_t sample = 0; |
taoqiuyang | 1:fb8f053747d6 | 13 | int length_waveform=1000; |
taoqiuyang | 2:cc462c2a54f6 | 14 | uint16_t waveform[1000]; |
taoqiuyang | 0:52af3c50f548 | 15 | |
taoqiuyang | 1:fb8f053747d6 | 16 | int waveform_type=0; |
taoqiuyang | 0:52af3c50f548 | 17 | float freq=2; //Hz |
taoqiuyang | 0:52af3c50f548 | 18 | float amp=1; //Sacle factor, 1=full range |
taoqiuyang | 1:fb8f053747d6 | 19 | float offset=0.5; |
taoqiuyang | 0:52af3c50f548 | 20 | float x; |
taoqiuyang | 0:52af3c50f548 | 21 | |
taoqiuyang | 1:fb8f053747d6 | 22 | void initialize_LCD(){ |
taoqiuyang | 1:fb8f053747d6 | 23 | lcd.baudrate(3000000); |
taoqiuyang | 1:fb8f053747d6 | 24 | lcd.background_color(0); |
taoqiuyang | 1:fb8f053747d6 | 25 | lcd.cls(); |
taoqiuyang | 1:fb8f053747d6 | 26 | |
taoqiuyang | 1:fb8f053747d6 | 27 | lcd.printf("Initializing...\n"); |
taoqiuyang | 1:fb8f053747d6 | 28 | lcd.printf("Fun Generator Demo"); |
taoqiuyang | 1:fb8f053747d6 | 29 | } |
taoqiuyang | 1:fb8f053747d6 | 30 | |
taoqiuyang | 1:fb8f053747d6 | 31 | void generate_waveform_datapoints(){ |
taoqiuyang | 2:cc462c2a54f6 | 32 | float t=0; |
taoqiuyang | 1:fb8f053747d6 | 33 | time_interv=1.0/freq/length_waveform; |
taoqiuyang | 2:cc462c2a54f6 | 34 | |
taoqiuyang | 2:cc462c2a54f6 | 35 | for (int datapoint_counter=0; datapoint_counter<length_waveform; datapoint_counter++){ |
taoqiuyang | 2:cc462c2a54f6 | 36 | x=amp*(cos(2*pi*freq*t)+1); |
taoqiuyang | 2:cc462c2a54f6 | 37 | waveform[datapoint_counter]=(uint16_t) (x*32767); |
taoqiuyang | 2:cc462c2a54f6 | 38 | |
taoqiuyang | 2:cc462c2a54f6 | 39 | aout.write_u16(waveform[datapoint_counter]); |
taoqiuyang | 2:cc462c2a54f6 | 40 | t += time_interv; |
taoqiuyang | 2:cc462c2a54f6 | 41 | |
taoqiuyang | 2:cc462c2a54f6 | 42 | wait(time_interv); |
taoqiuyang | 2:cc462c2a54f6 | 43 | } |
taoqiuyang | 2:cc462c2a54f6 | 44 | } |
taoqiuyang | 2:cc462c2a54f6 | 45 | |
taoqiuyang | 2:cc462c2a54f6 | 46 | void output_waveform_datapoints(){ |
taoqiuyang | 2:cc462c2a54f6 | 47 | |
taoqiuyang | 2:cc462c2a54f6 | 48 | |
taoqiuyang | 2:cc462c2a54f6 | 49 | |
taoqiuyang | 1:fb8f053747d6 | 50 | } |
taoqiuyang | 1:fb8f053747d6 | 51 | |
taoqiuyang | 1:fb8f053747d6 | 52 | |
taoqiuyang | 1:fb8f053747d6 | 53 | |
taoqiuyang | 0:52af3c50f548 | 54 | |
taoqiuyang | 0:52af3c50f548 | 55 | int main(void){ |
taoqiuyang | 1:fb8f053747d6 | 56 | |
taoqiuyang | 1:fb8f053747d6 | 57 | initialize_LCD(); |
taoqiuyang | 1:fb8f053747d6 | 58 | generate_waveform_datapoints(); |
taoqiuyang | 1:fb8f053747d6 | 59 | |
taoqiuyang | 1:fb8f053747d6 | 60 | |
taoqiuyang | 1:fb8f053747d6 | 61 | |
taoqiuyang | 1:fb8f053747d6 | 62 | |
taoqiuyang | 0:52af3c50f548 | 63 | while (1){ |
taoqiuyang | 1:fb8f053747d6 | 64 | |
taoqiuyang | 1:fb8f053747d6 | 65 | generate_waveform_datapoints(); |
taoqiuyang | 2:cc462c2a54f6 | 66 | output_waveform_datapoints(); |
taoqiuyang | 1:fb8f053747d6 | 67 | |
taoqiuyang | 1:fb8f053747d6 | 68 | |
taoqiuyang | 1:fb8f053747d6 | 69 | /*for (float t = 0.0f; t < 1/freq; t += 1/fs) { |
taoqiuyang | 0:52af3c50f548 | 70 | x=amp*(cos(2*pi*freq*t)+1); |
taoqiuyang | 0:52af3c50f548 | 71 | sample=(uint16_t) (x*32767); |
taoqiuyang | 0:52af3c50f548 | 72 | aout.write_u16(sample);; |
taoqiuyang | 0:52af3c50f548 | 73 | wait(1/fs); |
taoqiuyang | 1:fb8f053747d6 | 74 | }*/ |
taoqiuyang | 0:52af3c50f548 | 75 | } |
taoqiuyang | 0:52af3c50f548 | 76 | } |