Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LCD_fonts SPI_TFT_ILI9341 CMSIS_DSP_401_without_cm4 mbed-src SDFileSystem wavfile
Diff: main.cpp
- Revision:
- 6:005ff6a49217
- Parent:
- 5:2ee2c7546568
- Child:
- 7:09354ea16403
diff -r 2ee2c7546568 -r 005ff6a49217 main.cpp
--- a/main.cpp Sat Dec 12 22:50:18 2015 +0000
+++ b/main.cpp Sat Dec 12 22:55:44 2015 +0000
@@ -7,32 +7,28 @@
#include "Arial24x23.h"
#include "arm_math.h"
#include "SDFileSystem.h"
-#define num 128
-//AnalogIn ain1(PC_6);
-//AnalogIn ain2(PC_7);
-//AnalogIn ain3(PC_8);
-//AnalogIn ain4(PC_9);
-//AnalogIn ain5(PB_15);
-
+//#include "main.h"
+#define samplenum 128
+
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];
/** Global variables for FFT Bin Example **/
-
+
uint32_t ifftFlag = 0;
uint32_t doBitReverse = 1;
/* Reference index at which max energy of bin ocuurs */
uint32_t refIndex = 213, testIndex = 0;
-
+
extern unsigned char p1[]; // the mbed logo
-const float32_t a[num] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130,
+const float32_t a[samplenum] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130,
0.048366940168201, -0.145696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203,
2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193,
-1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
@@ -49,7 +45,7 @@
3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287,
0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416185105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
};
-const float32_t b[num] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130,
+const float32_t b[samplenum] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130,
0.048366940168201, -0.145696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203,
2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193,
-1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723,
@@ -66,384 +62,482 @@
0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345, 1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834,
0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644,
};
-float32_t a1, b1;
-float32_t subOutput, SquareOutput;
-
+float32_t subOutput, SquareOutput; //321321
+float32_t a1, b1;
+float32_t SubOutMSE, SquareOutMSE, SubOutST, SquareOutST;
+int h=0; // 321 h = hr, m = min, for interval
+int m=0;
+int i=h;
+int j=m;
+
//SPI_TFT_ILI9341 TFT(D11, D12, D13, D10, D8, D9, "TFT"); // mosi, miso, sclk, cs, reset, dc
SPI_TFT_ILI9341 TFT(PC_3, PC_2, PB_10, PB_12, PA_8, PA_11, "TFT"); // mosi, miso, sclk, cs, reset, dc
SDFileSystem sd(PB_5, PB_4, PB_3, PC_11, "sd"); // mosi, miso, sclk, cs
-
-DigitalOut skywire_en(PA_6);
-//DigitalOut skywire_rts(PA_7);
-Serial skywire(PA_0,PA_1);
-
-volatile int rx_in=0;
-volatile int rx_out=0;
-const int buffer_size = 255;
-char rx_buffer[buffer_size+1];
-char rx_line[buffer_size];
-
-void read_line()
-{
- int i;
- i = 0;
-// Start Critical Section - don't interrupt while changing global buffer variables
- __disable_irq();
-// Loop reading rx buffer characters until end of line character
- while ((i==0) || ((rx_line[i-1] != '\r') && (rx_line[i-1] != '\n'))) {
-// Wait if buffer empty
- if (rx_in == rx_out) {
-// End Critical Section - need to allow rx interrupt to get new characters for buffer
- __enable_irq();
- while (rx_in == rx_out) {
- }
-// Start Critical Section - don't interrupt while changing global buffer variables
- __disable_irq();
- }
- rx_line[i] = rx_buffer[rx_out];
- i++;
- rx_out = (rx_out + 1) % buffer_size;
- }
-// End Critical Section
- __enable_irq();
- rx_line[i-1] = 0;
- return;
-}
-
-int WaitForResponse(char* response)
-{
- do {
- do {
- read_line();
- } while ((unsigned char)rx_line[0] <= 32);
-// debug_pc.printf("Waiting for: %s, Received: %s\r\n", response, rx_line);
- } while (strncmp(rx_line, response, strlen(response)));
- return 0;
-}
-
-void Skywire_Rx_interrupt()
-{
-// Loop just in case more than one character is in UART's receive FIFO buffer
-// Stop if buffer full
- while ((skywire.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
- rx_buffer[rx_in] = skywire.getc();
- rx_in = (rx_in + 1) % buffer_size;
- }
- return;
-}
-
+
int main()
{
-/*// arm_cfft_radix2_instance_f32 S;
- int stage=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*/
-
-// arm_cfft_radix2_instance_f32 S;
- int stage=0;
+/* 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
-
+ */
+
+ float32_t mean=0; //321321
+ float32_t mse=0;
+ float32_t st=0;
+
+
+ int stage=0;
+ int menu=0;
+ int config=0;
+ int set=0;
+ int comp=0;
+ float32_t stmean=0;
+ float32_t stmse=0;
+ float32_t stst=0;
+ char log[10][32];
+ float32_t mselog[10] = {NULL};
+ set_time(1448935737); // Set RTC time to Dec 01 2015 02:09 AM
+ int pu, pd, ps; // LL left & right
+ TFT.claim(stdout); // send stdout to the TFT display
+ TFT.claim(stderr); // send stderr to the TFT display
+ TFT.set_orientation(2);
+ TFT.background(Black); // set background to black
+ TFT.foreground(White); // set chars to white
+ TFT.cls(); // clear the screen
while(1)
- { int pu, pd, ps;
-
- if (stage==0) //menu
- {
- TFT.set_font((unsigned char*) Arial24x23);
- TFT.locate(20,60);
- printf("Configuration");
- TFT.set_font((unsigned char*) Arial24x23);
- TFT.locate(20,110);
- TFT.printf(" Waveform");
- TFT.set_font((unsigned char*) Arial24x23);
- TFT.locate(20,160);
- TFT.printf(" Log");
- TFT.set_font((unsigned char*) Arial24x23);
- TFT.locate(20,260);
- printf(" Return");
-
- if (menu==0) //Configuration
- { TFT.rect(15,55,220,85,Green);
- TFT.rect(15,105,220,135,Black);
- 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
- {
- TFT.rect(15,55,220,85,Black);
- TFT.rect(15,105,220,135,Green);
- TFT.rect(15,155,220,185,Black);
- 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
- {
- TFT.rect(15,105,220,135,Black);
- TFT.rect(15,155,220,185,Green);
- TFT.rect(15,255,220,285,Black);
- 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
- {
- TFT.rect(15,155,220,185,Black);
- 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
- {
- int i=0;
- int j=0;
- int ia, ib, ja, jb;
- int config=0;
+ {
+ if (stage==0) { //menu
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.locate(165,270);
- printf("Return");
- 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(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.locate(19,60);
+ TFT.foreground(White);
+ printf("Configuration");
+ TFT.locate(50,110);
+ TFT.printf("Waveform");
+ TFT.locate(95,160);
+ TFT.printf("Log");
+// wait_LowPow(3); // Wait 3s in low power mode, seems just hold display
+ if (set==0) {
+ TFT.locate(70,260);
+ TFT.foreground(DarkGrey);
+ printf("START");
+ }
+ if (set==1) {
+ TFT.locate(70,260);
+ TFT.foreground(White);
+ printf("START");
TFT.set_font((unsigned char*) Arial12x12);
- 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;}
+ TFT.locate(30, 240);
+ printf("interval: %i hr %i min", h, m);
+ }
+
+ if (menu==0) { //Configuration
+ TFT.rect(13,55,225,85,Green);
+ TFT.rect(13,105,225,135,Black);
+ 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
+ TFT.rect(13,55,225,85,Black);
+ TFT.rect(13,105,225,135,Green);
+ TFT.rect(13,155,225,185,Black);
+ 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 (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;}
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ stage=2;
+ }
+ }
+
+ if (menu==2) { //log
+ TFT.rect(13,105,225,135,Black);
+ TFT.rect(13,155,225,185,Green);
+ TFT.rect(13,255,225,285,Black);
+ pu = ain1.read();
+ pd = ain2.read();
+ ps = ain3.read();
+ if (pu==1) {
+ wait(0.5);
+ menu=1;
+ }
+ if ((pd==1)&&(set==1)) {
+ wait(0.5);
+ menu=3;
}
- 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;}
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ stage=3;
}
- 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;}
+ }
+
+ if (menu==3) { //START
+ TFT.rect(13,155,225,185,Black);
+ TFT.rect(13,255,225,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=5;
}
}
}
- if (stage==2) //waveform
- { int abc, x2, y2;
+ if (stage==1) { //Configuration
+ int ia, ib, ja, jb;
+
+ TFT.set_font((unsigned char*) Arial24x23);
+ TFT.locate(20,55);
+ TFT.foreground(White);
+ printf("SET PERIOD");
+ TFT.rect(15,50, 220,80,Red);
+ TFT.locate(70,120);
+ TFT.printf("Hr Min");
+ TFT.locate(10,200);
+ printf("Record Control");
+ TFT.set_font((unsigned char*) Arial12x12);
+ if (comp==1) {
+ TFT.locate(50,233);
+ printf("comparison saved");
+ }
+
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.locate(40,300);
+ printf("Set");
+ TFT.locate(165,300);
+ printf("Return");
+ TFT.rect(22,115, 68,145,Olive);
+ TFT.rect(117,115,163,145,Olive);
+ TFT.rect(5,195, 230,225,Olive);
+ TFT.rect(15,295,85,315,Olive);
+ TFT.rect(150,295,220,315,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(26,120);
+ if (i<10) TFT.printf("0%i", i);
+ else if (i>=10) TFT.printf("%i", i);
+ TFT.locate(120,120);
+ if (j<10) TFT.printf("0%i", j);
+ else if (j>=10) TFT.printf("%i", j);
+
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.locate(40,100);
+ if (ia<10) TFT.printf("0%i", ia);
+ else if (ia>=10) TFT.printf("%i", ia);
+ TFT.locate(40,150);
+ if (ib<10) TFT.printf("0%i", ib);
+ else if (ib>=10) TFT.printf("%i", ib);
+ TFT.locate(135,100);
+ if (ja<10) TFT.printf("0%i", ja);
+ else if (ja>=10) TFT.printf("%i", ja);
+ TFT.locate(135,150);
+ if (jb<10) TFT.printf("0%i", jb);
+ else if (jb>=10) TFT.printf("%i", jb);
+
+ if (config==0) { //hour
+ TFT.rect(22,115, 68,145,Green);
+ TFT.rect(117,115,163,145,Olive);
+ TFT.rect(5,195, 230,225,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;
+ }
+ }
+ if (config==1) { //min
+ TFT.rect(22,115, 68,145,Olive);
+ TFT.rect(117,115,163,145,Green);
+ TFT.rect(5,195, 230,225,Olive);
+ 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;
+ }
+ }
+ if (config==2) { //Record Control
+ TFT.rect(22,115, 68,145,Olive);
+ TFT.rect(117,115,163,145,Olive);
+ TFT.rect(5,195, 230,225,Green);
+ TFT.rect(15,295,85,315,Olive);
+ TFT.rect(150,295,220,315,Olive);
+ pu = ain1.read();
+ pd = ain2.read();
+ ps = ain3.read();
+ if (pu==1) {
+ wait(0.5);
+ config=0;
+ }
+ if (pd==1) {
+ wait(0.5);
+ config=3;
+ }
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ stage=4;
+ }
+ }
+ if (config==3) { //set
+ TFT.rect(5,195, 230,225,Olive);
+ TFT.rect(15,295,85,315,Green);
+ TFT.rect(150,295,220,315,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=4;
+ }
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ if ((i!=0) || (j!=0)) {
+ h=i;
+ m=j;
+ set=1; //if "set", use new hr and min, and set=1 for "START"
+ }
+ stage=0;
+ }
+ }
+ if (config==4) { //return
+ TFT.rect(5,195, 230,225,Olive);
+ TFT.rect(15,295,85,315,Olive);
+ TFT.rect(150,295,220,315,Green);
+ pu = ain1.read();
+ pd = ain2.read();
+ ps = ain3.read();
+ if (pu==1) {
+ wait(0.5);
+ config=3;
+ }
+ if (pd==1) {
+ wait(0.5);
+ config=4;
+ }
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ stage=0;
+ }
+ }
+ }
+ }
+
+
+ if (stage==2) { //waveform
+ int abc, x2, y2;
+ int def = 0;
+ int ijk = 0;
int x1 = 0;
- int y1 = 100;
- float32_t sum=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_mse = sum_mse+SquareOutput;
+ int y1 = 80;
+
+ for(abc=0; abc<samplenum; abc=abc+4) // waveform
+ { a1 = a[abc];
x2 = abc*2;
y2 = 80+a1*10;
TFT.line(x1,y1,x2,y2,Green);
x1 = x2;
y1 = y2;
}
- 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.foreground(White);
TFT.locate(10,130);
- TFT.printf("Samples number: ");
- TFT.locate(30,140);
- TFT.printf("%i", num);
-
+ TFT.printf("Samples number: \n %i", samplenum);
TFT.locate(10,160);
- TFT.printf("Sample Mean Value: ");
- TFT.locate(30,170);
- TFT.printf("%f", mean);
-
+ TFT.printf("Sample Mean Value: \n %f", stmean);
TFT.locate(10,190);
- TFT.printf("Standard Deviation: ");
- TFT.locate(30,200);
- TFT.printf("%f", st);
-
+ TFT.printf("Standard Deviation: \n %f", stst);
TFT.locate(10,220);
- TFT.printf("Mean Square Error: ");
- TFT.locate(30,230);
- TFT.printf("%f", mse);
-
+ TFT.printf("Mean Square Error: \n %f", stmse);
+
TFT.locate(165,270);
printf("Return");
- TFT.rect(150,265,220,285,Green);
- ps = ain3.read();
- if (ps==1) {wait(0.5); TFT.cls(); 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.set_font((unsigned char*) Arial12x12);
+ TFT.locate(0,10);
+ TFT.foreground(White);
+ for(int e=0; e<10; e++) {
+ if ((mselog[e]>0) && (mselog[e]!= NULL)) {
+ TFT.printf("%s MSE: %f\n\n", log[e], mselog[e]);
+ }
+ }
+ TFT.locate(165,270);
+ printf("Return");
+ TFT.rect(150,265,220,285,Green);
+ ps = ain3.read();
+ if (ps==1) {
+ wait(0.5);
+ TFT.cls();
+ stage=0;
+ }
}
- if (stage==3) //log
- {
+ if (stage==4) { //recording... for comparison
TFT.set_font((unsigned char*) Arial24x23);
- 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,Green);
+ TFT.foreground(White);
+ TFT.locate(40, 240);
+ printf(" recording\n comparison...");
- //Configure CRC, large frames, and write validation for SD Card
- sd.crc(true);
- sd.large_frames(true);
- sd.write_validation(true);
-
- //Try to mount the SD card
- int row = 50;
- int col = 10;
- TFT.locate(10,row); TFT.printf("Mounting SD card..."); row+=10;
- if (sd.mount() != 0) {
- TFT.locate(10,row); TFT.printf("failed!"); row+=10;
- } else {
- TFT.locate(10,row); TFT.printf("mounted successfully"); row+=10;
-
- // write event to log
- TFT.locate(10,70);
- FILE *fp = fopen("/sd/event_log.txt", "a");
- if (fp != NULL) {
- fprintf(fp, "eureka!\r\n");
- fclose(fp);
- TFT.locate(10,row); TFT.printf("success"); row+=10;
- } else {
- TFT.locate(10,row); TFT.printf("failed to write"); row+=10;
+// RECORD(); // RECORD CONTROL 0 ?? 2 record()
+// uint32_t n;
+// for(n=0;n<1024;n++)
+// { CONTROLPWR[n]=POWER[n]; }
+// for(n=0;n<1024;n++)
+// { CONTROLPHS[n]=PHS[n]; }
+
+// RECORD(); //RECORD CONTROL 1 ?? 2 record()
+// MSE(); //MSE BETWEEN CONTROLS
+// CONTROLPWRMSE=PWRMSE;
+// CONTROLPHSMSE=PHSMSE;
+
+ TFT.cls();
+ comp=1;
+ menu=0;
+ config=2;
+ stage=1;
+ }
+
+ if (stage==5) { //recording... with interval
+ TFT.set_font((unsigned char*) Arial24x23);
+ TFT.locate(20,60);
+ TFT.foreground(DarkGrey);
+ printf("Configuration");
+ TFT.locate(50,110);
+ TFT.printf("Waveform");
+ TFT.locate(95,160);
+ TFT.printf("Log");
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.foreground(White);
+ TFT.locate(30, 240);
+ printf("recording, are you sure?");
+ TFT.set_font((unsigned char*) Arial24x23);
+ TFT.locate(35,260);
+ printf(" STOP ");
+ TFT.rect(13,255,225,285,Green);
+
+ ps = ain3.read();
+
+ while(ps==0) // before push "STOP"
+ { int abc;
+ float32_t sum=0;
+ float32_t sum_mse=0;
+ float32_t sum_st=0;
+ int t = h*60+m;
+
+// RECORD(); // microphone here, with interval
+// MSE();
+// COMPARE();
+
+ wait(t);
+ for(abc=0; abc<samplenum; abc++) {
+ a1 = a[abc];
+ b1 = b[abc];
+ sum = sum+a[abc];
+ arm_sub_f32(&a1, &stmean, &SubOutST, 1);
+ arm_mult_f32(&SubOutST, &SubOutST, &SquareOutST, 1);
+ sum_st = sum_st+SquareOutST;
+ arm_sub_f32(&a1, &b1, &SubOutMSE, 1);
+ arm_mult_f32(&SubOutMSE, &SubOutMSE, &SquareOutMSE, 1);
+ sum_mse = sum_mse+SquareOutMSE;
}
- sd.unmount();
+ stmean = sum/samplenum;
+ stst = sqrt(sum_st/samplenum);
+ stmse = sum_mse/samplenum;
+
+ if (stmse>0) // if error, send to user, and store MSE to log
+ {
+ if (mselog[0]==NULL)
+ {
+ time_t seconds = time(NULL);
+ strftime(log[0], 32, "%b %d %Y %I:%M %p\n", localtime(&seconds));
+ mselog[0] = stmse;
+ }
+ }
}
- TFT.locate(10,row); TFT.printf("Configuring Skywire"); row+=10;
- skywire.baud(115200);
- skywire.attach(&Skywire_Rx_interrupt, Serial::RxIrq);
+ wait(0.5); TFT.cls(); stage=0;
- //Turn off echo
- skywire.printf("ATE0\r\n");
- WaitForResponse("OK");
- TFT.locate(10,row); TFT.printf("Connecting to the Network"); row+=10;
- // get IP address
- skywire.printf("AT#SGACT=1,1\r\n"); // context activation (returns with IP address)
- WaitForResponse("#SGACT");
- WaitForResponse("OK");
-
- ps = ain3.read();
- if (ps==1) {wait(0.5); TFT.cls(); stage=0;}
- }
+ }
}
}
+