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: mbed
src/menu.cpp@8:d3d7dca419b3, 2018-12-06 (annotated)
- Committer:
- mfwic
- Date:
- Thu Dec 06 16:22:11 2018 +0000
- Revision:
- 8:d3d7dca419b3
- Parent:
- 7:860b3a8275cb
- Child:
- 9:816b9a4e4f21
Added CAL and UNCAL commands.; Added correction factors for voltage and current inputs.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mfwic | 1:9f8583ba2431 | 1 | //------------------------------------------------------------------------------- |
mfwic | 1:9f8583ba2431 | 2 | // |
mfwic | 1:9f8583ba2431 | 3 | // Treehouse Inc. |
mfwic | 1:9f8583ba2431 | 4 | // Colorado Springs, Colorado |
mfwic | 1:9f8583ba2431 | 5 | // |
mfwic | 1:9f8583ba2431 | 6 | // Copyright (c) 2016 by Treehouse Designs Inc. |
mfwic | 1:9f8583ba2431 | 7 | // |
mfwic | 1:9f8583ba2431 | 8 | // This code is the property of Treehouse, Inc. (Treehouse) and may not be redistributed |
mfwic | 1:9f8583ba2431 | 9 | // in any form without prior written permission from the copyright holder, Treehouse. |
mfwic | 1:9f8583ba2431 | 10 | // |
mfwic | 1:9f8583ba2431 | 11 | // The above copyright notice and this permission notice shall be included in |
mfwic | 1:9f8583ba2431 | 12 | // all copies or substantial portions of the Software. |
mfwic | 1:9f8583ba2431 | 13 | // |
mfwic | 1:9f8583ba2431 | 14 | //------------------------------------------------------------------------------- |
mfwic | 1:9f8583ba2431 | 15 | // |
mfwic | 1:9f8583ba2431 | 16 | // REVISION HISTORY: |
mfwic | 1:9f8583ba2431 | 17 | // |
mfwic | 1:9f8583ba2431 | 18 | // $Author: $ |
mfwic | 1:9f8583ba2431 | 19 | // $Rev: $ |
mfwic | 1:9f8583ba2431 | 20 | // $Date: $ |
mfwic | 1:9f8583ba2431 | 21 | // $URL: $ |
mfwic | 1:9f8583ba2431 | 22 | // |
mfwic | 1:9f8583ba2431 | 23 | //------------------------------------------------------------------------------- |
mfwic | 1:9f8583ba2431 | 24 | |
mfwic | 1:9f8583ba2431 | 25 | #include "mbed.h" |
mfwic | 6:39442d493098 | 26 | #include "globals.h" |
mfwic | 1:9f8583ba2431 | 27 | #include "serial.h" |
mfwic | 1:9f8583ba2431 | 28 | #include "menu.h" |
mfwic | 6:39442d493098 | 29 | #include "Ticker.h" |
mfwic | 1:9f8583ba2431 | 30 | |
mfwic | 6:39442d493098 | 31 | Ticker drt; |
mfwic | 7:860b3a8275cb | 32 | unsigned int oldTime=0; |
mfwic | 6:39442d493098 | 33 | |
mfwic | 6:39442d493098 | 34 | /******************************************************************************* |
mfwic | 6:39442d493098 | 35 | drtInt - Display Refresh Timer interrupt handler |
mfwic | 6:39442d493098 | 36 | *******************************************************************************/ |
mfwic | 6:39442d493098 | 37 | // real time clock interrupt to flash the LED |
mfwic | 6:39442d493098 | 38 | void drtInt(void) |
mfwic | 6:39442d493098 | 39 | { |
mfwic | 6:39442d493098 | 40 | updateReady = TRUE; |
mfwic | 6:39442d493098 | 41 | } |
mfwic | 6:39442d493098 | 42 | |
mfwic | 6:39442d493098 | 43 | /******************************************************************************* |
mfwic | 6:39442d493098 | 44 | initDRT - Create Display Refresh Timer interrupt |
mfwic | 6:39442d493098 | 45 | *******************************************************************************/ |
mfwic | 6:39442d493098 | 46 | // initialize display refresh timer (DRT) |
mfwic | 6:39442d493098 | 47 | void initDRT(void) |
mfwic | 6:39442d493098 | 48 | { |
mfwic | 6:39442d493098 | 49 | drt.attach_us(&drtInt, UPDATE_REFRESH_DELAY_US); |
mfwic | 6:39442d493098 | 50 | } |
mfwic | 6:39442d493098 | 51 | |
mfwic | 6:39442d493098 | 52 | /******************************************************************************* |
mfwic | 6:39442d493098 | 53 | refreshData - Refresh voltage and current readings to the terminal |
mfwic | 6:39442d493098 | 54 | *******************************************************************************/ |
mfwic | 6:39442d493098 | 55 | void refreshData(void){ |
mfwic | 8:d3d7dca419b3 | 56 | //loopTime = masterTimer.read_ms() - oldTime; |
mfwic | 8:d3d7dca419b3 | 57 | //oldTime = masterTimer.read_ms(); |
mfwic | 8:d3d7dca419b3 | 58 | |
mfwic | 8:d3d7dca419b3 | 59 | double v48f = 0.0; |
mfwic | 8:d3d7dca419b3 | 60 | double v24f = 0.0; |
mfwic | 8:d3d7dca419b3 | 61 | double v12f = 0.0; |
mfwic | 8:d3d7dca419b3 | 62 | double i48f = 0.0; |
mfwic | 8:d3d7dca419b3 | 63 | double i24f = 0.0; |
mfwic | 8:d3d7dca419b3 | 64 | double i12f = 0.0; |
mfwic | 7:860b3a8275cb | 65 | |
mfwic | 8:d3d7dca419b3 | 66 | if(!raw){ |
mfwic | 8:d3d7dca419b3 | 67 | v48f = VOLTAGE_48_FACTOR*v48; |
mfwic | 8:d3d7dca419b3 | 68 | v24f = VOLTAGE_24_FACTOR*v24; |
mfwic | 8:d3d7dca419b3 | 69 | v12f = VOLTAGE_12_FACTOR*v12; |
mfwic | 8:d3d7dca419b3 | 70 | i48f = (i48-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR; |
mfwic | 8:d3d7dca419b3 | 71 | i24f = (i24-CURRENT_24_OFFSET)/CURRENT_24_DIV_FACTOR; |
mfwic | 8:d3d7dca419b3 | 72 | i12f = (i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR; |
mfwic | 8:d3d7dca419b3 | 73 | }else{ |
mfwic | 8:d3d7dca419b3 | 74 | v48f = 1.0*v48; |
mfwic | 8:d3d7dca419b3 | 75 | v24f = 1.0*v24; |
mfwic | 8:d3d7dca419b3 | 76 | v12f = 1.0*v12; |
mfwic | 8:d3d7dca419b3 | 77 | i48f = 1.0*i48; |
mfwic | 8:d3d7dca419b3 | 78 | i24f = 1.0*i24; |
mfwic | 8:d3d7dca419b3 | 79 | i12f = 1.0*i12; |
mfwic | 8:d3d7dca419b3 | 80 | } |
mfwic | 7:860b3a8275cb | 81 | double pwr_out=v12f*i12f; |
mfwic | 8:d3d7dca419b3 | 82 | double pwr_in=v48f*(i48f-CURRENT_CONTROL_OFFSET); |
mfwic | 7:860b3a8275cb | 83 | double pwr_eff=100*pwr_out/pwr_in; |
mfwic | 7:860b3a8275cb | 84 | |
mfwic | 8:d3d7dca419b3 | 85 | sprintf(strbuf, "V48=%2.1f, I48=%3.1f | V24=%2.1f, I24=%3.1f | V12=%2.1f, I12=%3.1f \r\n", v48f, i48f, v24f, i24f, v12f, i12f); |
mfwic | 8:d3d7dca419b3 | 86 | //sprintf(strbuf, "V48=%2.1f, I48=%2.2f | V24=%2.1f, I24=%2.2f | V12=%2.1f, I12=%2.2f || loop=%d \r\n", v48f, i48f, v24f, i24f, v12f, i12f, loopTime); |
mfwic | 7:860b3a8275cb | 87 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 88 | sprintf(strbuf, "Power Out = %4.1f W, Power In = %4.1f W \r\n", pwr_out, pwr_in); |
mfwic | 7:860b3a8275cb | 89 | sendSerial(strbuf); |
mfwic | 7:860b3a8275cb | 90 | sprintf( strbuf, "%c[34m", 27 ); // ESC=27, Blue Text |
mfwic | 7:860b3a8275cb | 91 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 92 | sprintf(strbuf, "Power Efficiency = %2.2f percent \r\n\r\n", pwr_eff); |
mfwic | 7:860b3a8275cb | 93 | sendSerial(strbuf); |
mfwic | 7:860b3a8275cb | 94 | sprintf( strbuf, "%c[30m", 27 ); // ESC=27, White Text |
mfwic | 6:39442d493098 | 95 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 96 | //sprintf(strbuf, "thermCode=%d, binCode=%d", thermCode[17], binCode[6]); |
mfwic | 8:d3d7dca419b3 | 97 | sprintf(strbuf, "wr_out_code=%d, en_out_code=%d ", wr_out_code, en_out_code); |
mfwic | 6:39442d493098 | 98 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 99 | } |
mfwic | 6:39442d493098 | 100 | |
mfwic | 6:39442d493098 | 101 | /******************************************************************************* |
mfwic | 6:39442d493098 | 102 | updateTerminal - Save cursor, write data, restore cursor. |
mfwic | 6:39442d493098 | 103 | *******************************************************************************/ |
mfwic | 6:39442d493098 | 104 | void updateTerminal(void){ |
mfwic | 6:39442d493098 | 105 | //get cursor pos, store in CUR_POS |
mfwic | 6:39442d493098 | 106 | sprintf( strbuf, "%c7", 27 ); // ESC=27, Save cursor position = [s |
mfwic | 6:39442d493098 | 107 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 108 | //move cursor to DATA_ROW |
mfwic | 8:d3d7dca419b3 | 109 | sprintf( strbuf, "%c[3;0f", 27 ); // ESC=27, Move cursor position = [line;columnf |
mfwic | 6:39442d493098 | 110 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 111 | //write data |
mfwic | 6:39442d493098 | 112 | refreshData(); |
mfwic | 6:39442d493098 | 113 | //move cursor to CUR_POS |
mfwic | 6:39442d493098 | 114 | sprintf( strbuf, "%c8", 27 ); // ESC=27, Save cursor position = [s |
mfwic | 6:39442d493098 | 115 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 116 | } |
mfwic | 6:39442d493098 | 117 | |
mfwic | 6:39442d493098 | 118 | /******************************************************************************* |
mfwic | 6:39442d493098 | 119 | clrScrn - clears terminal and moves cursor to upper-left corner |
mfwic | 6:39442d493098 | 120 | *******************************************************************************/ |
mfwic | 1:9f8583ba2431 | 121 | // clears terminal |
mfwic | 1:9f8583ba2431 | 122 | void clrScrn(void){ |
mfwic | 1:9f8583ba2431 | 123 | sprintf( strbuf, "%c[2J", 27 ); // ESC=27, Clear screen = [2J |
mfwic | 1:9f8583ba2431 | 124 | sendSerial(strbuf); |
mfwic | 1:9f8583ba2431 | 125 | sprintf( strbuf, "%c[f", 27 ); // ESC=27, Move cursor to upper-left corner = [f |
mfwic | 1:9f8583ba2431 | 126 | sendSerial(strbuf); |
mfwic | 1:9f8583ba2431 | 127 | } |
mfwic | 1:9f8583ba2431 | 128 | |
mfwic | 6:39442d493098 | 129 | /******************************************************************************* |
mfwic | 6:39442d493098 | 130 | menuRedraw - Write menu to terminal |
mfwic | 6:39442d493098 | 131 | *******************************************************************************/ |
mfwic | 1:9f8583ba2431 | 132 | // clears terminal and re-draws main menu |
mfwic | 8:d3d7dca419b3 | 133 | void menuRedraw(bool prompt){ |
mfwic | 1:9f8583ba2431 | 134 | clrScrn(); |
mfwic | 7:860b3a8275cb | 135 | |
mfwic | 7:860b3a8275cb | 136 | sprintf( strbuf, "%c[34m", 27 ); // ESC=27, Blue Text |
mfwic | 7:860b3a8275cb | 137 | sendSerial(strbuf); |
mfwic | 7:860b3a8275cb | 138 | |
mfwic | 8:d3d7dca419b3 | 139 | sprintf(strbuf, " Agility Power Systems DCM1 0.4\r\n\r\n"); |
mfwic | 7:860b3a8275cb | 140 | sendSerial(strbuf); |
mfwic | 7:860b3a8275cb | 141 | |
mfwic | 7:860b3a8275cb | 142 | sprintf( strbuf, "%c[0m", 27 ); // ESC=27, Normal |
mfwic | 7:860b3a8275cb | 143 | sendSerial(strbuf); |
mfwic | 7:860b3a8275cb | 144 | sprintf( strbuf, "%c[30m", 27 ); // ESC=27, White Text |
mfwic | 1:9f8583ba2431 | 145 | sendSerial(strbuf); |
mfwic | 6:39442d493098 | 146 | |
mfwic | 6:39442d493098 | 147 | refreshData(); |
mfwic | 6:39442d493098 | 148 | |
mfwic | 8:d3d7dca419b3 | 149 | sprintf(strbuf, "\r\n MULT"); |
mfwic | 1:9f8583ba2431 | 150 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 151 | sprintf(strbuf, "\r\n BRDS"); |
mfwic | 1:9f8583ba2431 | 152 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 153 | sprintf(strbuf, "\r\n ALLOFF"); |
mfwic | 1:9f8583ba2431 | 154 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 155 | sprintf(strbuf, "\r\n RUN [xx]"); |
mfwic | 1:9f8583ba2431 | 156 | sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 157 | sprintf(strbuf, "\r\n STOP"); |
mfwic | 1:9f8583ba2431 | 158 | sendSerial(strbuf); |
mfwic | 3:d8948c5b2951 | 159 | |
mfwic | 8:d3d7dca419b3 | 160 | if(prompt){ |
mfwic | 8:d3d7dca419b3 | 161 | menuPrompt(MENU_DCM1); |
mfwic | 8:d3d7dca419b3 | 162 | } |
mfwic | 3:d8948c5b2951 | 163 | } |
mfwic | 3:d8948c5b2951 | 164 | |
mfwic | 6:39442d493098 | 165 | /******************************************************************************* |
mfwic | 6:39442d493098 | 166 | menuPrompt - Write menu prompt to terminal |
mfwic | 6:39442d493098 | 167 | *******************************************************************************/ |
mfwic | 3:d8948c5b2951 | 168 | // sends carriage return and linefeed and prompt character |
mfwic | 3:d8948c5b2951 | 169 | void menuPrompt(int menuType) |
mfwic | 3:d8948c5b2951 | 170 | { |
mfwic | 3:d8948c5b2951 | 171 | char strMenu[30] ={0}; |
mfwic | 3:d8948c5b2951 | 172 | |
mfwic | 3:d8948c5b2951 | 173 | switch(menuType) |
mfwic | 3:d8948c5b2951 | 174 | { |
mfwic | 3:d8948c5b2951 | 175 | case MENU_DCM1: strcpy(strMenu,"DCM1"); break; |
mfwic | 3:d8948c5b2951 | 176 | //case MENU_DIFFERENTIAL: strcpy(strMenu,"DIFF"); break; |
mfwic | 3:d8948c5b2951 | 177 | //case MENU_SINGLE: strcpy(strMenu,"SINGLE"); break; |
mfwic | 3:d8948c5b2951 | 178 | //case MENU_DUAL: strcpy(strMenu,"DUAL"); break; |
mfwic | 3:d8948c5b2951 | 179 | //case MENU_INVERT: strcpy(strMenu,"INVERT"); break; |
mfwic | 3:d8948c5b2951 | 180 | //case MENU_SETTINGS: strcpy(strMenu,"SET"); break; |
mfwic | 3:d8948c5b2951 | 181 | //case MENU_SETTINGS_CHAN1: strcpy(strMenu,"SET CHAN1"); break; |
mfwic | 3:d8948c5b2951 | 182 | //case MENU_SETTINGS_CHAN2: strcpy(strMenu,"SET CHAN2"); break; |
mfwic | 3:d8948c5b2951 | 183 | //case MENU_SETTINGS_CLOCK: strcpy(strMenu,"SET CLOCK"); break; |
mfwic | 3:d8948c5b2951 | 184 | case MENU_CALIBRATE: strcpy(strMenu,"CAL"); break; |
mfwic | 3:d8948c5b2951 | 185 | case MENU_TEST: strcpy(strMenu,"TEST"); break; |
mfwic | 3:d8948c5b2951 | 186 | case MENU_MAIN: strcpy(strMenu,"MAIN"); break; |
mfwic | 3:d8948c5b2951 | 187 | default: strcpy(strMenu,"UNDF"); break; |
mfwic | 3:d8948c5b2951 | 188 | } |
mfwic | 3:d8948c5b2951 | 189 | |
mfwic | 3:d8948c5b2951 | 190 | // append the CR,LF and the ready character |
mfwic | 3:d8948c5b2951 | 191 | if(serialStatus.computer) |
mfwic | 3:d8948c5b2951 | 192 | { |
mfwic | 3:d8948c5b2951 | 193 | sendSerial("\r"); |
mfwic | 3:d8948c5b2951 | 194 | } |
mfwic | 3:d8948c5b2951 | 195 | else |
mfwic | 3:d8948c5b2951 | 196 | { |
mfwic | 3:d8948c5b2951 | 197 | // adds a carrot so you know you are talking in terminal |
mfwic | 3:d8948c5b2951 | 198 | sprintf(strbuf,"\n\r%s>",strMenu); |
mfwic | 3:d8948c5b2951 | 199 | sendSerial(strbuf); |
mfwic | 3:d8948c5b2951 | 200 | // sendSerial("\n\r>"); |
mfwic | 3:d8948c5b2951 | 201 | } |
mfwic | 8:d3d7dca419b3 | 202 | } |
mfwic | 8:d3d7dca419b3 | 203 | |
mfwic | 8:d3d7dca419b3 | 204 | void splash_screen(void) |
mfwic | 8:d3d7dca419b3 | 205 | { |
mfwic | 8:d3d7dca419b3 | 206 | clrScrn(); |
mfwic | 8:d3d7dca419b3 | 207 | sprintf(strbuf," ___ _ ___ __ ____ _____ __ \r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 208 | sprintf(strbuf," / | ____ _(_) (_) /___ __ / __ \\____ _ _____ _____ / ___/__ _______/ /____ ____ ___ _____\r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 209 | sprintf(strbuf," / /| |/ __ `/ / / / __/ / / / / /_/ / __ \\ | /| / / _ \\/ ___/ \\__ \\/ / / / ___/ __/ _ \\/ __ `__ \\/ ___/\r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 210 | sprintf(strbuf," / ___ / /_/ / / / / /_/ /_/ / / ____/ /_/ / |/ |/ / __/ / ___/ / /_/ (__ ) /_/ __/ / / / / (__ ) \r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 211 | sprintf(strbuf,"/_/ |_\\__, /_/_/_/\\__/\\__, / /_/ \\____/|__/|__/\\___/_/ /____/\\__, /____/\\__/\\___/_/ /_/ /_/____/ \r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 212 | sprintf(strbuf," /____/ /____/ /____/ \r\n");sendSerial(strbuf); |
mfwic | 8:d3d7dca419b3 | 213 | } |
mfwic | 8:d3d7dca419b3 | 214 | /* |
mfwic | 8:d3d7dca419b3 | 215 | sprintf(strbuf," ___ _ ___ __ ____ _____ __ \r\n"); |
mfwic | 8:d3d7dca419b3 | 216 | sprintf(strbuf," / | ____ _(_) (_) /___ __ / __ \____ _ _____ _____ / ___/__ _______/ /____ ____ ___ _____\r\n"); |
mfwic | 8:d3d7dca419b3 | 217 | sprintf(strbuf," / /| |/ __ `/ / / / __/ / / / / /_/ / __ \ | /| / / _ \/ ___/ \__ \/ / / / ___/ __/ _ \/ __ `__ \/ ___/\r\n"); |
mfwic | 8:d3d7dca419b3 | 218 | sprintf(strbuf," / ___ / /_/ / / / / /_/ /_/ / / ____/ /_/ / |/ |/ / __/ / ___/ / /_/ (__ ) /_/ __/ / / / / (__ ) \r\n"); |
mfwic | 8:d3d7dca419b3 | 219 | sprintf(strbuf,"/_/ |_\__, /_/_/_/\__/\__, / /_/ \____/|__/|__/\___/_/ /____/\__, /____/\__/\___/_/ /_/ /_/____/ \r\n"); |
mfwic | 8:d3d7dca419b3 | 220 | sprintf(strbuf," /____/ /____/ /____/ \r\n"); |
mfwic | 8:d3d7dca419b3 | 221 | */ |