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
main.cpp@7:09354ea16403, 2015-12-12 (annotated)
- Committer:
- linx0576
- Date:
- Sat Dec 12 23:10:09 2015 +0000
- Revision:
- 7:09354ea16403
- Parent:
- 6:005ff6a49217
- Child:
- 8:057ff6060e39
merge skywire and sd with menu
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| linx0576 | 0:52568bab75f8 | 1 | #include <math.h> |
| linx0576 | 0:52568bab75f8 | 2 | #include "stdio.h" |
| linx0576 | 0:52568bab75f8 | 3 | #include "mbed.h" |
| linx0576 | 0:52568bab75f8 | 4 | #include "SPI_TFT_ILI9341.h" |
| linx0576 | 0:52568bab75f8 | 5 | #include "string" |
| linx0576 | 0:52568bab75f8 | 6 | #include "Arial12x12.h" |
| linx0576 | 0:52568bab75f8 | 7 | #include "Arial24x23.h" |
| linx0576 | 0:52568bab75f8 | 8 | #include "arm_math.h" |
| zsaiyed | 4:e1ec41710eb4 | 9 | #include "SDFileSystem.h" |
| linx0576 | 6:005ff6a49217 | 10 | //#include "main.h" |
| linx0576 | 6:005ff6a49217 | 11 | #define samplenum 128 |
| linx0576 | 6:005ff6a49217 | 12 | |
| linx0576 | 3:7edb43f86069 | 13 | DigitalIn ain1(PC_9); |
| linx0576 | 3:7edb43f86069 | 14 | DigitalIn ain2(PB_15); |
| linx0576 | 3:7edb43f86069 | 15 | DigitalIn ain3(PC_7); |
| linx0576 | 3:7edb43f86069 | 16 | DigitalIn ain4(PC_6); |
| linx0576 | 3:7edb43f86069 | 17 | DigitalIn ain5(PC_8); |
| linx0576 | 6:005ff6a49217 | 18 | |
| linx0576 | 0:52568bab75f8 | 19 | /** External Input and Output buffer Declarations for FFT Bin Example **/ |
| linx0576 | 1:f1f3dfff9107 | 20 | //static float32_t testInput_f32_10khz[num]; |
| linx0576 | 1:f1f3dfff9107 | 21 | |
| linx0576 | 0:52568bab75f8 | 22 | /** Global variables for FFT Bin Example **/ |
| linx0576 | 6:005ff6a49217 | 23 | |
| linx0576 | 0:52568bab75f8 | 24 | uint32_t ifftFlag = 0; |
| linx0576 | 0:52568bab75f8 | 25 | uint32_t doBitReverse = 1; |
| linx0576 | 0:52568bab75f8 | 26 | |
| linx0576 | 0:52568bab75f8 | 27 | /* Reference index at which max energy of bin ocuurs */ |
| linx0576 | 0:52568bab75f8 | 28 | uint32_t refIndex = 213, testIndex = 0; |
| linx0576 | 6:005ff6a49217 | 29 | |
| linx0576 | 0:52568bab75f8 | 30 | extern unsigned char p1[]; // the mbed logo |
| linx0576 | 6:005ff6a49217 | 31 | const float32_t a[samplenum] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130, |
| linx0576 | 0:52568bab75f8 | 32 | 0.048366940168201, -0.145696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, |
| linx0576 | 0:52568bab75f8 | 33 | 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, |
| linx0576 | 0:52568bab75f8 | 34 | -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454, |
| linx0576 | 0:52568bab75f8 | 35 | 1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.181540149166620, |
| linx0576 | 0:52568bab75f8 | 36 | -2.601953341353208, 0.333435137783218, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, |
| linx0576 | 0:52568bab75f8 | 37 | -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, |
| linx0576 | 0:52568bab75f8 | 38 | 0.154456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345, |
| linx0576 | 0:52568bab75f8 | 39 | 1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, |
| linx0576 | 0:52568bab75f8 | 40 | -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, |
| linx0576 | 0:52568bab75f8 | 41 | 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, |
| linx0576 | 0:52568bab75f8 | 42 | 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642, |
| linx0576 | 0:52568bab75f8 | 43 | 1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, |
| linx0576 | 0:52568bab75f8 | 44 | 0.048517345512563, -0.026860721136222, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, |
| linx0576 | 0:52568bab75f8 | 45 | 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, |
| linx0576 | 0:52568bab75f8 | 46 | 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416185105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645, |
| linx0576 | 0:52568bab75f8 | 47 | }; |
| linx0576 | 6:005ff6a49217 | 48 | const float32_t b[samplenum] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.105906778385130, |
| linx0576 | 0:52568bab75f8 | 49 | 0.048366940168201, -0.145696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, |
| linx0576 | 0:52568bab75f8 | 50 | 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, |
| linx0576 | 0:52568bab75f8 | 51 | -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, |
| linx0576 | 0:52568bab75f8 | 52 | 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, |
| linx0576 | 0:52568bab75f8 | 53 | 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642, |
| linx0576 | 0:52568bab75f8 | 54 | 1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, |
| linx0576 | 0:52568bab75f8 | 55 | 0.048517345512563, -0.026860721136222, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, |
| linx0576 | 0:52568bab75f8 | 56 | 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, |
| linx0576 | 0:52568bab75f8 | 57 | 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416185105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645, |
| linx0576 | 0:52568bab75f8 | 58 | -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454, 1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, |
| linx0576 | 0:52568bab75f8 | 59 | 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.181540149166620, -2.601953341353208, 0.333435137783218, -2.812945856162965, 2.649109640172910, |
| linx0576 | 0:52568bab75f8 | 60 | -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, |
| linx0576 | 0:52568bab75f8 | 61 | 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.154456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, |
| linx0576 | 0:52568bab75f8 | 62 | 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345, 1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, |
| linx0576 | 0:52568bab75f8 | 63 | 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, |
| linx0576 | 0:52568bab75f8 | 64 | }; |
| linx0576 | 6:005ff6a49217 | 65 | float32_t subOutput, SquareOutput; //321321 |
| linx0576 | 6:005ff6a49217 | 66 | float32_t a1, b1; |
| linx0576 | 6:005ff6a49217 | 67 | float32_t SubOutMSE, SquareOutMSE, SubOutST, SquareOutST; |
| linx0576 | 6:005ff6a49217 | 68 | int h=0; // 321 h = hr, m = min, for interval |
| linx0576 | 6:005ff6a49217 | 69 | int m=0; |
| linx0576 | 6:005ff6a49217 | 70 | int i=h; |
| linx0576 | 6:005ff6a49217 | 71 | int j=m; |
| linx0576 | 6:005ff6a49217 | 72 | |
| linx0576 | 2:afdb1aaa7608 | 73 | //SPI_TFT_ILI9341 TFT(D11, D12, D13, D10, D8, D9, "TFT"); // mosi, miso, sclk, cs, reset, dc |
| linx0576 | 2:afdb1aaa7608 | 74 | SPI_TFT_ILI9341 TFT(PC_3, PC_2, PB_10, PB_12, PA_8, PA_11, "TFT"); // mosi, miso, sclk, cs, reset, dc |
| zsaiyed | 4:e1ec41710eb4 | 75 | SDFileSystem sd(PB_5, PB_4, PB_3, PC_11, "sd"); // mosi, miso, sclk, cs |
| linx0576 | 7:09354ea16403 | 76 | |
| linx0576 | 7:09354ea16403 | 77 | DigitalOut skywire_en(PA_6); |
| linx0576 | 7:09354ea16403 | 78 | //DigitalOut skywire_rts(PA_7); |
| linx0576 | 7:09354ea16403 | 79 | Serial skywire(PA_0,PA_1); |
| linx0576 | 7:09354ea16403 | 80 | |
| linx0576 | 7:09354ea16403 | 81 | volatile int rx_in=0; |
| linx0576 | 7:09354ea16403 | 82 | volatile int rx_out=0; |
| linx0576 | 7:09354ea16403 | 83 | const int buffer_size = 255; |
| linx0576 | 7:09354ea16403 | 84 | char rx_buffer[buffer_size+1]; |
| linx0576 | 7:09354ea16403 | 85 | char rx_line[buffer_size]; |
| linx0576 | 7:09354ea16403 | 86 | |
| linx0576 | 7:09354ea16403 | 87 | void read_line() |
| linx0576 | 7:09354ea16403 | 88 | { |
| linx0576 | 7:09354ea16403 | 89 | int i; |
| linx0576 | 7:09354ea16403 | 90 | i = 0; |
| linx0576 | 7:09354ea16403 | 91 | // Start Critical Section - don't interrupt while changing global buffer variables |
| linx0576 | 7:09354ea16403 | 92 | __disable_irq(); |
| linx0576 | 7:09354ea16403 | 93 | // Loop reading rx buffer characters until end of line character |
| linx0576 | 7:09354ea16403 | 94 | while ((i==0) || ((rx_line[i-1] != '\r') && (rx_line[i-1] != '\n'))) { |
| linx0576 | 7:09354ea16403 | 95 | // Wait if buffer empty |
| linx0576 | 7:09354ea16403 | 96 | if (rx_in == rx_out) { |
| linx0576 | 7:09354ea16403 | 97 | // End Critical Section - need to allow rx interrupt to get new characters for buffer |
| linx0576 | 7:09354ea16403 | 98 | __enable_irq(); |
| linx0576 | 7:09354ea16403 | 99 | while (rx_in == rx_out) { |
| linx0576 | 7:09354ea16403 | 100 | } |
| linx0576 | 7:09354ea16403 | 101 | // Start Critical Section - don't interrupt while changing global buffer variables |
| linx0576 | 7:09354ea16403 | 102 | __disable_irq(); |
| linx0576 | 7:09354ea16403 | 103 | } |
| linx0576 | 7:09354ea16403 | 104 | rx_line[i] = rx_buffer[rx_out]; |
| linx0576 | 7:09354ea16403 | 105 | i++; |
| linx0576 | 7:09354ea16403 | 106 | rx_out = (rx_out + 1) % buffer_size; |
| linx0576 | 7:09354ea16403 | 107 | } |
| linx0576 | 7:09354ea16403 | 108 | // End Critical Section |
| linx0576 | 7:09354ea16403 | 109 | __enable_irq(); |
| linx0576 | 7:09354ea16403 | 110 | rx_line[i-1] = 0; |
| linx0576 | 7:09354ea16403 | 111 | return; |
| linx0576 | 7:09354ea16403 | 112 | } |
| linx0576 | 7:09354ea16403 | 113 | |
| linx0576 | 7:09354ea16403 | 114 | int WaitForResponse(char* response) |
| linx0576 | 7:09354ea16403 | 115 | { |
| linx0576 | 7:09354ea16403 | 116 | do { |
| linx0576 | 7:09354ea16403 | 117 | do { |
| linx0576 | 7:09354ea16403 | 118 | read_line(); |
| linx0576 | 7:09354ea16403 | 119 | } while ((unsigned char)rx_line[0] <= 32); |
| linx0576 | 7:09354ea16403 | 120 | // debug_pc.printf("Waiting for: %s, Received: %s\r\n", response, rx_line); |
| linx0576 | 7:09354ea16403 | 121 | } while (strncmp(rx_line, response, strlen(response))); |
| linx0576 | 7:09354ea16403 | 122 | return 0; |
| linx0576 | 7:09354ea16403 | 123 | } |
| linx0576 | 7:09354ea16403 | 124 | |
| linx0576 | 7:09354ea16403 | 125 | void Skywire_Rx_interrupt() |
| linx0576 | 7:09354ea16403 | 126 | { |
| linx0576 | 7:09354ea16403 | 127 | // Loop just in case more than one character is in UART's receive FIFO buffer |
| linx0576 | 7:09354ea16403 | 128 | // Stop if buffer full |
| linx0576 | 7:09354ea16403 | 129 | while ((skywire.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) { |
| linx0576 | 7:09354ea16403 | 130 | rx_buffer[rx_in] = skywire.getc(); |
| linx0576 | 7:09354ea16403 | 131 | rx_in = (rx_in + 1) % buffer_size; |
| linx0576 | 7:09354ea16403 | 132 | } |
| linx0576 | 7:09354ea16403 | 133 | return; |
| linx0576 | 7:09354ea16403 | 134 | } |
| linx0576 | 7:09354ea16403 | 135 | |
| linx0576 | 0:52568bab75f8 | 136 | int main() |
| linx0576 | 1:f1f3dfff9107 | 137 | { |
| linx0576 | 6:005ff6a49217 | 138 | /* int stage=0; |
| linx0576 | 3:7edb43f86069 | 139 | int menu=0; |
| linx0576 | 3:7edb43f86069 | 140 | float32_t mean=0; |
| linx0576 | 3:7edb43f86069 | 141 | float32_t mse=0; |
| linx0576 | 3:7edb43f86069 | 142 | float32_t st=0; |
| linx0576 | 3:7edb43f86069 | 143 | TFT.claim(stdout); // send stdout to the TFT display |
| linx0576 | 3:7edb43f86069 | 144 | TFT.claim(stderr); // send stderr to the TFT display |
| linx0576 | 3:7edb43f86069 | 145 | TFT.set_orientation(2); // comment out = "||" include = "=" |
| linx0576 | 3:7edb43f86069 | 146 | TFT.background(Black); // set background to black |
| linx0576 | 3:7edb43f86069 | 147 | TFT.foreground(White); // set chars to white |
| linx0576 | 0:52568bab75f8 | 148 | TFT.cls(); // clear the screen |
| linx0576 | 6:005ff6a49217 | 149 | */ |
| linx0576 | 6:005ff6a49217 | 150 | |
| linx0576 | 6:005ff6a49217 | 151 | float32_t mean=0; //321321 |
| linx0576 | 6:005ff6a49217 | 152 | float32_t mse=0; |
| linx0576 | 6:005ff6a49217 | 153 | float32_t st=0; |
| linx0576 | 6:005ff6a49217 | 154 | |
| linx0576 | 6:005ff6a49217 | 155 | |
| linx0576 | 6:005ff6a49217 | 156 | int stage=0; |
| linx0576 | 6:005ff6a49217 | 157 | int menu=0; |
| linx0576 | 6:005ff6a49217 | 158 | int config=0; |
| linx0576 | 6:005ff6a49217 | 159 | int set=0; |
| linx0576 | 6:005ff6a49217 | 160 | int comp=0; |
| linx0576 | 6:005ff6a49217 | 161 | float32_t stmean=0; |
| linx0576 | 6:005ff6a49217 | 162 | float32_t stmse=0; |
| linx0576 | 6:005ff6a49217 | 163 | float32_t stst=0; |
| linx0576 | 6:005ff6a49217 | 164 | char log[10][32]; |
| linx0576 | 6:005ff6a49217 | 165 | float32_t mselog[10] = {NULL}; |
| linx0576 | 6:005ff6a49217 | 166 | set_time(1448935737); // Set RTC time to Dec 01 2015 02:09 AM |
| linx0576 | 6:005ff6a49217 | 167 | int pu, pd, ps; // LL left & right |
| linx0576 | 6:005ff6a49217 | 168 | TFT.claim(stdout); // send stdout to the TFT display |
| linx0576 | 6:005ff6a49217 | 169 | TFT.claim(stderr); // send stderr to the TFT display |
| linx0576 | 6:005ff6a49217 | 170 | TFT.set_orientation(2); |
| linx0576 | 6:005ff6a49217 | 171 | TFT.background(Black); // set background to black |
| linx0576 | 6:005ff6a49217 | 172 | TFT.foreground(White); // set chars to white |
| linx0576 | 6:005ff6a49217 | 173 | TFT.cls(); // clear the screen |
| linx0576 | 3:7edb43f86069 | 174 | |
| linx0576 | 3:7edb43f86069 | 175 | |
| linx0576 | 1:f1f3dfff9107 | 176 | while(1) |
| linx0576 | 6:005ff6a49217 | 177 | { |
| linx0576 | 6:005ff6a49217 | 178 | if (stage==0) { //menu |
| linx0576 | 1:f1f3dfff9107 | 179 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 180 | TFT.locate(19,60); |
| linx0576 | 6:005ff6a49217 | 181 | TFT.foreground(White); |
| linx0576 | 6:005ff6a49217 | 182 | printf("Configuration"); |
| linx0576 | 6:005ff6a49217 | 183 | TFT.locate(50,110); |
| linx0576 | 6:005ff6a49217 | 184 | TFT.printf("Waveform"); |
| linx0576 | 6:005ff6a49217 | 185 | TFT.locate(95,160); |
| linx0576 | 6:005ff6a49217 | 186 | TFT.printf("Log"); |
| linx0576 | 6:005ff6a49217 | 187 | // wait_LowPow(3); // Wait 3s in low power mode, seems just hold display |
| linx0576 | 6:005ff6a49217 | 188 | if (set==0) { |
| linx0576 | 6:005ff6a49217 | 189 | TFT.locate(70,260); |
| linx0576 | 6:005ff6a49217 | 190 | TFT.foreground(DarkGrey); |
| linx0576 | 6:005ff6a49217 | 191 | printf("START"); |
| linx0576 | 6:005ff6a49217 | 192 | } |
| linx0576 | 6:005ff6a49217 | 193 | if (set==1) { |
| linx0576 | 6:005ff6a49217 | 194 | TFT.locate(70,260); |
| linx0576 | 6:005ff6a49217 | 195 | TFT.foreground(White); |
| linx0576 | 6:005ff6a49217 | 196 | printf("START"); |
| linx0576 | 1:f1f3dfff9107 | 197 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 198 | TFT.locate(30, 240); |
| linx0576 | 6:005ff6a49217 | 199 | printf("interval: %i hr %i min", h, m); |
| linx0576 | 6:005ff6a49217 | 200 | } |
| linx0576 | 6:005ff6a49217 | 201 | |
| linx0576 | 6:005ff6a49217 | 202 | if (menu==0) { //Configuration |
| linx0576 | 6:005ff6a49217 | 203 | TFT.rect(13,55,225,85,Green); |
| linx0576 | 6:005ff6a49217 | 204 | TFT.rect(13,105,225,135,Black); |
| linx0576 | 6:005ff6a49217 | 205 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 206 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 207 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 208 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 209 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 210 | menu=1; |
| linx0576 | 6:005ff6a49217 | 211 | } |
| linx0576 | 6:005ff6a49217 | 212 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 213 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 214 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 215 | stage=1; |
| linx0576 | 6:005ff6a49217 | 216 | } |
| linx0576 | 6:005ff6a49217 | 217 | } |
| linx0576 | 6:005ff6a49217 | 218 | |
| linx0576 | 6:005ff6a49217 | 219 | if (menu==1) { //waveform |
| linx0576 | 6:005ff6a49217 | 220 | TFT.rect(13,55,225,85,Black); |
| linx0576 | 6:005ff6a49217 | 221 | TFT.rect(13,105,225,135,Green); |
| linx0576 | 6:005ff6a49217 | 222 | TFT.rect(13,155,225,185,Black); |
| linx0576 | 6:005ff6a49217 | 223 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 224 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 225 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 226 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 227 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 228 | menu=0; |
| linx0576 | 6:005ff6a49217 | 229 | } |
| linx0576 | 6:005ff6a49217 | 230 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 231 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 232 | menu=2; |
| linx0576 | 1:f1f3dfff9107 | 233 | } |
| linx0576 | 6:005ff6a49217 | 234 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 235 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 236 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 237 | stage=2; |
| linx0576 | 6:005ff6a49217 | 238 | } |
| linx0576 | 6:005ff6a49217 | 239 | } |
| linx0576 | 6:005ff6a49217 | 240 | |
| linx0576 | 6:005ff6a49217 | 241 | if (menu==2) { //log |
| linx0576 | 6:005ff6a49217 | 242 | TFT.rect(13,105,225,135,Black); |
| linx0576 | 6:005ff6a49217 | 243 | TFT.rect(13,155,225,185,Green); |
| linx0576 | 6:005ff6a49217 | 244 | TFT.rect(13,255,225,285,Black); |
| linx0576 | 6:005ff6a49217 | 245 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 246 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 247 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 248 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 249 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 250 | menu=1; |
| linx0576 | 6:005ff6a49217 | 251 | } |
| linx0576 | 6:005ff6a49217 | 252 | if ((pd==1)&&(set==1)) { |
| linx0576 | 6:005ff6a49217 | 253 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 254 | menu=3; |
| linx0576 | 1:f1f3dfff9107 | 255 | } |
| linx0576 | 6:005ff6a49217 | 256 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 257 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 258 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 259 | stage=3; |
| linx0576 | 1:f1f3dfff9107 | 260 | } |
| linx0576 | 6:005ff6a49217 | 261 | } |
| linx0576 | 6:005ff6a49217 | 262 | |
| linx0576 | 6:005ff6a49217 | 263 | if (menu==3) { //START |
| linx0576 | 6:005ff6a49217 | 264 | TFT.rect(13,155,225,185,Black); |
| linx0576 | 6:005ff6a49217 | 265 | TFT.rect(13,255,225,285,Green); |
| linx0576 | 6:005ff6a49217 | 266 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 267 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 268 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 269 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 270 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 271 | menu=2; |
| linx0576 | 6:005ff6a49217 | 272 | } |
| linx0576 | 6:005ff6a49217 | 273 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 274 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 275 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 276 | stage=5; |
| linx0576 | 1:f1f3dfff9107 | 277 | } |
| linx0576 | 1:f1f3dfff9107 | 278 | } |
| linx0576 | 1:f1f3dfff9107 | 279 | } |
| linx0576 | 3:7edb43f86069 | 280 | |
| linx0576 | 6:005ff6a49217 | 281 | if (stage==1) { //Configuration |
| linx0576 | 6:005ff6a49217 | 282 | int ia, ib, ja, jb; |
| linx0576 | 6:005ff6a49217 | 283 | |
| linx0576 | 6:005ff6a49217 | 284 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 285 | TFT.locate(20,55); |
| linx0576 | 6:005ff6a49217 | 286 | TFT.foreground(White); |
| linx0576 | 6:005ff6a49217 | 287 | printf("SET PERIOD"); |
| linx0576 | 6:005ff6a49217 | 288 | TFT.rect(15,50, 220,80,Red); |
| linx0576 | 6:005ff6a49217 | 289 | TFT.locate(70,120); |
| linx0576 | 6:005ff6a49217 | 290 | TFT.printf("Hr Min"); |
| linx0576 | 6:005ff6a49217 | 291 | TFT.locate(10,200); |
| linx0576 | 6:005ff6a49217 | 292 | printf("Record Control"); |
| linx0576 | 6:005ff6a49217 | 293 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 294 | if (comp==1) { |
| linx0576 | 6:005ff6a49217 | 295 | TFT.locate(50,233); |
| linx0576 | 6:005ff6a49217 | 296 | printf("comparison saved"); |
| linx0576 | 6:005ff6a49217 | 297 | } |
| linx0576 | 6:005ff6a49217 | 298 | |
| linx0576 | 6:005ff6a49217 | 299 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 300 | TFT.locate(40,300); |
| linx0576 | 6:005ff6a49217 | 301 | printf("Set"); |
| linx0576 | 6:005ff6a49217 | 302 | TFT.locate(165,300); |
| linx0576 | 6:005ff6a49217 | 303 | printf("Return"); |
| linx0576 | 6:005ff6a49217 | 304 | TFT.rect(22,115, 68,145,Olive); |
| linx0576 | 6:005ff6a49217 | 305 | TFT.rect(117,115,163,145,Olive); |
| linx0576 | 6:005ff6a49217 | 306 | TFT.rect(5,195, 230,225,Olive); |
| linx0576 | 6:005ff6a49217 | 307 | TFT.rect(15,295,85,315,Olive); |
| linx0576 | 6:005ff6a49217 | 308 | TFT.rect(150,295,220,315,Olive); |
| linx0576 | 6:005ff6a49217 | 309 | |
| linx0576 | 6:005ff6a49217 | 310 | while (stage==1) { |
| linx0576 | 6:005ff6a49217 | 311 | ia=i-1; |
| linx0576 | 6:005ff6a49217 | 312 | if (i==0) ia=23; |
| linx0576 | 6:005ff6a49217 | 313 | ib=i+1; |
| linx0576 | 6:005ff6a49217 | 314 | if (i==23) ib=0; |
| linx0576 | 6:005ff6a49217 | 315 | ja=j-1; |
| linx0576 | 6:005ff6a49217 | 316 | if (j==0) ja=59; |
| linx0576 | 6:005ff6a49217 | 317 | jb=j+1; |
| linx0576 | 6:005ff6a49217 | 318 | if (j==59) jb=00; |
| linx0576 | 6:005ff6a49217 | 319 | |
| linx0576 | 6:005ff6a49217 | 320 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 321 | TFT.locate(26,120); |
| linx0576 | 6:005ff6a49217 | 322 | if (i<10) TFT.printf("0%i", i); |
| linx0576 | 6:005ff6a49217 | 323 | else if (i>=10) TFT.printf("%i", i); |
| linx0576 | 6:005ff6a49217 | 324 | TFT.locate(120,120); |
| linx0576 | 6:005ff6a49217 | 325 | if (j<10) TFT.printf("0%i", j); |
| linx0576 | 6:005ff6a49217 | 326 | else if (j>=10) TFT.printf("%i", j); |
| linx0576 | 6:005ff6a49217 | 327 | |
| linx0576 | 6:005ff6a49217 | 328 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 329 | TFT.locate(40,100); |
| linx0576 | 6:005ff6a49217 | 330 | if (ia<10) TFT.printf("0%i", ia); |
| linx0576 | 6:005ff6a49217 | 331 | else if (ia>=10) TFT.printf("%i", ia); |
| linx0576 | 6:005ff6a49217 | 332 | TFT.locate(40,150); |
| linx0576 | 6:005ff6a49217 | 333 | if (ib<10) TFT.printf("0%i", ib); |
| linx0576 | 6:005ff6a49217 | 334 | else if (ib>=10) TFT.printf("%i", ib); |
| linx0576 | 6:005ff6a49217 | 335 | TFT.locate(135,100); |
| linx0576 | 6:005ff6a49217 | 336 | if (ja<10) TFT.printf("0%i", ja); |
| linx0576 | 6:005ff6a49217 | 337 | else if (ja>=10) TFT.printf("%i", ja); |
| linx0576 | 6:005ff6a49217 | 338 | TFT.locate(135,150); |
| linx0576 | 6:005ff6a49217 | 339 | if (jb<10) TFT.printf("0%i", jb); |
| linx0576 | 6:005ff6a49217 | 340 | else if (jb>=10) TFT.printf("%i", jb); |
| linx0576 | 6:005ff6a49217 | 341 | |
| linx0576 | 6:005ff6a49217 | 342 | if (config==0) { //hour |
| linx0576 | 6:005ff6a49217 | 343 | TFT.rect(22,115, 68,145,Green); |
| linx0576 | 6:005ff6a49217 | 344 | TFT.rect(117,115,163,145,Olive); |
| linx0576 | 6:005ff6a49217 | 345 | TFT.rect(5,195, 230,225,Olive); |
| linx0576 | 6:005ff6a49217 | 346 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 347 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 348 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 349 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 350 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 351 | i=ib; |
| linx0576 | 6:005ff6a49217 | 352 | } |
| linx0576 | 6:005ff6a49217 | 353 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 354 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 355 | i=ia; |
| linx0576 | 6:005ff6a49217 | 356 | } |
| linx0576 | 6:005ff6a49217 | 357 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 358 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 359 | config=1; |
| linx0576 | 6:005ff6a49217 | 360 | } |
| linx0576 | 6:005ff6a49217 | 361 | } |
| linx0576 | 6:005ff6a49217 | 362 | if (config==1) { //min |
| linx0576 | 6:005ff6a49217 | 363 | TFT.rect(22,115, 68,145,Olive); |
| linx0576 | 6:005ff6a49217 | 364 | TFT.rect(117,115,163,145,Green); |
| linx0576 | 6:005ff6a49217 | 365 | TFT.rect(5,195, 230,225,Olive); |
| linx0576 | 6:005ff6a49217 | 366 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 367 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 368 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 369 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 370 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 371 | j=jb; |
| linx0576 | 6:005ff6a49217 | 372 | } |
| linx0576 | 6:005ff6a49217 | 373 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 374 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 375 | j=ja; |
| linx0576 | 6:005ff6a49217 | 376 | } |
| linx0576 | 6:005ff6a49217 | 377 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 378 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 379 | config=2; |
| linx0576 | 6:005ff6a49217 | 380 | } |
| linx0576 | 6:005ff6a49217 | 381 | } |
| linx0576 | 6:005ff6a49217 | 382 | if (config==2) { //Record Control |
| linx0576 | 6:005ff6a49217 | 383 | TFT.rect(22,115, 68,145,Olive); |
| linx0576 | 6:005ff6a49217 | 384 | TFT.rect(117,115,163,145,Olive); |
| linx0576 | 6:005ff6a49217 | 385 | TFT.rect(5,195, 230,225,Green); |
| linx0576 | 6:005ff6a49217 | 386 | TFT.rect(15,295,85,315,Olive); |
| linx0576 | 6:005ff6a49217 | 387 | TFT.rect(150,295,220,315,Olive); |
| linx0576 | 6:005ff6a49217 | 388 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 389 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 390 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 391 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 392 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 393 | config=0; |
| linx0576 | 6:005ff6a49217 | 394 | } |
| linx0576 | 6:005ff6a49217 | 395 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 396 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 397 | config=3; |
| linx0576 | 6:005ff6a49217 | 398 | } |
| linx0576 | 6:005ff6a49217 | 399 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 400 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 401 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 402 | stage=4; |
| linx0576 | 6:005ff6a49217 | 403 | } |
| linx0576 | 6:005ff6a49217 | 404 | } |
| linx0576 | 6:005ff6a49217 | 405 | if (config==3) { //set |
| linx0576 | 6:005ff6a49217 | 406 | TFT.rect(5,195, 230,225,Olive); |
| linx0576 | 6:005ff6a49217 | 407 | TFT.rect(15,295,85,315,Green); |
| linx0576 | 6:005ff6a49217 | 408 | TFT.rect(150,295,220,315,Olive); |
| linx0576 | 6:005ff6a49217 | 409 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 410 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 411 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 412 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 413 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 414 | config=2; |
| linx0576 | 6:005ff6a49217 | 415 | } |
| linx0576 | 6:005ff6a49217 | 416 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 417 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 418 | config=4; |
| linx0576 | 6:005ff6a49217 | 419 | } |
| linx0576 | 6:005ff6a49217 | 420 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 421 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 422 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 423 | if ((i!=0) || (j!=0)) { |
| linx0576 | 6:005ff6a49217 | 424 | h=i; |
| linx0576 | 6:005ff6a49217 | 425 | m=j; |
| linx0576 | 6:005ff6a49217 | 426 | set=1; //if "set", use new hr and min, and set=1 for "START" |
| linx0576 | 6:005ff6a49217 | 427 | } |
| linx0576 | 6:005ff6a49217 | 428 | stage=0; |
| linx0576 | 6:005ff6a49217 | 429 | } |
| linx0576 | 6:005ff6a49217 | 430 | } |
| linx0576 | 6:005ff6a49217 | 431 | if (config==4) { //return |
| linx0576 | 6:005ff6a49217 | 432 | TFT.rect(5,195, 230,225,Olive); |
| linx0576 | 6:005ff6a49217 | 433 | TFT.rect(15,295,85,315,Olive); |
| linx0576 | 6:005ff6a49217 | 434 | TFT.rect(150,295,220,315,Green); |
| linx0576 | 6:005ff6a49217 | 435 | pu = ain1.read(); |
| linx0576 | 6:005ff6a49217 | 436 | pd = ain2.read(); |
| linx0576 | 6:005ff6a49217 | 437 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 438 | if (pu==1) { |
| linx0576 | 6:005ff6a49217 | 439 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 440 | config=3; |
| linx0576 | 6:005ff6a49217 | 441 | } |
| linx0576 | 6:005ff6a49217 | 442 | if (pd==1) { |
| linx0576 | 6:005ff6a49217 | 443 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 444 | config=4; |
| linx0576 | 6:005ff6a49217 | 445 | } |
| linx0576 | 6:005ff6a49217 | 446 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 447 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 448 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 449 | stage=0; |
| linx0576 | 6:005ff6a49217 | 450 | } |
| linx0576 | 6:005ff6a49217 | 451 | } |
| linx0576 | 6:005ff6a49217 | 452 | } |
| linx0576 | 6:005ff6a49217 | 453 | } |
| linx0576 | 6:005ff6a49217 | 454 | |
| linx0576 | 6:005ff6a49217 | 455 | |
| linx0576 | 6:005ff6a49217 | 456 | if (stage==2) { //waveform |
| linx0576 | 6:005ff6a49217 | 457 | int abc, x2, y2; |
| linx0576 | 6:005ff6a49217 | 458 | int def = 0; |
| linx0576 | 6:005ff6a49217 | 459 | int ijk = 0; |
| linx0576 | 1:f1f3dfff9107 | 460 | int x1 = 0; |
| linx0576 | 6:005ff6a49217 | 461 | int y1 = 80; |
| linx0576 | 6:005ff6a49217 | 462 | |
| linx0576 | 6:005ff6a49217 | 463 | for(abc=0; abc<samplenum; abc=abc+4) // waveform |
| linx0576 | 6:005ff6a49217 | 464 | { a1 = a[abc]; |
| linx0576 | 1:f1f3dfff9107 | 465 | x2 = abc*2; |
| linx0576 | 1:f1f3dfff9107 | 466 | y2 = 80+a1*10; |
| linx0576 | 1:f1f3dfff9107 | 467 | TFT.line(x1,y1,x2,y2,Green); |
| linx0576 | 1:f1f3dfff9107 | 468 | x1 = x2; |
| linx0576 | 3:7edb43f86069 | 469 | y1 = y2; |
| linx0576 | 1:f1f3dfff9107 | 470 | } |
| linx0576 | 6:005ff6a49217 | 471 | |
| linx0576 | 1:f1f3dfff9107 | 472 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 473 | TFT.foreground(White); |
| linx0576 | 3:7edb43f86069 | 474 | TFT.locate(10,130); |
| linx0576 | 6:005ff6a49217 | 475 | TFT.printf("Samples number: \n %i", samplenum); |
| linx0576 | 3:7edb43f86069 | 476 | TFT.locate(10,160); |
| linx0576 | 6:005ff6a49217 | 477 | TFT.printf("Sample Mean Value: \n %f", stmean); |
| linx0576 | 1:f1f3dfff9107 | 478 | TFT.locate(10,190); |
| linx0576 | 6:005ff6a49217 | 479 | TFT.printf("Standard Deviation: \n %f", stst); |
| linx0576 | 3:7edb43f86069 | 480 | TFT.locate(10,220); |
| linx0576 | 6:005ff6a49217 | 481 | TFT.printf("Mean Square Error: \n %f", stmse); |
| linx0576 | 6:005ff6a49217 | 482 | |
| linx0576 | 1:f1f3dfff9107 | 483 | TFT.locate(165,270); |
| linx0576 | 1:f1f3dfff9107 | 484 | printf("Return"); |
| linx0576 | 6:005ff6a49217 | 485 | TFT.rect(150,265,220,285,Green); |
| linx0576 | 6:005ff6a49217 | 486 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 487 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 488 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 489 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 490 | stage=0; |
| linx0576 | 6:005ff6a49217 | 491 | } |
| linx0576 | 6:005ff6a49217 | 492 | } |
| linx0576 | 6:005ff6a49217 | 493 | |
| linx0576 | 6:005ff6a49217 | 494 | if (stage==3) { //log |
| linx0576 | 6:005ff6a49217 | 495 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 496 | TFT.locate(0,10); |
| linx0576 | 6:005ff6a49217 | 497 | TFT.foreground(White); |
| linx0576 | 7:09354ea16403 | 498 | |
| linx0576 | 7:09354ea16403 | 499 | |
| linx0576 | 7:09354ea16403 | 500 | //Configure CRC, large frames, and write validation for SD Card |
| linx0576 | 7:09354ea16403 | 501 | sd.crc(true); |
| linx0576 | 7:09354ea16403 | 502 | sd.large_frames(true); |
| linx0576 | 7:09354ea16403 | 503 | sd.write_validation(true); |
| linx0576 | 7:09354ea16403 | 504 | |
| linx0576 | 7:09354ea16403 | 505 | //Try to mount the SD card |
| linx0576 | 7:09354ea16403 | 506 | TFT.locate(10,50); |
| linx0576 | 7:09354ea16403 | 507 | TFT.printf("Mounting SD card..."); |
| linx0576 | 7:09354ea16403 | 508 | TFT.locate(10,60); |
| linx0576 | 7:09354ea16403 | 509 | int row = 50; |
| linx0576 | 7:09354ea16403 | 510 | int col = 10; |
| linx0576 | 7:09354ea16403 | 511 | TFT.locate(10,row); TFT.printf("Mounting SD card..."); row+=10; |
| linx0576 | 7:09354ea16403 | 512 | if (sd.mount() != 0) { |
| linx0576 | 7:09354ea16403 | 513 | TFT.printf("failed!"); |
| linx0576 | 7:09354ea16403 | 514 | TFT.locate(10,row); TFT.printf("failed!"); row+=10; |
| linx0576 | 7:09354ea16403 | 515 | } else { |
| linx0576 | 7:09354ea16403 | 516 | TFT.printf("mounted successfully!\r\n"); |
| linx0576 | 7:09354ea16403 | 517 | TFT.locate(10,row); TFT.printf("mounted successfully"); row+=10; |
| linx0576 | 7:09354ea16403 | 518 | |
| linx0576 | 7:09354ea16403 | 519 | // write event to log |
| linx0576 | 7:09354ea16403 | 520 | TFT.locate(10,70); |
| linx0576 | 7:09354ea16403 | 521 | FILE *fp = fopen("/sd/event_log.txt", "a"); |
| linx0576 | 7:09354ea16403 | 522 | if (fp != NULL) { |
| linx0576 | 7:09354ea16403 | 523 | fprintf(fp, "eureka!\r\n"); |
| linx0576 | 7:09354ea16403 | 524 | fclose(fp); |
| linx0576 | 7:09354ea16403 | 525 | TFT.printf("success!\n"); |
| linx0576 | 7:09354ea16403 | 526 | TFT.locate(10,row); TFT.printf("success"); row+=10; |
| linx0576 | 7:09354ea16403 | 527 | } else { |
| linx0576 | 7:09354ea16403 | 528 | TFT.printf("failed!\n"); |
| linx0576 | 7:09354ea16403 | 529 | TFT.locate(10,row); TFT.printf("failed to write"); row+=10; |
| linx0576 | 6:005ff6a49217 | 530 | } |
| linx0576 | 7:09354ea16403 | 531 | sd.unmount(); |
| linx0576 | 6:005ff6a49217 | 532 | } |
| linx0576 | 7:09354ea16403 | 533 | |
| linx0576 | 7:09354ea16403 | 534 | TFT.locate(10,row); TFT.printf("Configuring Skywire"); row+=10; |
| linx0576 | 7:09354ea16403 | 535 | skywire.baud(115200); |
| linx0576 | 7:09354ea16403 | 536 | skywire.attach(&Skywire_Rx_interrupt, Serial::RxIrq); |
| linx0576 | 7:09354ea16403 | 537 | |
| linx0576 | 7:09354ea16403 | 538 | //Turn off echo |
| linx0576 | 7:09354ea16403 | 539 | skywire.printf("ATE0\r\n"); |
| linx0576 | 7:09354ea16403 | 540 | WaitForResponse("OK"); |
| linx0576 | 7:09354ea16403 | 541 | TFT.locate(10,row); TFT.printf("Connecting to the Network"); row+=10; |
| linx0576 | 7:09354ea16403 | 542 | // get IP address |
| linx0576 | 7:09354ea16403 | 543 | skywire.printf("AT#SGACT=1,1\r\n"); // context activation (returns with IP address) |
| linx0576 | 7:09354ea16403 | 544 | WaitForResponse("#SGACT"); |
| linx0576 | 7:09354ea16403 | 545 | WaitForResponse("OK"); |
| linx0576 | 7:09354ea16403 | 546 | |
| linx0576 | 7:09354ea16403 | 547 | |
| linx0576 | 7:09354ea16403 | 548 | |
| linx0576 | 6:005ff6a49217 | 549 | TFT.locate(165,270); |
| linx0576 | 6:005ff6a49217 | 550 | printf("Return"); |
| linx0576 | 6:005ff6a49217 | 551 | TFT.rect(150,265,220,285,Green); |
| linx0576 | 7:09354ea16403 | 552 | |
| linx0576 | 6:005ff6a49217 | 553 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 554 | if (ps==1) { |
| linx0576 | 6:005ff6a49217 | 555 | wait(0.5); |
| linx0576 | 6:005ff6a49217 | 556 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 557 | stage=0; |
| linx0576 | 6:005ff6a49217 | 558 | } |
| linx0576 | 1:f1f3dfff9107 | 559 | } |
| linx0576 | 1:f1f3dfff9107 | 560 | |
| linx0576 | 6:005ff6a49217 | 561 | if (stage==4) { //recording... for comparison |
| linx0576 | 1:f1f3dfff9107 | 562 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 563 | TFT.foreground(White); |
| linx0576 | 6:005ff6a49217 | 564 | TFT.locate(40, 240); |
| linx0576 | 6:005ff6a49217 | 565 | printf(" recording\n comparison..."); |
| zsaiyed | 4:e1ec41710eb4 | 566 | |
| linx0576 | 6:005ff6a49217 | 567 | // RECORD(); // RECORD CONTROL 0 ?? 2 record() |
| linx0576 | 6:005ff6a49217 | 568 | // uint32_t n; |
| linx0576 | 6:005ff6a49217 | 569 | // for(n=0;n<1024;n++) |
| linx0576 | 6:005ff6a49217 | 570 | // { CONTROLPWR[n]=POWER[n]; } |
| linx0576 | 6:005ff6a49217 | 571 | // for(n=0;n<1024;n++) |
| linx0576 | 6:005ff6a49217 | 572 | // { CONTROLPHS[n]=PHS[n]; } |
| linx0576 | 6:005ff6a49217 | 573 | |
| linx0576 | 6:005ff6a49217 | 574 | // RECORD(); //RECORD CONTROL 1 ?? 2 record() |
| linx0576 | 6:005ff6a49217 | 575 | // MSE(); //MSE BETWEEN CONTROLS |
| linx0576 | 6:005ff6a49217 | 576 | // CONTROLPWRMSE=PWRMSE; |
| linx0576 | 6:005ff6a49217 | 577 | // CONTROLPHSMSE=PHSMSE; |
| linx0576 | 6:005ff6a49217 | 578 | |
| linx0576 | 6:005ff6a49217 | 579 | TFT.cls(); |
| linx0576 | 6:005ff6a49217 | 580 | comp=1; |
| linx0576 | 6:005ff6a49217 | 581 | menu=0; |
| linx0576 | 6:005ff6a49217 | 582 | config=2; |
| linx0576 | 6:005ff6a49217 | 583 | stage=1; |
| linx0576 | 6:005ff6a49217 | 584 | } |
| linx0576 | 6:005ff6a49217 | 585 | |
| linx0576 | 6:005ff6a49217 | 586 | if (stage==5) { //recording... with interval |
| linx0576 | 6:005ff6a49217 | 587 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 588 | TFT.locate(20,60); |
| linx0576 | 6:005ff6a49217 | 589 | TFT.foreground(DarkGrey); |
| linx0576 | 6:005ff6a49217 | 590 | printf("Configuration"); |
| linx0576 | 6:005ff6a49217 | 591 | TFT.locate(50,110); |
| linx0576 | 6:005ff6a49217 | 592 | TFT.printf("Waveform"); |
| linx0576 | 6:005ff6a49217 | 593 | TFT.locate(95,160); |
| linx0576 | 6:005ff6a49217 | 594 | TFT.printf("Log"); |
| linx0576 | 6:005ff6a49217 | 595 | TFT.set_font((unsigned char*) Arial12x12); |
| linx0576 | 6:005ff6a49217 | 596 | TFT.foreground(White); |
| linx0576 | 6:005ff6a49217 | 597 | TFT.locate(30, 240); |
| linx0576 | 6:005ff6a49217 | 598 | printf("recording, are you sure?"); |
| linx0576 | 6:005ff6a49217 | 599 | TFT.set_font((unsigned char*) Arial24x23); |
| linx0576 | 6:005ff6a49217 | 600 | TFT.locate(35,260); |
| linx0576 | 6:005ff6a49217 | 601 | printf(" STOP "); |
| linx0576 | 6:005ff6a49217 | 602 | TFT.rect(13,255,225,285,Green); |
| linx0576 | 6:005ff6a49217 | 603 | |
| linx0576 | 6:005ff6a49217 | 604 | ps = ain3.read(); |
| linx0576 | 6:005ff6a49217 | 605 | |
| linx0576 | 6:005ff6a49217 | 606 | while(ps==0) // before push "STOP" |
| linx0576 | 6:005ff6a49217 | 607 | { int abc; |
| linx0576 | 6:005ff6a49217 | 608 | float32_t sum=0; |
| linx0576 | 6:005ff6a49217 | 609 | float32_t sum_mse=0; |
| linx0576 | 6:005ff6a49217 | 610 | float32_t sum_st=0; |
| linx0576 | 6:005ff6a49217 | 611 | int t = h*60+m; |
| linx0576 | 6:005ff6a49217 | 612 | |
| linx0576 | 6:005ff6a49217 | 613 | // RECORD(); // microphone here, with interval |
| linx0576 | 6:005ff6a49217 | 614 | // MSE(); |
| linx0576 | 6:005ff6a49217 | 615 | // COMPARE(); |
| linx0576 | 6:005ff6a49217 | 616 | |
| linx0576 | 6:005ff6a49217 | 617 | wait(t); |
| linx0576 | 6:005ff6a49217 | 618 | for(abc=0; abc<samplenum; abc++) { |
| linx0576 | 6:005ff6a49217 | 619 | a1 = a[abc]; |
| linx0576 | 6:005ff6a49217 | 620 | b1 = b[abc]; |
| linx0576 | 6:005ff6a49217 | 621 | sum = sum+a[abc]; |
| linx0576 | 6:005ff6a49217 | 622 | arm_sub_f32(&a1, &stmean, &SubOutST, 1); |
| linx0576 | 6:005ff6a49217 | 623 | arm_mult_f32(&SubOutST, &SubOutST, &SquareOutST, 1); |
| linx0576 | 6:005ff6a49217 | 624 | sum_st = sum_st+SquareOutST; |
| linx0576 | 6:005ff6a49217 | 625 | arm_sub_f32(&a1, &b1, &SubOutMSE, 1); |
| linx0576 | 6:005ff6a49217 | 626 | arm_mult_f32(&SubOutMSE, &SubOutMSE, &SquareOutMSE, 1); |
| linx0576 | 6:005ff6a49217 | 627 | sum_mse = sum_mse+SquareOutMSE; |
| zsaiyed | 4:e1ec41710eb4 | 628 | } |
| linx0576 | 6:005ff6a49217 | 629 | stmean = sum/samplenum; |
| linx0576 | 6:005ff6a49217 | 630 | stst = sqrt(sum_st/samplenum); |
| linx0576 | 6:005ff6a49217 | 631 | stmse = sum_mse/samplenum; |
| linx0576 | 6:005ff6a49217 | 632 | |
| linx0576 | 6:005ff6a49217 | 633 | if (stmse>0) // if error, send to user, and store MSE to log |
| linx0576 | 6:005ff6a49217 | 634 | { |
| linx0576 | 6:005ff6a49217 | 635 | if (mselog[0]==NULL) |
| linx0576 | 6:005ff6a49217 | 636 | { |
| linx0576 | 6:005ff6a49217 | 637 | time_t seconds = time(NULL); |
| linx0576 | 6:005ff6a49217 | 638 | strftime(log[0], 32, "%b %d %Y %I:%M %p\n", localtime(&seconds)); |
| linx0576 | 6:005ff6a49217 | 639 | mselog[0] = stmse; |
| linx0576 | 6:005ff6a49217 | 640 | } |
| linx0576 | 6:005ff6a49217 | 641 | } |
| zsaiyed | 4:e1ec41710eb4 | 642 | } |
| zsaiyed | 5:2ee2c7546568 | 643 | |
| linx0576 | 6:005ff6a49217 | 644 | wait(0.5); TFT.cls(); stage=0; |
| zsaiyed | 5:2ee2c7546568 | 645 | |
| linx0576 | 6:005ff6a49217 | 646 | } |
| linx0576 | 1:f1f3dfff9107 | 647 | } |
| zsaiyed | 5:2ee2c7546568 | 648 | } |
| linx0576 | 6:005ff6a49217 | 649 |