Basic_sine_wave_generator

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

Fork of 4180_proj by ECE4180proj

Files at this revision

API Documentation at this revision

Comitter:
taoqiuyang
Date:
Fri Nov 27 21:31:47 2015 +0000
Parent:
8:3d3652b8109f
Commit message:
debugged triangle wave generation

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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();
     }