Team Riedel - display
Dependencies: LCD_fonts SPI_TFT_ILI9341 CMSIS_DSP_401_without_cm4 mbed-src SDFileSystem wavfile
Revision 6:005ff6a49217, committed 2015-12-12
- Comitter:
- linx0576
- Date:
- Sat Dec 12 22:55:44 2015 +0000
- Parent:
- 5:2ee2c7546568
- Child:
- 7:09354ea16403
- Commit message:
- pcb screen config menu
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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;} - } + } } } +