![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Level 2 Project Range Device
Dependencies: N5110 SDFileSystem SRF02 TMP102 mbed
Fork of Ranger by
main.cpp@8:fe6ebe807b9d, 2016-04-27 (annotated)
- Committer:
- el15pjt
- Date:
- Wed Apr 27 09:09:55 2016 +0000
- Revision:
- 8:fe6ebe807b9d
- Parent:
- 7:14cfb0df30e6
- Child:
- 9:bc259fc22fa2
Prior to tidying;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el15pjt | 7:14cfb0df30e6 | 1 | |
el15pjt | 7:14cfb0df30e6 | 2 | /** |
el15pjt | 7:14cfb0df30e6 | 3 | @file main.cpp |
el15pjt | 7:14cfb0df30e6 | 4 | @brief Program implementation |
el15pjt | 0:0b180348c7e4 | 5 | */ |
el15pjt | 0:0b180348c7e4 | 6 | |
el15pjt | 7:14cfb0df30e6 | 7 | #include "main.h" |
el15pjt | 7:14cfb0df30e6 | 8 | #include "SDFileSystem.h" |
el15pjt | 8:fe6ebe807b9d | 9 | //Serial serial(USBTX, USBRX); // for PC debug |
el15pjt | 4:673930f04866 | 10 | |
el15pjt | 0:0b180348c7e4 | 11 | |
el15pjt | 0:0b180348c7e4 | 12 | int main() |
el15pjt | 0:0b180348c7e4 | 13 | { |
el15pjt | 8:fe6ebe807b9d | 14 | int d = 0; |
el15pjt | 8:fe6ebe807b9d | 15 | int myarray[9]; |
el15pjt | 7:14cfb0df30e6 | 16 | setup(); |
el15pjt | 7:14cfb0df30e6 | 17 | lcd.init(); // Initiate LCD |
el15pjt | 7:14cfb0df30e6 | 18 | /* |
el15pjt | 7:14cfb0df30e6 | 19 | sprintf(buffer,"ELEC 2645"); |
el15pjt | 7:14cfb0df30e6 | 20 | sprintf(buffer1,"Project Ranger"); |
el15pjt | 7:14cfb0df30e6 | 21 | sprintf(buffer2,"Phil Thompson"); |
el15pjt | 7:14cfb0df30e6 | 22 | sprintf(buffer3,"SID 200971914 "); |
el15pjt | 7:14cfb0df30e6 | 23 | lcd.printString(buffer,0,0); |
el15pjt | 7:14cfb0df30e6 | 24 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 25 | lcd.printString(buffer2,0,2); |
el15pjt | 7:14cfb0df30e6 | 26 | lcd.printString(buffer3,0,3); |
el15pjt | 7:14cfb0df30e6 | 27 | wait (3); |
el15pjt | 7:14cfb0df30e6 | 28 | */ |
el15pjt | 7:14cfb0df30e6 | 29 | /* |
el15pjt | 7:14cfb0df30e6 | 30 | serial.baud(115200); // full-speed! |
el15pjt | 7:14cfb0df30e6 | 31 | serial.printf("#### SD Card Example #####\n"); |
el15pjt | 7:14cfb0df30e6 | 32 | FILE *fp; // this is our file pointer |
el15pjt | 7:14cfb0df30e6 | 33 | wait(1); |
el15pjt | 7:14cfb0df30e6 | 34 | { |
el15pjt | 7:14cfb0df30e6 | 35 | /////////////////////// Reading from file example //////////////////////// |
el15pjt | 7:14cfb0df30e6 | 36 | |
el15pjt | 7:14cfb0df30e6 | 37 | // now open file for reading...note the 'r' |
el15pjt | 7:14cfb0df30e6 | 38 | fp = fopen("/sd/settings.txt", "r"); |
el15pjt | 7:14cfb0df30e6 | 39 | if (fp == NULL) { // if it can't open the file then print error message |
el15pjt | 7:14cfb0df30e6 | 40 | serial.printf("Error! Unable to open file!\n"); |
el15pjt | 7:14cfb0df30e6 | 41 | } else { |
el15pjt | 7:14cfb0df30e6 | 42 | serial.printf("Reading file....\n"); |
el15pjt | 7:14cfb0df30e6 | 43 | int r1; |
el15pjt | 7:14cfb0df30e6 | 44 | int r2; |
el15pjt | 7:14cfb0df30e6 | 45 | int r3; |
el15pjt | 7:14cfb0df30e6 | 46 | int r4; |
el15pjt | 7:14cfb0df30e6 | 47 | int r5; |
el15pjt | 7:14cfb0df30e6 | 48 | int r6; |
el15pjt | 7:14cfb0df30e6 | 49 | int r7; |
el15pjt | 8:fe6ebe807b9d | 50 | int offset; |
el15pjt | 8:fe6ebe807b9d | 51 | float bright; |
el15pjt | 8:fe6ebe807b9d | 52 | float value; |
el15pjt | 7:14cfb0df30e6 | 53 | int i; |
el15pjt | 7:14cfb0df30e6 | 54 | |
el15pjt | 7:14cfb0df30e6 | 55 | // in this example, we keep reading (using fscanf) until we reach |
el15pjt | 7:14cfb0df30e6 | 56 | // the 'end of file'. Note we use the address operator & to write |
el15pjt | 7:14cfb0df30e6 | 57 | // to the variables. Also the format of the string must match what |
el15pjt | 7:14cfb0df30e6 | 58 | // is in the file |
el15pjt | 7:14cfb0df30e6 | 59 | while (fscanf(fp, "%d,%f", &i, &value) != EOF) { |
el15pjt | 7:14cfb0df30e6 | 60 | serial.printf("%d,%f\n",i,value); |
el15pjt | 7:14cfb0df30e6 | 61 | } |
el15pjt | 7:14cfb0df30e6 | 62 | serial.printf("Done.\n"); |
el15pjt | 7:14cfb0df30e6 | 63 | fclose(fp); // ensure you close the file after reading |
el15pjt | 7:14cfb0df30e6 | 64 | } |
el15pjt | 7:14cfb0df30e6 | 65 | } |
el15pjt | 7:14cfb0df30e6 | 66 | */ |
el15pjt | 8:fe6ebe807b9d | 67 | |
el15pjt | 0:0b180348c7e4 | 68 | while(1) { |
el15pjt | 4:673930f04866 | 69 | |
el15pjt | 8:fe6ebe807b9d | 70 | if (g_sw1_flag) { /// Event triggered inturupt to call the menu and reset page numbers |
el15pjt | 5:083d484e95a1 | 71 | g_sw1_flag = 0; |
el15pjt | 5:083d484e95a1 | 72 | page = 0; |
el15pjt | 5:083d484e95a1 | 73 | subpage = 0; |
el15pjt | 6:b464a8a94d91 | 74 | lcd.clear(); |
el15pjt | 5:083d484e95a1 | 75 | menu(); |
el15pjt | 2:329597081c06 | 76 | } |
el15pjt | 5:083d484e95a1 | 77 | |
el15pjt | 3:8782b8b8658b | 78 | if (g_timer_flag_srf02) { |
el15pjt | 8:fe6ebe807b9d | 79 | |
el15pjt | 3:8782b8b8658b | 80 | g_timer_flag_srf02 = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 81 | if (units == METRIC) { |
el15pjt | 5:083d484e95a1 | 82 | distance = srf02.getDistanceCm(); |
el15pjt | 7:14cfb0df30e6 | 83 | distance = distance-(offset*c); |
el15pjt | 5:083d484e95a1 | 84 | } else { |
el15pjt | 5:083d484e95a1 | 85 | distance = srf02.getDistannceInch(); |
el15pjt | 7:14cfb0df30e6 | 86 | distance = distance -(offset*c); |
el15pjt | 5:083d484e95a1 | 87 | } |
el15pjt | 7:14cfb0df30e6 | 88 | |
el15pjt | 8:fe6ebe807b9d | 89 | if (d == 10) { |
el15pjt | 7:14cfb0df30e6 | 90 | d = 0; |
el15pjt | 7:14cfb0df30e6 | 91 | } else { |
el15pjt | 7:14cfb0df30e6 | 92 | d++; |
el15pjt | 7:14cfb0df30e6 | 93 | } |
el15pjt | 7:14cfb0df30e6 | 94 | myarray[d] = distance; |
el15pjt | 8:fe6ebe807b9d | 95 | int totaldistance = 0; |
el15pjt | 8:fe6ebe807b9d | 96 | for (int i = 0; i < 9; i++) { |
el15pjt | 8:fe6ebe807b9d | 97 | int totaldistance = totaldistance+myarray[i]; |
el15pjt | 7:14cfb0df30e6 | 98 | } |
el15pjt | 8:fe6ebe807b9d | 99 | avgdistance = totaldistance/9; |
el15pjt | 0:0b180348c7e4 | 100 | } |
el15pjt | 7:14cfb0df30e6 | 101 | |
el15pjt | 5:083d484e95a1 | 102 | setalert(); |
el15pjt | 3:8782b8b8658b | 103 | lcdoutput(); |
el15pjt | 8:fe6ebe807b9d | 104 | if (!alert == 0) { |
el15pjt | 8:fe6ebe807b9d | 105 | if (buzz_flag == 0) { |
el15pjt | 8:fe6ebe807b9d | 106 | setbuzzer(); |
el15pjt | 8:fe6ebe807b9d | 107 | } |
el15pjt | 8:fe6ebe807b9d | 108 | } |
el15pjt | 3:8782b8b8658b | 109 | setleds(); |
el15pjt | 4:673930f04866 | 110 | sleep(); |
el15pjt | 0:0b180348c7e4 | 111 | } |
el15pjt | 0:0b180348c7e4 | 112 | } |
el15pjt | 0:0b180348c7e4 | 113 | |
el15pjt | 8:fe6ebe807b9d | 114 | |
el15pjt | 3:8782b8b8658b | 115 | void lcdoutput() |
el15pjt | 3:8782b8b8658b | 116 | { |
el15pjt | 7:14cfb0df30e6 | 117 | /** |
el15pjt | 7:14cfb0df30e6 | 118 | Function called to print to the LCD display |
el15pjt | 7:14cfb0df30e6 | 119 | @param i used to scale the max distaance to the width of the screen |
el15pjt | 7:14cfb0df30e6 | 120 | @param distance Distance read from sensor to be dispayed |
el15pjt | 7:14cfb0df30e6 | 121 | @param distbar used to adjust how far along the screen the bar is to go acorrding to distance |
el15pjt | 7:14cfb0df30e6 | 122 | */ |
el15pjt | 7:14cfb0df30e6 | 123 | |
el15pjt | 7:14cfb0df30e6 | 124 | // if alert == 0 no need to display range path is clear |
el15pjt | 6:b464a8a94d91 | 125 | if (alert == 0) { |
el15pjt | 7:14cfb0df30e6 | 126 | if (g_timer_flag_standby) { |
el15pjt | 7:14cfb0df30e6 | 127 | g_timer_flag_standby = 0; |
el15pjt | 7:14cfb0df30e6 | 128 | T = tmp102.get_temperature(); |
el15pjt | 7:14cfb0df30e6 | 129 | standby++; |
el15pjt | 7:14cfb0df30e6 | 130 | if (standby >3) { |
el15pjt | 7:14cfb0df30e6 | 131 | standby = 3; |
el15pjt | 7:14cfb0df30e6 | 132 | } |
el15pjt | 7:14cfb0df30e6 | 133 | } |
el15pjt | 7:14cfb0df30e6 | 134 | |
el15pjt | 7:14cfb0df30e6 | 135 | switch (standby) { |
el15pjt | 7:14cfb0df30e6 | 136 | case 1: |
el15pjt | 8:fe6ebe807b9d | 137 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 138 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 139 | } |
el15pjt | 7:14cfb0df30e6 | 140 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 141 | sprintf(buffer,"**PATH CLEAR**"); |
el15pjt | 7:14cfb0df30e6 | 142 | lcd.printString(buffer,0,0); |
el15pjt | 8:fe6ebe807b9d | 143 | lcd.printString(buffer4,0,5); |
el15pjt | 7:14cfb0df30e6 | 144 | lcd.refresh(); |
el15pjt | 7:14cfb0df30e6 | 145 | break; |
el15pjt | 7:14cfb0df30e6 | 146 | case 2: |
el15pjt | 8:fe6ebe807b9d | 147 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 148 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 149 | } |
el15pjt | 7:14cfb0df30e6 | 150 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 151 | sprintf(buffer3,"TEMP = %.2f",T); |
el15pjt | 7:14cfb0df30e6 | 152 | sprintf(buffer2,"TEMPERATER"); |
el15pjt | 8:fe6ebe807b9d | 153 | lcd.printString(buffer3,4,2); |
el15pjt | 8:fe6ebe807b9d | 154 | lcd.printString(buffer2,12,1); |
el15pjt | 8:fe6ebe807b9d | 155 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 156 | |
el15pjt | 7:14cfb0df30e6 | 157 | break; |
el15pjt | 7:14cfb0df30e6 | 158 | case 3: |
el15pjt | 8:fe6ebe807b9d | 159 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 160 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 161 | } |
el15pjt | 7:14cfb0df30e6 | 162 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 163 | sprintf(buffer3,"TEMP = %.2f",T); |
el15pjt | 7:14cfb0df30e6 | 164 | sprintf(buffer2,"TEMPERATER"); |
el15pjt | 7:14cfb0df30e6 | 165 | lcd.refresh(); |
el15pjt | 8:fe6ebe807b9d | 166 | lcd.printString(buffer3,4,2); |
el15pjt | 8:fe6ebe807b9d | 167 | lcd.printString(buffer2,12,1); |
el15pjt | 8:fe6ebe807b9d | 168 | lcd.printString(buffer4,0,5); |
el15pjt | 7:14cfb0df30e6 | 169 | lcd.setBrightness(0); |
el15pjt | 7:14cfb0df30e6 | 170 | break; |
el15pjt | 7:14cfb0df30e6 | 171 | } |
el15pjt | 7:14cfb0df30e6 | 172 | } |
el15pjt | 7:14cfb0df30e6 | 173 | |
el15pjt | 7:14cfb0df30e6 | 174 | //If alert isn't 0 then the distance is to be dispayed alonng with the the distance bar |
el15pjt | 7:14cfb0df30e6 | 175 | else { |
el15pjt | 7:14cfb0df30e6 | 176 | lcd.setBrightness(bright); |
el15pjt | 7:14cfb0df30e6 | 177 | standby =0; |
el15pjt | 6:b464a8a94d91 | 178 | lcd.clear(); |
el15pjt | 3:8782b8b8658b | 179 | |
el15pjt | 7:14cfb0df30e6 | 180 | if (units == METRIC) { |
el15pjt | 8:fe6ebe807b9d | 181 | sprintf(buffer,"%0.2f Cm",avgdistance); |
el15pjt | 7:14cfb0df30e6 | 182 | sprintf(buffer1,"****RANGE!****"); |
el15pjt | 7:14cfb0df30e6 | 183 | sprintf(buffer2,"DISTANCE"); |
el15pjt | 8:fe6ebe807b9d | 184 | |
el15pjt | 7:14cfb0df30e6 | 185 | sprintf(buffer4,"Menu"); |
el15pjt | 3:8782b8b8658b | 186 | |
el15pjt | 5:083d484e95a1 | 187 | } else { |
el15pjt | 8:fe6ebe807b9d | 188 | sprintf(buffer,"%0.2f Inches",avgdistance); |
el15pjt | 7:14cfb0df30e6 | 189 | sprintf(buffer1,"****RANGE!****"); |
el15pjt | 7:14cfb0df30e6 | 190 | sprintf(buffer2,"***DISTANCE***"); |
el15pjt | 8:fe6ebe807b9d | 191 | sprintf(buffer4,"Menu"); |
el15pjt | 5:083d484e95a1 | 192 | } |
el15pjt | 7:14cfb0df30e6 | 193 | lcd.printString(buffer,25,2); |
el15pjt | 6:b464a8a94d91 | 194 | lcd.printString(buffer1,0,0); |
el15pjt | 7:14cfb0df30e6 | 195 | lcd.printString(buffer2,16,1); |
el15pjt | 7:14cfb0df30e6 | 196 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 197 | |
el15pjt | 7:14cfb0df30e6 | 198 | |
el15pjt | 8:fe6ebe807b9d | 199 | float h = (r7/84); |
el15pjt | 8:fe6ebe807b9d | 200 | float distbar = (avgdistance*h); |
el15pjt | 6:b464a8a94d91 | 201 | //drawRect(int x0,int y0,int width,int height,int fill); |
el15pjt | 8:fe6ebe807b9d | 202 | lcd.drawRect(0,29,distbar,7,1); // |
el15pjt | 6:b464a8a94d91 | 203 | lcd.refresh(); |
el15pjt | 6:b464a8a94d91 | 204 | |
el15pjt | 5:083d484e95a1 | 205 | } |
el15pjt | 3:8782b8b8658b | 206 | |
el15pjt | 3:8782b8b8658b | 207 | } |
el15pjt | 3:8782b8b8658b | 208 | |
el15pjt | 8:fe6ebe807b9d | 209 | |
el15pjt | 3:8782b8b8658b | 210 | void setalert() |
el15pjt | 3:8782b8b8658b | 211 | { |
el15pjt | 7:14cfb0df30e6 | 212 | /** A fuction used to determin the alert level given a range with the use of IF statments |
el15pjt | 7:14cfb0df30e6 | 213 | @param distance The distance read from sensor |
el15pjt | 7:14cfb0df30e6 | 214 | @param alert The level that distance falls with in 0 -7 |
el15pjt | 7:14cfb0df30e6 | 215 | @returns alert |
el15pjt | 7:14cfb0df30e6 | 216 | */ |
el15pjt | 7:14cfb0df30e6 | 217 | |
el15pjt | 8:fe6ebe807b9d | 218 | if (avgdistance >= (r6*c) && avgdistance < (r7*c)) { // r6 150 and r7 200 |
el15pjt | 8:fe6ebe807b9d | 219 | alert = 1; /// alert 1 avgdistance between preset 150Cm to 200Cm |
el15pjt | 8:fe6ebe807b9d | 220 | } else if (avgdistance >= (r5*c) && avgdistance < (r6*c)) { |
el15pjt | 7:14cfb0df30e6 | 221 | alert = 2; /// alert 2 when between preset 90Cm to 150Cm |
el15pjt | 8:fe6ebe807b9d | 222 | } else if (avgdistance >= (r4*c) && avgdistance < (r5*c)) { |
el15pjt | 8:fe6ebe807b9d | 223 | alert = 3; /// alert 3 when avgdistance between 60Cm to 90Cm |
el15pjt | 8:fe6ebe807b9d | 224 | } else if (avgdistance >= (r3*c) && avgdistance < (r4*c)) { |
el15pjt | 8:fe6ebe807b9d | 225 | alert = 4; /// alert 4 when avgdistance between 40Cm and 60Cm |
el15pjt | 8:fe6ebe807b9d | 226 | } else if (avgdistance >= (r2*c) && avgdistance < (r3*c)) { |
el15pjt | 8:fe6ebe807b9d | 227 | alert = 5; ///alert 5 when avgdistance between 20Cm and 40m |
el15pjt | 8:fe6ebe807b9d | 228 | } else if (avgdistance >= (r1*c) && avgdistance <= (r2*c)) { //r1 3 and r2 20 |
el15pjt | 8:fe6ebe807b9d | 229 | alert = 6; ///alert 6 when avgdistance between 1 and 20 |
el15pjt | 8:fe6ebe807b9d | 230 | } else if (avgdistance <=(r1*c)) { |
el15pjt | 8:fe6ebe807b9d | 231 | alert = 7; ///alert 7 when avgdistance below 1Cm |
el15pjt | 8:fe6ebe807b9d | 232 | check_flag = 1; |
el15pjt | 3:8782b8b8658b | 233 | } else { |
el15pjt | 7:14cfb0df30e6 | 234 | alert = 0; /// alert 0 all else |
el15pjt | 3:8782b8b8658b | 235 | } |
el15pjt | 2:329597081c06 | 236 | } |
el15pjt | 2:329597081c06 | 237 | |
el15pjt | 3:8782b8b8658b | 238 | void setleds() |
el15pjt | 3:8782b8b8658b | 239 | { |
el15pjt | 7:14cfb0df30e6 | 240 | if (alert ==7) { |
el15pjt | 5:083d484e95a1 | 241 | if (g_timer_flag_led) { |
el15pjt | 5:083d484e95a1 | 242 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 3:8782b8b8658b | 243 | rr_led = !rr_led; |
el15pjt | 5:083d484e95a1 | 244 | gg_led = !gg_led; |
el15pjt | 5:083d484e95a1 | 245 | a_led = !a_led; |
el15pjt | 5:083d484e95a1 | 246 | } |
el15pjt | 5:083d484e95a1 | 247 | } else if(Alertlevel[alert].fa_led == HIGH) { |
el15pjt | 5:083d484e95a1 | 248 | if (g_timer_flag_led) { |
el15pjt | 5:083d484e95a1 | 249 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 250 | a_led = !a_led; |
el15pjt | 5:083d484e95a1 | 251 | } |
el15pjt | 5:083d484e95a1 | 252 | } else if (Alertlevel[alert].frr_led == HIGH) { |
el15pjt | 5:083d484e95a1 | 253 | if (g_timer_flag_led) { |
el15pjt | 5:083d484e95a1 | 254 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 255 | rr_led = !rr_led; |
el15pjt | 5:083d484e95a1 | 256 | } |
el15pjt | 5:083d484e95a1 | 257 | } else if(Alertlevel[alert].fgg_led == HIGH) { |
el15pjt | 5:083d484e95a1 | 258 | if (g_timer_flag_led) { |
el15pjt | 5:083d484e95a1 | 259 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 260 | gg_led = !gg_led; |
el15pjt | 3:8782b8b8658b | 261 | } |
el15pjt | 3:8782b8b8658b | 262 | } else { |
el15pjt | 3:8782b8b8658b | 263 | rr_led = Alertlevel[alert].srr_led; |
el15pjt | 5:083d484e95a1 | 264 | a_led = Alertlevel[alert].sa_led; |
el15pjt | 5:083d484e95a1 | 265 | gg_led = Alertlevel[alert].sgg_led; |
el15pjt | 3:8782b8b8658b | 266 | } |
el15pjt | 3:8782b8b8658b | 267 | |
el15pjt | 5:083d484e95a1 | 268 | } |
el15pjt | 7:14cfb0df30e6 | 269 | |
el15pjt | 5:083d484e95a1 | 270 | void setbuzzer() |
el15pjt | 5:083d484e95a1 | 271 | { |
el15pjt | 7:14cfb0df30e6 | 272 | /** |
el15pjt | 7:14cfb0df30e6 | 273 | control the PWM to drive the buzzer |
el15pjt | 7:14cfb0df30e6 | 274 | @param buzzer.period frequncy 1KHz |
el15pjt | 7:14cfb0df30e6 | 275 | @param buzzer duty cycle equal on/off max volume |
el15pjt | 7:14cfb0df30e6 | 276 | @param Alertlevel[alert].toneon controls how long the tone will last depending on alert |
el15pjt | 7:14cfb0df30e6 | 277 | */ |
el15pjt | 8:fe6ebe807b9d | 278 | buzzer.period (1.0/1000.0); |
el15pjt | 8:fe6ebe807b9d | 279 | buzzer = 0.5; |
el15pjt | 8:fe6ebe807b9d | 280 | buzzoff.attach(&flip, Alertlevel[alert].toneon); |
el15pjt | 8:fe6ebe807b9d | 281 | } |
el15pjt | 7:14cfb0df30e6 | 282 | |
el15pjt | 8:fe6ebe807b9d | 283 | void flip() |
el15pjt | 8:fe6ebe807b9d | 284 | { |
el15pjt | 8:fe6ebe807b9d | 285 | buzz_flag = 1; |
el15pjt | 8:fe6ebe807b9d | 286 | buzzer = 0.0; |
el15pjt | 8:fe6ebe807b9d | 287 | buzzon.attach(&buzzflag,Alertlevel[alert].toneoff); |
el15pjt | 8:fe6ebe807b9d | 288 | } |
el15pjt | 7:14cfb0df30e6 | 289 | |
el15pjt | 8:fe6ebe807b9d | 290 | void buzzflag() |
el15pjt | 8:fe6ebe807b9d | 291 | { |
el15pjt | 8:fe6ebe807b9d | 292 | buzz_flag = 0; |
el15pjt | 8:fe6ebe807b9d | 293 | return; |
el15pjt | 3:8782b8b8658b | 294 | } |
el15pjt | 3:8782b8b8658b | 295 | |
el15pjt | 3:8782b8b8658b | 296 | void backlight () |
el15pjt | 3:8782b8b8658b | 297 | { |
el15pjt | 3:8782b8b8658b | 298 | if (bright == 1.0) { |
el15pjt | 3:8782b8b8658b | 299 | bright = 0; |
el15pjt | 3:8782b8b8658b | 300 | } else { |
el15pjt | 3:8782b8b8658b | 301 | bright += 0.2; |
el15pjt | 3:8782b8b8658b | 302 | } |
el15pjt | 3:8782b8b8658b | 303 | lcd.setBrightness(bright); |
el15pjt | 3:8782b8b8658b | 304 | } |
el15pjt | 3:8782b8b8658b | 305 | |
el15pjt | 3:8782b8b8658b | 306 | void sw2_isr() |
el15pjt | 3:8782b8b8658b | 307 | { |
el15pjt | 7:14cfb0df30e6 | 308 | g_sw2_flag = 1; /** set flag in ISR by button 2 @param g_sw2_flag 0 or 1*/ |
el15pjt | 3:8782b8b8658b | 309 | } |
el15pjt | 3:8782b8b8658b | 310 | |
el15pjt | 5:083d484e95a1 | 311 | void sw1_isr() |
el15pjt | 3:8782b8b8658b | 312 | { |
el15pjt | 7:14cfb0df30e6 | 313 | g_sw1_flag = 1; /** set flag in ISR by button 2 @param g_sw1_flag 0 or 1*/ |
el15pjt | 5:083d484e95a1 | 314 | } |
el15pjt | 3:8782b8b8658b | 315 | |
el15pjt | 5:083d484e95a1 | 316 | void timer_isr_led() |
el15pjt | 2:329597081c06 | 317 | { |
el15pjt | 7:14cfb0df30e6 | 318 | g_timer_flag_led = 1; /** set flag in ISR by timer_isr_led @param g_timer_flag_led 0 or 1 */ |
el15pjt | 3:8782b8b8658b | 319 | } |
el15pjt | 3:8782b8b8658b | 320 | |
el15pjt | 3:8782b8b8658b | 321 | void timer_isr_srf02() |
el15pjt | 3:8782b8b8658b | 322 | { |
el15pjt | 7:14cfb0df30e6 | 323 | g_timer_flag_srf02 = 1; /** set flag in ISR by ticker_srf02 @param g_timer_flag_srf02 0 or 1 */ |
el15pjt | 4:673930f04866 | 324 | } |
el15pjt | 4:673930f04866 | 325 | |
el15pjt | 4:673930f04866 | 326 | void timer_isr_tone() |
el15pjt | 4:673930f04866 | 327 | { |
el15pjt | 7:14cfb0df30e6 | 328 | g_timer_flag_tone = 1; /** set flag in ISR by ticker_tone @param g_timer_flag_tone 0 or 1 */ |
el15pjt | 7:14cfb0df30e6 | 329 | } |
el15pjt | 7:14cfb0df30e6 | 330 | void timer_isr_standby() |
el15pjt | 7:14cfb0df30e6 | 331 | { |
el15pjt | 7:14cfb0df30e6 | 332 | g_timer_flag_standby = 1; /** set flag in ISR by ticker_tone @param g_timer_flag_tone 0 or 1 */ |
el15pjt | 4:673930f04866 | 333 | } |
el15pjt | 4:673930f04866 | 334 | |
el15pjt | 5:083d484e95a1 | 335 | void menu() |
el15pjt | 4:673930f04866 | 336 | { |
el15pjt | 5:083d484e95a1 | 337 | while(1) { |
el15pjt | 6:b464a8a94d91 | 338 | |
el15pjt | 6:b464a8a94d91 | 339 | |
el15pjt | 5:083d484e95a1 | 340 | if (g_sw1_flag) { |
el15pjt | 5:083d484e95a1 | 341 | g_sw1_flag = 0; |
el15pjt | 7:14cfb0df30e6 | 342 | page++; /// Moves page |
el15pjt | 6:b464a8a94d91 | 343 | lcd.clear(); |
el15pjt | 5:083d484e95a1 | 344 | } |
el15pjt | 5:083d484e95a1 | 345 | switch (page) { |
el15pjt | 5:083d484e95a1 | 346 | case 0: |
el15pjt | 5:083d484e95a1 | 347 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 348 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 349 | backlight(); |
el15pjt | 6:b464a8a94d91 | 350 | lcd.clear(); |
el15pjt | 6:b464a8a94d91 | 351 | } else { |
el15pjt | 6:b464a8a94d91 | 352 | int lightbar = bright*84; |
el15pjt | 7:14cfb0df30e6 | 353 | sprintf(buffer2,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 354 | sprintf(buffer1,"BACKLIGHT"); |
el15pjt | 7:14cfb0df30e6 | 355 | sprintf(buffer3,"%.0f%%",bright*100); |
el15pjt | 8:fe6ebe807b9d | 356 | sprintf(buffer4,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 357 | lcd.printString(buffer2,0,0); |
el15pjt | 5:083d484e95a1 | 358 | lcd.printString(buffer1,0,1); |
el15pjt | 5:083d484e95a1 | 359 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 360 | lcd.printString(buffer4,0,5); |
el15pjt | 7:14cfb0df30e6 | 361 | lcd.drawRect(0,26,lightbar,7,1); // move bar up!!!!!!!!!!!!!!!! |
el15pjt | 6:b464a8a94d91 | 362 | lcd.refresh(); |
el15pjt | 6:b464a8a94d91 | 363 | |
el15pjt | 5:083d484e95a1 | 364 | } |
el15pjt | 5:083d484e95a1 | 365 | break; |
el15pjt | 5:083d484e95a1 | 366 | |
el15pjt | 5:083d484e95a1 | 367 | case 1: |
el15pjt | 5:083d484e95a1 | 368 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 369 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 370 | if (offset == 20) { |
el15pjt | 5:083d484e95a1 | 371 | offset = 0; |
el15pjt | 5:083d484e95a1 | 372 | } else { |
el15pjt | 5:083d484e95a1 | 373 | offset += 1; |
el15pjt | 5:083d484e95a1 | 374 | } |
el15pjt | 6:b464a8a94d91 | 375 | } else { |
el15pjt | 6:b464a8a94d91 | 376 | length2 = sprintf(buffer2,"*****MENU*****"); |
el15pjt | 6:b464a8a94d91 | 377 | length1 = sprintf(buffer1,"OFFSET"); |
el15pjt | 6:b464a8a94d91 | 378 | length3 = sprintf(buffer3,"%i",offset); |
el15pjt | 8:fe6ebe807b9d | 379 | sprintf(buffer4,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 380 | lcd.printString(buffer2,0,0); |
el15pjt | 5:083d484e95a1 | 381 | lcd.printString(buffer1,0,1); |
el15pjt | 5:083d484e95a1 | 382 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 383 | lcd.printString(buffer4,0,5); |
el15pjt | 6:b464a8a94d91 | 384 | lcd.refresh(); |
el15pjt | 5:083d484e95a1 | 385 | } |
el15pjt | 6:b464a8a94d91 | 386 | |
el15pjt | 5:083d484e95a1 | 387 | break; |
el15pjt | 5:083d484e95a1 | 388 | |
el15pjt | 5:083d484e95a1 | 389 | case 2: |
el15pjt | 5:083d484e95a1 | 390 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 391 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 392 | if (units == METRIC) { |
el15pjt | 5:083d484e95a1 | 393 | units = IMPERIAL; |
el15pjt | 7:14cfb0df30e6 | 394 | c= 0.3937; |
el15pjt | 5:083d484e95a1 | 395 | } else { |
el15pjt | 5:083d484e95a1 | 396 | units = METRIC; |
el15pjt | 7:14cfb0df30e6 | 397 | c = 1; |
el15pjt | 5:083d484e95a1 | 398 | } |
el15pjt | 5:083d484e95a1 | 399 | } |
el15pjt | 5:083d484e95a1 | 400 | if (units == METRIC) { |
el15pjt | 7:14cfb0df30e6 | 401 | sprintf(buffer3,"METRIC"); |
el15pjt | 7:14cfb0df30e6 | 402 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 403 | } else { |
el15pjt | 7:14cfb0df30e6 | 404 | sprintf(buffer3,"IMPERIAL"); |
el15pjt | 7:14cfb0df30e6 | 405 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 406 | } |
el15pjt | 7:14cfb0df30e6 | 407 | sprintf(buffer2,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 408 | sprintf(buffer1,"UNITS"); |
el15pjt | 8:fe6ebe807b9d | 409 | sprintf(buffer4,"NEXT ADJ"); |
el15pjt | 6:b464a8a94d91 | 410 | lcd.printString(buffer2,0,0); |
el15pjt | 6:b464a8a94d91 | 411 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 412 | lcd.printString(buffer4,0,5); |
el15pjt | 7:14cfb0df30e6 | 413 | lcd.refresh(); |
el15pjt | 6:b464a8a94d91 | 414 | |
el15pjt | 5:083d484e95a1 | 415 | break; |
el15pjt | 8:fe6ebe807b9d | 416 | case 3: |
el15pjt | 8:fe6ebe807b9d | 417 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 418 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 419 | check_flag =0; |
el15pjt | 8:fe6ebe807b9d | 420 | } |
el15pjt | 8:fe6ebe807b9d | 421 | length2 = sprintf(buffer3,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 422 | length3 = sprintf(buffer1,"CLEAR"); |
el15pjt | 8:fe6ebe807b9d | 423 | length3 = sprintf(buffer2,"COLLISION"); |
el15pjt | 8:fe6ebe807b9d | 424 | sprintf(buffer4,"NEXT YES"); |
el15pjt | 8:fe6ebe807b9d | 425 | lcd.printString(buffer3,0,0); |
el15pjt | 8:fe6ebe807b9d | 426 | lcd.printString(buffer1,0,1); |
el15pjt | 8:fe6ebe807b9d | 427 | lcd.printString(buffer2,0,2); |
el15pjt | 8:fe6ebe807b9d | 428 | lcd.printString(buffer4,0,5); |
el15pjt | 5:083d484e95a1 | 429 | |
el15pjt | 8:fe6ebe807b9d | 430 | break; |
el15pjt | 8:fe6ebe807b9d | 431 | case 4: |
el15pjt | 5:083d484e95a1 | 432 | |
el15pjt | 5:083d484e95a1 | 433 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 434 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 435 | submenu(); |
el15pjt | 5:083d484e95a1 | 436 | } |
el15pjt | 5:083d484e95a1 | 437 | length2 = sprintf(buffer3,"*****MENU*****"); |
el15pjt | 5:083d484e95a1 | 438 | length3 = sprintf(buffer1,"RANGE"); |
el15pjt | 5:083d484e95a1 | 439 | length3 = sprintf(buffer2,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 440 | sprintf(buffer4,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 441 | lcd.printString(buffer3,0,0); |
el15pjt | 5:083d484e95a1 | 442 | lcd.printString(buffer1,0,1); |
el15pjt | 5:083d484e95a1 | 443 | lcd.printString(buffer2,0,2); |
el15pjt | 7:14cfb0df30e6 | 444 | lcd.printString(buffer4,0,5); |
el15pjt | 6:b464a8a94d91 | 445 | |
el15pjt | 5:083d484e95a1 | 446 | break; |
el15pjt | 5:083d484e95a1 | 447 | |
el15pjt | 5:083d484e95a1 | 448 | default: |
el15pjt | 5:083d484e95a1 | 449 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 450 | /* //save(); |
el15pjt | 7:14cfb0df30e6 | 451 | |
el15pjt | 7:14cfb0df30e6 | 452 | ///////////////////// Writing list to file example ////////////////////// |
el15pjt | 7:14cfb0df30e6 | 453 | |
el15pjt | 7:14cfb0df30e6 | 454 | // for this example, I'll create some numbers to write to file in a big list |
el15pjt | 7:14cfb0df30e6 | 455 | // a data logger for example will usually append to a file - at a reading |
el15pjt | 7:14cfb0df30e6 | 456 | // at the end rather than creating a new file |
el15pjt | 7:14cfb0df30e6 | 457 | fp = fopen("/sd/settinngs.txt", "a"); |
el15pjt | 7:14cfb0df30e6 | 458 | |
el15pjt | 7:14cfb0df30e6 | 459 | if (fp == NULL) { // if it can't open the file then print error message |
el15pjt | 7:14cfb0df30e6 | 460 | serial.printf("Error! Unable to open file!\n"); |
el15pjt | 7:14cfb0df30e6 | 461 | } else { // opened file so can write |
el15pjt | 7:14cfb0df30e6 | 462 | serial.printf("Writing to file...."); |
el15pjt | 7:14cfb0df30e6 | 463 | for(int i = 1; i <= 50; i++) { |
el15pjt | 7:14cfb0df30e6 | 464 | int r1; |
el15pjt | 7:14cfb0df30e6 | 465 | int r2; |
el15pjt | 7:14cfb0df30e6 | 466 | int r3; |
el15pjt | 7:14cfb0df30e6 | 467 | int r4; |
el15pjt | 7:14cfb0df30e6 | 468 | int r5; |
el15pjt | 7:14cfb0df30e6 | 469 | int r6; |
el15pjt | 7:14cfb0df30e6 | 470 | int r7; |
el15pjt | 7:14cfb0df30e6 | 471 | int offset; // create suitable variables to store the data in the file |
el15pjt | 7:14cfb0df30e6 | 472 | float bright; |
el15pjt | 7:14cfb0df30e6 | 473 | float dummy = 1000.0F/i; // dummy variable |
el15pjt | 7:14cfb0df30e6 | 474 | fprintf(fp, "%d,%f\n",i,dummy); // print formatted string to file (CSV) |
el15pjt | 7:14cfb0df30e6 | 475 | } |
el15pjt | 7:14cfb0df30e6 | 476 | serial.printf("Done.\n"); |
el15pjt | 7:14cfb0df30e6 | 477 | fclose(fp); // ensure you close the file after writing |
el15pjt | 7:14cfb0df30e6 | 478 | } |
el15pjt | 7:14cfb0df30e6 | 479 | |
el15pjt | 7:14cfb0df30e6 | 480 | // you can comment out the writing example to check that the writing has |
el15pjt | 7:14cfb0df30e6 | 481 | // worked - when you run it after commenting, it should still open the |
el15pjt | 7:14cfb0df30e6 | 482 | // file that exists on the SD card - assuming you didn't delete it! |
el15pjt | 7:14cfb0df30e6 | 483 | */ |
el15pjt | 5:083d484e95a1 | 484 | return; |
el15pjt | 5:083d484e95a1 | 485 | } |
el15pjt | 4:673930f04866 | 486 | } |
el15pjt | 5:083d484e95a1 | 487 | } |
el15pjt | 5:083d484e95a1 | 488 | void submenu() |
el15pjt | 5:083d484e95a1 | 489 | { |
el15pjt | 7:14cfb0df30e6 | 490 | |
el15pjt | 5:083d484e95a1 | 491 | while(1) { |
el15pjt | 7:14cfb0df30e6 | 492 | /// innterupt used to shift page |
el15pjt | 5:083d484e95a1 | 493 | if (g_sw1_flag) { |
el15pjt | 5:083d484e95a1 | 494 | g_sw1_flag = 0; |
el15pjt | 5:083d484e95a1 | 495 | subpage++; |
el15pjt | 5:083d484e95a1 | 496 | } |
el15pjt | 5:083d484e95a1 | 497 | switch (subpage) { |
el15pjt | 7:14cfb0df30e6 | 498 | ///interupt used to adjust range |
el15pjt | 5:083d484e95a1 | 499 | case 0: |
el15pjt | 5:083d484e95a1 | 500 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 501 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 502 | if (r2 == r3) { |
el15pjt | 5:083d484e95a1 | 503 | r2 = 1; |
el15pjt | 5:083d484e95a1 | 504 | } else { |
el15pjt | 5:083d484e95a1 | 505 | r2 = r2+1; |
el15pjt | 5:083d484e95a1 | 506 | } |
el15pjt | 5:083d484e95a1 | 507 | } |
el15pjt | 5:083d484e95a1 | 508 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 5:083d484e95a1 | 509 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 5:083d484e95a1 | 510 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 5:083d484e95a1 | 511 | length4 = sprintf(buffer4,"1Cm to %iCm",r2); |
el15pjt | 8:fe6ebe807b9d | 512 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 513 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 514 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 515 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 516 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 517 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 518 | break; |
el15pjt | 5:083d484e95a1 | 519 | |
el15pjt | 5:083d484e95a1 | 520 | case 1: |
el15pjt | 5:083d484e95a1 | 521 | |
el15pjt | 5:083d484e95a1 | 522 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 523 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 524 | if (r3 == r4) { |
el15pjt | 5:083d484e95a1 | 525 | r3 = r2; |
el15pjt | 5:083d484e95a1 | 526 | } else { |
el15pjt | 5:083d484e95a1 | 527 | r3 += 1; |
el15pjt | 5:083d484e95a1 | 528 | } |
el15pjt | 5:083d484e95a1 | 529 | } |
el15pjt | 5:083d484e95a1 | 530 | |
el15pjt | 7:14cfb0df30e6 | 531 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 532 | sprintf(buffer2,"RANGE"); |
el15pjt | 7:14cfb0df30e6 | 533 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 7:14cfb0df30e6 | 534 | sprintf(buffer4,"%iCm to %iCm",r2,r3); |
el15pjt | 8:fe6ebe807b9d | 535 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 536 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 537 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 538 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 539 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 540 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 541 | break; |
el15pjt | 5:083d484e95a1 | 542 | |
el15pjt | 5:083d484e95a1 | 543 | case 2: |
el15pjt | 5:083d484e95a1 | 544 | |
el15pjt | 5:083d484e95a1 | 545 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 546 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 547 | if (r4 == r5) { |
el15pjt | 5:083d484e95a1 | 548 | r4 = r3; |
el15pjt | 5:083d484e95a1 | 549 | } else { |
el15pjt | 5:083d484e95a1 | 550 | r4 += 1; |
el15pjt | 5:083d484e95a1 | 551 | } |
el15pjt | 5:083d484e95a1 | 552 | } |
el15pjt | 5:083d484e95a1 | 553 | |
el15pjt | 7:14cfb0df30e6 | 554 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 555 | sprintf(buffer2,"RANGE"); |
el15pjt | 7:14cfb0df30e6 | 556 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 7:14cfb0df30e6 | 557 | sprintf(buffer4,"%iCm to %iCm",r3,r4); |
el15pjt | 8:fe6ebe807b9d | 558 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 559 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 560 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 561 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 562 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 563 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 564 | break; |
el15pjt | 5:083d484e95a1 | 565 | |
el15pjt | 5:083d484e95a1 | 566 | case 3: |
el15pjt | 5:083d484e95a1 | 567 | |
el15pjt | 5:083d484e95a1 | 568 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 569 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 570 | if (r5 == r6) { |
el15pjt | 5:083d484e95a1 | 571 | r5 = r4; |
el15pjt | 5:083d484e95a1 | 572 | } else { |
el15pjt | 5:083d484e95a1 | 573 | r5 += 1; |
el15pjt | 5:083d484e95a1 | 574 | } |
el15pjt | 5:083d484e95a1 | 575 | } |
el15pjt | 5:083d484e95a1 | 576 | |
el15pjt | 7:14cfb0df30e6 | 577 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 578 | sprintf(buffer2,"RANGE"); |
el15pjt | 7:14cfb0df30e6 | 579 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 7:14cfb0df30e6 | 580 | sprintf(buffer4,"%iCm to %iCm",r4,r5); |
el15pjt | 8:fe6ebe807b9d | 581 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 582 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 583 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 584 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 585 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 586 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 587 | break; |
el15pjt | 5:083d484e95a1 | 588 | case 4: |
el15pjt | 5:083d484e95a1 | 589 | |
el15pjt | 5:083d484e95a1 | 590 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 591 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 592 | if (r6 == r7) { |
el15pjt | 5:083d484e95a1 | 593 | r6 = r5; |
el15pjt | 5:083d484e95a1 | 594 | } else { |
el15pjt | 5:083d484e95a1 | 595 | r6 += 1; |
el15pjt | 5:083d484e95a1 | 596 | } |
el15pjt | 5:083d484e95a1 | 597 | } |
el15pjt | 5:083d484e95a1 | 598 | |
el15pjt | 5:083d484e95a1 | 599 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 5:083d484e95a1 | 600 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 5:083d484e95a1 | 601 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 6:b464a8a94d91 | 602 | length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6); |
el15pjt | 8:fe6ebe807b9d | 603 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 5:083d484e95a1 | 604 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 605 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 606 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 607 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 608 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 609 | break; |
el15pjt | 5:083d484e95a1 | 610 | case 5: |
el15pjt | 5:083d484e95a1 | 611 | |
el15pjt | 5:083d484e95a1 | 612 | if (g_sw2_flag) { |
el15pjt | 5:083d484e95a1 | 613 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 5:083d484e95a1 | 614 | if (r7 == 300) { |
el15pjt | 5:083d484e95a1 | 615 | r7 = r6; |
el15pjt | 5:083d484e95a1 | 616 | } else { |
el15pjt | 5:083d484e95a1 | 617 | r7 += 1; |
el15pjt | 5:083d484e95a1 | 618 | } |
el15pjt | 5:083d484e95a1 | 619 | } |
el15pjt | 5:083d484e95a1 | 620 | |
el15pjt | 5:083d484e95a1 | 621 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 5:083d484e95a1 | 622 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 5:083d484e95a1 | 623 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 624 | sprintf(buffer,"NEXT ADJ"); |
el15pjt | 6:b464a8a94d91 | 625 | length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7); |
el15pjt | 5:083d484e95a1 | 626 | lcd.printString(buffer1,0,0); |
el15pjt | 5:083d484e95a1 | 627 | lcd.printString(buffer2,0,1); |
el15pjt | 5:083d484e95a1 | 628 | lcd.printString(buffer3,0,2); |
el15pjt | 5:083d484e95a1 | 629 | lcd.printString(buffer4,0,3); |
el15pjt | 7:14cfb0df30e6 | 630 | lcd.printString(buffer,0,5); |
el15pjt | 5:083d484e95a1 | 631 | break; |
el15pjt | 5:083d484e95a1 | 632 | |
el15pjt | 5:083d484e95a1 | 633 | default: |
el15pjt | 5:083d484e95a1 | 634 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 635 | // save(); |
el15pjt | 5:083d484e95a1 | 636 | return; |
el15pjt | 5:083d484e95a1 | 637 | } |
el15pjt | 5:083d484e95a1 | 638 | } |
el15pjt | 7:14cfb0df30e6 | 639 | } |
el15pjt | 7:14cfb0df30e6 | 640 | void setup() |
el15pjt | 7:14cfb0df30e6 | 641 | { |
el15pjt | 7:14cfb0df30e6 | 642 | ticker.attach(&timer_isr_led,0.35); /// Attach the ticker for the flashig LEDs |
el15pjt | 7:14cfb0df30e6 | 643 | ticker_srf02.attach(&timer_isr_srf02,0.1); /// Attach the ticker for collecting a range reading |
el15pjt | 8:fe6ebe807b9d | 644 | // ticker_tone.attach(&timer_isr_tone,0.1); /// Attach the ticker which controls the off time of the buzzer 0.1 = 10 beats per second |
el15pjt | 7:14cfb0df30e6 | 645 | ticker_standby.attach(&timer_isr_standby,3.0); |
el15pjt | 7:14cfb0df30e6 | 646 | sw1.rise(&sw1_isr); /// sw1_isr called when button presed on the rising edge |
el15pjt | 7:14cfb0df30e6 | 647 | sw2.rise(&sw2_isr); /// sw2_isr called when button presed on the rising edge |
el15pjt | 7:14cfb0df30e6 | 648 | |
el15pjt | 8:fe6ebe807b9d | 649 | |
el15pjt | 8:fe6ebe807b9d | 650 | r_led = 1; |
el15pjt | 8:fe6ebe807b9d | 651 | b_led = 1; |
el15pjt | 8:fe6ebe807b9d | 652 | g_led = 1; |
el15pjt | 7:14cfb0df30e6 | 653 | rr_led = 0; |
el15pjt | 7:14cfb0df30e6 | 654 | a_led = 0; |
el15pjt | 7:14cfb0df30e6 | 655 | gg_led = 0; |
el15pjt | 7:14cfb0df30e6 | 656 | sw2.mode(PullDown); |
el15pjt | 7:14cfb0df30e6 | 657 | sw1.mode(PullDown); |
el15pjt | 5:083d484e95a1 | 658 | } |