Basic_sine_wave_generator

Dependencies:   mbed 4DGL-uLCD-SE mbed-rtos AD5206

Committer:
taoqiuyang
Date:
Fri Nov 27 00:35:09 2015 +0000
Revision:
1:fb8f053747d6
Parent:
0:52af3c50f548
Child:
2:cc462c2a54f6
Basic_waveform_gen

Who changed what in which revision?

UserRevisionLine numberNew 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 1:fb8f053747d6 14 float 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 1:fb8f053747d6 32 time_interv=1.0/freq/length_waveform;
taoqiuyang 1:fb8f053747d6 33 for (float t = 0.0f; t < 1/freq; t += time_interv) {
taoqiuyang 1:fb8f053747d6 34 x=amp*(cos(2*pi*freq*t)+1);
taoqiuyang 1:fb8f053747d6 35 sample=(uint16_t) (x*32767);
taoqiuyang 1:fb8f053747d6 36 aout.write_u16(sample);;
taoqiuyang 1:fb8f053747d6 37 wait(time_interv);
taoqiuyang 1:fb8f053747d6 38 }
taoqiuyang 1:fb8f053747d6 39 }
taoqiuyang 1:fb8f053747d6 40
taoqiuyang 1:fb8f053747d6 41
taoqiuyang 1:fb8f053747d6 42
taoqiuyang 0:52af3c50f548 43
taoqiuyang 0:52af3c50f548 44 int main(void){
taoqiuyang 1:fb8f053747d6 45
taoqiuyang 1:fb8f053747d6 46 initialize_LCD();
taoqiuyang 1:fb8f053747d6 47 generate_waveform_datapoints();
taoqiuyang 1:fb8f053747d6 48
taoqiuyang 1:fb8f053747d6 49
taoqiuyang 1:fb8f053747d6 50
taoqiuyang 1:fb8f053747d6 51
taoqiuyang 0:52af3c50f548 52 while (1){
taoqiuyang 1:fb8f053747d6 53
taoqiuyang 1:fb8f053747d6 54
taoqiuyang 1:fb8f053747d6 55 generate_waveform_datapoints();
taoqiuyang 1:fb8f053747d6 56
taoqiuyang 1:fb8f053747d6 57
taoqiuyang 1:fb8f053747d6 58 /*for (float t = 0.0f; t < 1/freq; t += 1/fs) {
taoqiuyang 0:52af3c50f548 59 x=amp*(cos(2*pi*freq*t)+1);
taoqiuyang 0:52af3c50f548 60 sample=(uint16_t) (x*32767);
taoqiuyang 0:52af3c50f548 61 aout.write_u16(sample);;
taoqiuyang 0:52af3c50f548 62 wait(1/fs);
taoqiuyang 1:fb8f053747d6 63 }*/
taoqiuyang 0:52af3c50f548 64 }
taoqiuyang 0:52af3c50f548 65 }