Senior Design: Sound Monitor / 4951

Dependencies:   LCD_fonts SPI_TFT_ILI9341 CMSIS_DSP_401_without_cm4 mbed-src SDFileSystem wavfile

Revision:
3:7edb43f86069
Parent:
2:afdb1aaa7608
Child:
4:e1ec41710eb4
diff -r afdb1aaa7608 -r 7edb43f86069 main.cpp
--- a/main.cpp	Sat Dec 12 21:13:39 2015 +0000
+++ b/main.cpp	Sat Dec 12 21:43:03 2015 +0000
@@ -7,8 +7,18 @@
 #include "Arial24x23.h"
 #include "arm_math.h" 
 #define num 128
-//AnalogIn analogValue(A2);
-DigitalIn bt(PC_8);
+//AnalogIn ain1(PC_6);
+//AnalogIn ain2(PC_7);
+//AnalogIn ain3(PC_8);
+//AnalogIn ain4(PC_9);
+//AnalogIn ain5(PB_15);
+
+
+DigitalIn ain1(PC_9);
+DigitalIn ain2(PB_15);
+DigitalIn ain3(PC_7);
+DigitalIn ain4(PC_6);
+DigitalIn ain5(PC_8);
 
 /** External Input and Output buffer Declarations for FFT Bin Example **/ 
 //static float32_t testInput_f32_10khz[num]; 
@@ -64,7 +74,7 @@
 
 int main()
 {    
-//    arm_cfft_radix2_instance_f32 S; 
+/*//    arm_cfft_radix2_instance_f32 S; 
     int stage=0;
     int pu, pd, pl, pr, ps;
     TFT.claim(stdout);      // send stdout to the TFT display
@@ -72,15 +82,29 @@
     TFT.set_orientation(2);       // comment out = "||"   include = "="
     TFT.background(Black);    // set background to black
     TFT.foreground(White);    // set chars to white
+    TFT.cls();                // clear the screen*/
+    
+//      arm_cfft_radix2_instance_f32 S; 
+    int stage=0;
+    int menu=0;
+    float32_t mean=0; 
+    float32_t mse=0;
+    float32_t st=0;
+  //  int pu, pd, pl, pr, ps;
+    TFT.claim(stdout);      // send stdout to the TFT display
+    TFT.claim(stderr);      // send stderr to the TFT display
+    TFT.set_orientation(2);       // comment out = "||"   include = "="
+    TFT.background(Black);    // set background to black
+    TFT.foreground(White);    // set chars to white
     TFT.cls();                // clear the screen
     
+    
+    
     while(1)
-    {   TFT.cls();
-        TFT.background(Black);
- 
+    {   int pu, pd, ps; 
+
         if (stage==0)   //menu
-        {   int menu=0;
-            TFT.cls();
+        {   
             TFT.set_font((unsigned char*) Arial24x23);
             TFT.locate(20,60);
             printf("Configuration");
@@ -95,169 +119,230 @@
             printf("   Return");
         
             if (menu==0)    //Configuration
-            {   pu=0; pd=0; pl=0; pr=0; ps=0;
-                TFT.rect(15,55,220,85,GreenYellow);
+            {   TFT.rect(15,55,220,85,Green);
                 TFT.rect(15,105,220,135,Black);
-                ps=1;
-                if (pd==1)  {wait(1);   menu=1;}
-                if (ps==1)  {wait(1);   stage=1;}
+                pu = ain1.read(); 
+                pd = ain2.read(); 
+                ps = ain3.read(); 
+                if (pd==1)  {wait(0.5); menu=1;}
+                if (ps==1)  {wait(0.5); TFT.cls();  stage=1;}
             }
         
             if (menu==1)    //waveform
-            {   pu=0; pd=0; pl=0; pr=0; ps=0;
+            {   
                 TFT.rect(15,55,220,85,Black);   
-                TFT.rect(15,105,220,135,GreenYellow);
+                TFT.rect(15,105,220,135,Green);
                 TFT.rect(15,155,220,185,Black);
-                pd=1;
-                if (pu==1)  {wait(1);   menu=0;}
-                if (pd==1)  {wait(1);   menu=2;}
-                if (ps==1)  {wait(1);   stage=2;}
+                pu = ain1.read(); 
+                pd = ain2.read(); 
+                ps = ain3.read(); 
+                if (pu==1)  {wait(0.5); menu=0;}
+                if (pd==1)  {wait(0.5); menu=2;}
+                if (ps==1)  {wait(0.5); TFT.cls();  stage=2;}
             }  
 
             if (menu==2)    //log
-            {   pu=0; pd=0; pl=0; pr=0; ps=0;
+            {   
                 TFT.rect(15,105,220,135,Black);   
-                TFT.rect(15,155,220,185,GreenYellow);
+                TFT.rect(15,155,220,185,Green);
                 TFT.rect(15,255,220,285,Black);
-                ps=1;
-                if (pu==1)  {wait(1);   menu=1;}
-                if (pd==1)  {wait(1);   menu=3;}
-                if (ps==1)  {wait(1);   stage=3;}
+                pu = ain1.read(); 
+                pd = ain2.read(); 
+                ps = ain3.read(); 
+                if (pu==1)  {wait(0.5); menu=1;}
+                if (pd==1)  {wait(0.5); menu=3;}
+                if (ps==1)  {wait(0.5); TFT.cls();  stage=3;}
             }
         
             if (menu==3)    //return
-            {   pu=0; pd=0; pl=0; pr=0; ps=0;
+            {   
                 TFT.rect(15,155,220,185,Black);   
-                TFT.rect(15,255,220,285,GreenYellow);
-                if (pu==1)  {wait(1);   menu=0;}
-                if (ps==1)  {wait(1);   stage=3;}
-            }
+                TFT.rect(15,255,220,285,Green);
+                pu = ain1.read(); 
+                pd = ain2.read(); 
+                ps = ain3.read(); 
+                if (pu==1)  {wait(0.5); menu=2;}
+                if (ps==1)  {wait(0.5); TFT.cls();  stage=3;}       //  main return...
+            }            
         }
         
         if (stage==1)   //Configuration
-        {   TFT.cls();
-            int i, j;
+        {   
+            int i=0;
+            int j=0;
+            int ia, ib, ja, jb;
+            int config=0;
             TFT.set_font((unsigned char*) Arial24x23);
             TFT.locate(20,60);
             printf("SET PERIOD");
             TFT.rect(15,55, 220,85,Red);
+            TFT.locate(68,150);
+            TFT.printf("Hr    Min");
+
             TFT.set_font((unsigned char*) Arial12x12);
             TFT.locate(40,270);
             printf("Set");
-            TFT.set_font((unsigned char*) Arial12x12);
             TFT.locate(165,270);
             printf("Return");
-                    
-            pu=0; pd=0; pl=1; pr=0; ps=0;
-            i=3;    j=38;
-            while (ps==0)
-            {   TFT.set_font((unsigned char*) Arial12x12);
-                TFT.locate(20,130);
-                TFT.printf("  %i          %i", i-1, j-1);
+            TFT.rect(24,145, 64,175,Olive);  //Cyan
+            TFT.rect(119,145,159,175,Olive);
+            TFT.rect(15,265,85,285,Olive);  //Green
+            TFT.rect(150,265,220,285,Olive); 
+                
+            while (stage==1)
+            {   ia=i-1;     if (i==0) ia=23;
+                ib=i+1;     if (i==23) ib=0;
+                ja=j-1;     if (j==0) ja=59;
+                jb=j+1;     if (j==59) jb=00;
+                
                 TFT.set_font((unsigned char*) Arial24x23);
-                TFT.locate(20,150);
-                TFT.printf(" %i Hr %i Min", i, j);
+                TFT.locate(26,150);
+                if (i<10)  TFT.printf("0%i", i);
+                else if (i>=10)  TFT.printf("%i", i);
+                TFT.locate(120,150);
+                if (j<10)  TFT.printf("0%i", j);
+                else if (j>=10)  TFT.printf("%i", j);
+                
                 TFT.set_font((unsigned char*) Arial12x12);
-                TFT.locate(20,180);
-                TFT.printf("  %i          %i", i+1, j+1);  
-                pu=0; pd=0; pl=1; pr=0; ps=0;
-                if (pl==1)
-                {   TFT.rect(20,145, 58,175,Yellow);
-                    TFT.rect(120,145,158,175,Blue);
-                    pu=1;
-                    if (i>05)   i=0; 
-                    if (pu==1)  {wait(1);   i=i+1;  }
-                    if (pd==1)  {wait(1);   i=i-1;  }
+                TFT.locate(40,130);
+                if (ia<10)  TFT.printf("0%i", ia);
+                else if (ia>=10)  TFT.printf("%i", ia);
+                TFT.locate(40,180);
+                if (ib<10)  TFT.printf("0%i", ib);
+                else if (ib>=10)  TFT.printf("%i", ib);
+                TFT.locate(135,130);
+                if (ja<10)  TFT.printf("0%i", ja);
+                else if (ja>=10)  TFT.printf("%i", ja);
+                TFT.locate(135,180);
+                if (jb<10)  TFT.printf("0%i", jb);
+                else if (jb>=10)  TFT.printf("%i", jb);
+                                
+                if  (config==0)
+                {   TFT.rect(24,145, 64,175,Green);  //Cyan
+                    TFT.rect(119,145,159,175,Olive);       
+                    pu = ain1.read(); 
+                    pd = ain2.read(); 
+                    ps = ain3.read(); 
+                    if (pu==1)  {wait(0.5);   i=ib;  }
+                    if (pd==1)  {wait(0.5);   i=ia;  }
+                    if (ps==1)  {wait(0.5);   config=1;}
                 }
-                pu=0; pd=0; pl=0; pr=1; ps=0;   
-                if (pr==1)
-                {   TFT.rect(20,145, 58,175,Blue);
-                    TFT.rect(120,145,158,175,Yellow);
-                    pu=1;
-                    if (j>60)    j=0;
-                    if (pu==1)  {wait(1);   j=j+1;  }
-                    if (pd==1)  {wait(1);   j=j-1;  }
+                if  (config==1)
+                {   TFT.rect(24,145, 64,175,Olive);  //Cyan
+                    TFT.rect(119,145,159,175,Green);
+                    pu = ain1.read(); 
+                    pd = ain2.read(); 
+                    ps = ain3.read(); 
+                    if (pu==1)  {wait(0.5);   j=jb;  }
+                    if (pd==1)  {wait(0.5);   j=ja;  }
+                    if (ps==1)  {wait(0.5);   config=2;}
                 }
-             //   ps=1;
-            }
-            
-            pu=0; pd=0; pl=1; pr=0; ps=0;
-            while (ps==0)
-            {   if (pl==1)
-                {   TFT.rect(15,265,85,285,GreenYellow);
-                    TFT.rect(150,265,220,285,Black); 
-                    wait(1);
+                if  (config==2)
+                {   TFT.rect(24,145, 64,175,Olive);  //Cyan
+                    TFT.rect(119,145,159,175,Olive);
+                    TFT.rect(15,265,85,285,Green);  //Green
+                    TFT.rect(150,265,220,285,Olive); 
+                    pu = ain1.read(); 
+                    pd = ain2.read(); 
+                    ps = ain3.read(); 
+                    if (pu==1)  {wait(0.5);   config=2;  }
+                    if (pd==1)  {wait(0.5);   config=3;  }
+                    if (ps==1)  {wait(0.5); TFT.cls();  stage=2;}
                 }
-                pr=1;
-                if (pr==1)
-                {   TFT.rect(15,265,85,285,Black);
-                    TFT.rect(150,265,220,285,GreenYellow); 
-                    wait(1);
+                if  (config==3)
+                {   TFT.rect(24,145, 64,175,Olive);  //Cyan
+                    TFT.rect(119,145,159,175,Olive);
+                    TFT.rect(15,265,85,285,Olive);  //Green
+                    TFT.rect(150,265,220,285,Green); 
+                    pu = ain1.read(); 
+                    pd = ain2.read(); 
+                    ps = ain3.read(); 
+                    if (pu==1)  {wait(0.5);   config=2;  }
+                    if (pd==1)  {wait(0.5);   config=3;  }
+                    if (ps==1)  {wait(0.5); TFT.cls();  stage=3;}
                 }
-                ps=1;
-                if (ps==1)  {wait(1);   stage=0;}
             }
         }
-            
+        
         if (stage==2)   //waveform
-        {   TFT.cls();   
-            pu=0; pd=0; pl=0; pr=0; ps=0;
-            int abc, x2, y2;
+        {   int abc, x2, y2;
             int x1 = 0;
             int y1 = 100;
             float32_t sum=0; 
-            float32_t k=0; 
-    
+            float32_t sum_mse=0; 
+            float32_t sum_st=0; 
             for(abc=0; abc<num; abc++) 
             {   a1 = a[abc]; 
                 b1 = b[abc]; 
+                sum = sum+a[abc];
                 arm_sub_f32(&a1, &b1, &subOutput, 1);
                 arm_mult_f32(&subOutput, &subOutput, &SquareOutput, 1); 
-                sum = sum+SquareOutput;
-            
+                sum_mse = sum_mse+SquareOutput;
                 x2 = abc*2; 
                 y2 = 80+a1*10;
                 TFT.line(x1,y1,x2,y2,Green);
                 x1 = x2;
-                y1 = y2;        
+                y1 = y2;
             }
-            k = sum / num;
+            mean = sum/num;
+            mse = sum_mse / num;
+            
+            for(abc=0; abc<num; abc++) 
+            {   a1 = a[abc]; 
+                arm_sub_f32(&a1, &mean, &subOutput, 1);
+                arm_mult_f32(&subOutput, &subOutput, &SquareOutput, 1); 
+                sum_st = sum_st+SquareOutput;
+            }
+            st = sqrt(sum_st/num);
             
             TFT.set_font((unsigned char*) Arial12x12);
-            TFT.locate(10,180);
-            TFT.printf("sum:  %f", sum);
+            
+            TFT.locate(10,130);
+            TFT.printf("Samples number: ");
+            TFT.locate(30,140);
+            TFT.printf("%i", num);  
+            
+            TFT.locate(10,160);
+            TFT.printf("Sample Mean Value: ");
+            TFT.locate(30,170);
+            TFT.printf("%f", mean);  
+            
             TFT.locate(10,190);
-            TFT.printf("num:  %i", num);
-            TFT.locate(10,210);
+            TFT.printf("Standard Deviation: ");
+            TFT.locate(30,200);
+            TFT.printf("%f", st);  
+            
+            TFT.locate(10,220);
             TFT.printf("Mean Square Error: ");
-            TFT.locate(10,220);
-            TFT.printf("   %f", k);  
-            TFT.set_font((unsigned char*) Arial12x12);
+            TFT.locate(30,230);
+            TFT.printf("%f", mse);  
+            
             TFT.locate(165,270);
             printf("Return");
-            TFT.rect(150,265,220,285,GreenYellow); 
-            ps=1;
-            if (ps==1)  {wait(1);   stage=0;}
+            TFT.rect(150,265,220,285,Green); 
+            ps = ain3.read(); 
+            if (ps==1)  {wait(0.5); TFT.cls();  stage=0;}
         }
         
         if (stage==3)   //log
-        {   TFT.cls();
-            pu=0; pd=0; pl=0; pr=0; ps=0;
-            TFT.set_font((unsigned char*) Arial24x23);
-            TFT.locate(20,60);
-            printf("Team Riedel");
+        {   
             TFT.set_font((unsigned char*) Arial24x23);
-            TFT.locate(30,110);
-            TFT.printf("We are");
-            TFT.set_font((unsigned char*) Arial24x23);
-            TFT.locate(40,160);
-            TFT.printf("awesome!");
+            TFT.locate(20,20);
+            printf("     Log");
+            int row=50;
+            for(int abc=0; abc<20; abc++) 
+            {   TFT.set_font((unsigned char*) Arial12x12);
+                TFT.locate(10,row+10*abc);
+                printf("[%i]", abc+1);
+                TFT.locate(60,row+10*abc);
+                printf("%f", mse+abc);
+            }
             TFT.set_font((unsigned char*) Arial12x12);
             TFT.locate(165,270);
             printf("Return"); 
-            TFT.rect(150,265,220,285,GreenYellow); 
-            ps=1;
-            if (ps==1)  {wait(1);   stage=0;}
+            TFT.rect(150,265,220,285,Green); 
+            ps = ain3.read(); 
+            if (ps==1)  {wait(0.5); TFT.cls();  stage=0;}
         }
     }
 }
\ No newline at end of file