Level 2 Project Range Device
Dependencies: N5110 SDFileSystem SRF02 TMP102 mbed
main.h@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 | @file main.h |
el15pjt | 7:14cfb0df30e6 | 3 | @brief Header file containing functions prototypes, defines and global variables. |
el15pjt | 7:14cfb0df30e6 | 4 | @brief Ranger Project |
el15pjt | 7:14cfb0df30e6 | 5 | @brief Revision 1.0. |
el15pjt | 7:14cfb0df30e6 | 6 | @author Philip Thompson |
el15pjt | 7:14cfb0df30e6 | 7 | @date March 2016 |
el15pjt | 7:14cfb0df30e6 | 8 | @brief The following code has been writen for the University of Leeds ELEC264501 embedded system project and is intended to |
el15pjt | 7:14cfb0df30e6 | 9 | create a programe that can read a distance from an SRF02 sensor and then based aponn the reading disply the distance on the screen |
el15pjt | 7:14cfb0df30e6 | 10 | and increment the LEDs and buzzer according the provision of a temperature sensor is also provied as a secondary function when no |
el15pjt | 7:14cfb0df30e6 | 11 | object is detected with in range. |
el15pjt | 7:14cfb0df30e6 | 12 | */ |
el15pjt | 7:14cfb0df30e6 | 13 | |
el15pjt | 7:14cfb0df30e6 | 14 | #ifndef MAIN_H |
el15pjt | 7:14cfb0df30e6 | 15 | #define MAIN_H |
el15pjt | 7:14cfb0df30e6 | 16 | #include "mbed.h" |
el15pjt | 7:14cfb0df30e6 | 17 | #include "mbed.h" |
el15pjt | 7:14cfb0df30e6 | 18 | #include "SRF02.h" |
el15pjt | 7:14cfb0df30e6 | 19 | #include "N5110.h" |
el15pjt | 7:14cfb0df30e6 | 20 | #include "TMP102.h" |
el15pjt | 7:14cfb0df30e6 | 21 | #include "SDFileSystem.h" |
el15pjt | 7:14cfb0df30e6 | 22 | |
el15pjt | 7:14cfb0df30e6 | 23 | #define LOW 0 /// No output |
el15pjt | 7:14cfb0df30e6 | 24 | #define HIGH 1 /// High output |
el15pjt | 7:14cfb0df30e6 | 25 | #define METRIC 1 |
el15pjt | 7:14cfb0df30e6 | 26 | #define IMPERIAL 0 |
el15pjt | 7:14cfb0df30e6 | 27 | |
el15pjt | 7:14cfb0df30e6 | 28 | |
el15pjt | 8:fe6ebe807b9d | 29 | |
el15pjt | 7:14cfb0df30e6 | 30 | /** |
el15pjt | 7:14cfb0df30e6 | 31 | @namespace LEDs |
el15pjt | 7:14cfb0df30e6 | 32 | @brief Output for Alert LEDs |
el15pjt | 7:14cfb0df30e6 | 33 | */ |
el15pjt | 7:14cfb0df30e6 | 34 | DigitalOut rr_led (PTA1); |
el15pjt | 7:14cfb0df30e6 | 35 | DigitalOut a_led (PTC2); |
el15pjt | 7:14cfb0df30e6 | 36 | DigitalOut gg_led(PTB23); |
el15pjt | 7:14cfb0df30e6 | 37 | |
el15pjt | 7:14cfb0df30e6 | 38 | /** |
el15pjt | 7:14cfb0df30e6 | 39 | @namespace BOARDLEDs |
el15pjt | 7:14cfb0df30e6 | 40 | @brief On board LEDs |
el15pjt | 7:14cfb0df30e6 | 41 | */ |
el15pjt | 7:14cfb0df30e6 | 42 | DigitalOut r_led(LED_RED); |
el15pjt | 7:14cfb0df30e6 | 43 | DigitalOut g_led(LED_GREEN); |
el15pjt | 7:14cfb0df30e6 | 44 | DigitalOut b_led(LED_BLUE); |
el15pjt | 7:14cfb0df30e6 | 45 | |
el15pjt | 7:14cfb0df30e6 | 46 | /** |
el15pjt | 7:14cfb0df30e6 | 47 | @namespace Buzzer |
el15pjt | 7:14cfb0df30e6 | 48 | @brief PWM output for Buzzer |
el15pjt | 7:14cfb0df30e6 | 49 | */ |
el15pjt | 7:14cfb0df30e6 | 50 | PwmOut buzzer(PTA2); |
el15pjt | 7:14cfb0df30e6 | 51 | |
el15pjt | 7:14cfb0df30e6 | 52 | /** |
el15pjt | 7:14cfb0df30e6 | 53 | @namespace Buttons |
el15pjt | 7:14cfb0df30e6 | 54 | @brief Button triggered Interrupts |
el15pjt | 7:14cfb0df30e6 | 55 | */ |
el15pjt | 7:14cfb0df30e6 | 56 | InterruptIn sw1(PTB19); |
el15pjt | 7:14cfb0df30e6 | 57 | InterruptIn sw2(PTB18); |
el15pjt | 7:14cfb0df30e6 | 58 | |
el15pjt | 7:14cfb0df30e6 | 59 | /** |
el15pjt | 7:14cfb0df30e6 | 60 | @namespace Timers |
el15pjt | 8:fe6ebe807b9d | 61 | @brief Tickers and Timeouts |
el15pjt | 7:14cfb0df30e6 | 62 | */ |
el15pjt | 7:14cfb0df30e6 | 63 | Ticker ticker; |
el15pjt | 7:14cfb0df30e6 | 64 | Ticker ticker_srf02; |
el15pjt | 8:fe6ebe807b9d | 65 | //Ticker ticker_tone; |
el15pjt | 7:14cfb0df30e6 | 66 | Ticker ticker_standby; |
el15pjt | 7:14cfb0df30e6 | 67 | Timeout buzzoff; |
el15pjt | 8:fe6ebe807b9d | 68 | Timeout buzzon; |
el15pjt | 7:14cfb0df30e6 | 69 | |
el15pjt | 7:14cfb0df30e6 | 70 | // Create TMP102 object |
el15pjt | 7:14cfb0df30e6 | 71 | TMP102 tmp102(I2C_SDA,I2C_SCL); |
el15pjt | 7:14cfb0df30e6 | 72 | |
el15pjt | 7:14cfb0df30e6 | 73 | /** |
el15pjt | 7:14cfb0df30e6 | 74 | @namespace Ranger |
el15pjt | 7:14cfb0df30e6 | 75 | @brief Creat the Ranger object |
el15pjt | 7:14cfb0df30e6 | 76 | */ |
el15pjt | 7:14cfb0df30e6 | 77 | SRF02 srf02(I2C_SDA,I2C_SCL); |
el15pjt | 7:14cfb0df30e6 | 78 | |
el15pjt | 7:14cfb0df30e6 | 79 | /** |
el15pjt | 7:14cfb0df30e6 | 80 | @namespace LCD |
el15pjt | 7:14cfb0df30e6 | 81 | @brief Creats the LCD object |
el15pjt | 7:14cfb0df30e6 | 82 | */ |
el15pjt | 7:14cfb0df30e6 | 83 | N5110 lcd(PTE26,PTA0,PTC4,PTD0,PTD2,PTD1,PTC3); |
el15pjt | 7:14cfb0df30e6 | 84 | |
el15pjt | 7:14cfb0df30e6 | 85 | /// Connections to SD card holder on K64F (SPI interface) |
el15pjt | 7:14cfb0df30e6 | 86 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS |
el15pjt | 8:fe6ebe807b9d | 87 | FILE *fp; |
el15pjt | 7:14cfb0df30e6 | 88 | /** |
el15pjt | 7:14cfb0df30e6 | 89 | @namespace TimerFlags |
el15pjt | 7:14cfb0df30e6 | 90 | @brief Flags for use with timed interupts |
el15pjt | 7:14cfb0df30e6 | 91 | */ |
el15pjt | 7:14cfb0df30e6 | 92 | volatile int g_timer_flag_led = 0, g_timer_flag_srf02 = 0, g_timer_flag_tone = 0; /** Flag rised by interupts*/ |
el15pjt | 7:14cfb0df30e6 | 93 | volatile int g_timer_flag_standby = 0; |
el15pjt | 8:fe6ebe807b9d | 94 | volatile int buzz_flag = 0; |
el15pjt | 7:14cfb0df30e6 | 95 | /** |
el15pjt | 7:14cfb0df30e6 | 96 | @namespace ButtonFlages |
el15pjt | 7:14cfb0df30e6 | 97 | @brief Flags for use with button interupts |
el15pjt | 7:14cfb0df30e6 | 98 | */ |
el15pjt | 7:14cfb0df30e6 | 99 | volatile int g_sw1_flag = 0, g_sw2_flag = 0; |
el15pjt | 7:14cfb0df30e6 | 100 | |
el15pjt | 7:14cfb0df30e6 | 101 | /** |
el15pjt | 7:14cfb0df30e6 | 102 | @namespace RangePresets |
el15pjt | 7:14cfb0df30e6 | 103 | @brief Preset range of the differant alert levels |
el15pjt | 7:14cfb0df30e6 | 104 | */ |
el15pjt | 8:fe6ebe807b9d | 105 | int r1 = 3,/*!< Upper limit of alert 1 */r2 = 10,/*!< Upper limit of alert 2 */r3 = 20,/*!< Upper limit of alert 3 */r4 = 30,/*!< Upper limit of alert 4 */r5 = 40,/*!< Upper limit of alert 5 */r6 = 50,/*!< Upper limit of alert 6 */r7 = 60; /*!< Upper limit of alert 7 */ |
el15pjt | 7:14cfb0df30e6 | 106 | float avgdistance; |
el15pjt | 7:14cfb0df30e6 | 107 | int subpage; /*!< veriable to hold the page being viewed with in the submenu */ |
el15pjt | 7:14cfb0df30e6 | 108 | int page;/*!< veriable to hold the page being viewed with in the menu */ |
el15pjt | 7:14cfb0df30e6 | 109 | int offset = 0;/*!< veriable to hold the offset and adjust the 0 Range point */ |
el15pjt | 7:14cfb0df30e6 | 110 | int alert;/*!< veriable to hold the current alert level */ |
el15pjt | 7:14cfb0df30e6 | 111 | int distance;/*!< veriable to hold the distance read from the srf02 sensor */ |
el15pjt | 7:14cfb0df30e6 | 112 | float bright = 1;/*!< veriable to hold the current LED backlight of the 5110 LCD */ |
el15pjt | 7:14cfb0df30e6 | 113 | char units = METRIC;/*!< veriable to hold the current unit type set to METRIC as default */ |
el15pjt | 7:14cfb0df30e6 | 114 | int length, length1, length2, length3, length4; |
el15pjt | 7:14cfb0df30e6 | 115 | char buffer[14], buffer1[14], buffer2[14], buffer3[14], buffer4[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14) |
el15pjt | 7:14cfb0df30e6 | 116 | float T; |
el15pjt | 8:fe6ebe807b9d | 117 | int standby = 1; |
el15pjt | 7:14cfb0df30e6 | 118 | float c =1; /// convertion factor from Cm to inch |
el15pjt | 8:fe6ebe807b9d | 119 | int check_flag = 0; |
el15pjt | 7:14cfb0df30e6 | 120 | |
el15pjt | 7:14cfb0df30e6 | 121 | |
el15pjt | 7:14cfb0df30e6 | 122 | struct Alertlevel { |
el15pjt | 7:14cfb0df30e6 | 123 | char srr_led; /// stead RED LED state |
el15pjt | 7:14cfb0df30e6 | 124 | char sa_led; /// stead AMBER LED state |
el15pjt | 7:14cfb0df30e6 | 125 | char sgg_led; /// stead GREEN LED state |
el15pjt | 7:14cfb0df30e6 | 126 | char frr_led;///FLASHING RED LED state |
el15pjt | 7:14cfb0df30e6 | 127 | char fa_led; ///FLASHING AMBER LED state |
el15pjt | 7:14cfb0df30e6 | 128 | char fgg_led; ///FLASHING GREEN LED state |
el15pjt | 8:fe6ebe807b9d | 129 | float toneon; |
el15pjt | 8:fe6ebe807b9d | 130 | float toneoff; |
el15pjt | 8:fe6ebe807b9d | 131 | }; /*!< Stucture to hold all outputs. Steady LEDs, Flashing LEDs, Tone on, Tonne off*/ |
el15pjt | 7:14cfb0df30e6 | 132 | typedef const struct Alertlevel STyp; |
el15pjt | 7:14cfb0df30e6 | 133 | |
el15pjt | 7:14cfb0df30e6 | 134 | STyp Alertlevel[8] = { |
el15pjt | 7:14cfb0df30e6 | 135 | {LOW,LOW,LOW,LOW,LOW,LOW,0,1}, // no output |
el15pjt | 8:fe6ebe807b9d | 136 | {LOW,LOW,LOW,LOW,LOW,HIGH,0.1,0.9}, //flash green |
el15pjt | 8:fe6ebe807b9d | 137 | {LOW,LOW,HIGH,LOW,LOW,LOW,0.1,0.5}, //steady green |
el15pjt | 8:fe6ebe807b9d | 138 | {LOW,LOW,HIGH,LOW,HIGH,LOW,0.1,0.3}, //flash amber |
el15pjt | 8:fe6ebe807b9d | 139 | {LOW,HIGH,HIGH,LOW,LOW,LOW,0.2,0.2}, //steady amber |
el15pjt | 8:fe6ebe807b9d | 140 | {LOW,HIGH,HIGH,HIGH,LOW,LOW,0.2,0.1}, //flash red |
el15pjt | 8:fe6ebe807b9d | 141 | {HIGH,HIGH,HIGH,LOW,LOW,LOW,0.1,0.1},// steady red |
el15pjt | 8:fe6ebe807b9d | 142 | {LOW,LOW,LOW,HIGH,HIGH,HIGH,1,0} // all flash |
el15pjt | 7:14cfb0df30e6 | 143 | };/*!< Array contaning structures for diffent outputs */ |
el15pjt | 7:14cfb0df30e6 | 144 | |
el15pjt | 8:fe6ebe807b9d | 145 | void flip(); |
el15pjt | 8:fe6ebe807b9d | 146 | void buzzflag(); |
el15pjt | 7:14cfb0df30e6 | 147 | |
el15pjt | 8:fe6ebe807b9d | 148 | |
el15pjt | 8:fe6ebe807b9d | 149 | /** Controls the LCD while not in a Menu Function called to print to the LCD display |
el15pjt | 8:fe6ebe807b9d | 150 | @param i used to scale the max distaance to the width of the screen |
el15pjt | 8:fe6ebe807b9d | 151 | @param distance Distance read from sensor to be dispayed |
el15pjt | 8:fe6ebe807b9d | 152 | @param distbar used to adjust how far along the screen the bar is to go acorrding to distance |
el15pjt | 8:fe6ebe807b9d | 153 | @code |
el15pjt | 8:fe6ebe807b9d | 154 | if (alert == 0) { |
el15pjt | 8:fe6ebe807b9d | 155 | if (g_timer_flag_standby) { |
el15pjt | 8:fe6ebe807b9d | 156 | g_timer_flag_standby = 0; |
el15pjt | 8:fe6ebe807b9d | 157 | T = tmp102.get_temperature(); |
el15pjt | 8:fe6ebe807b9d | 158 | standby++; |
el15pjt | 8:fe6ebe807b9d | 159 | if (standby >3) { |
el15pjt | 8:fe6ebe807b9d | 160 | standby = 3; |
el15pjt | 8:fe6ebe807b9d | 161 | } |
el15pjt | 8:fe6ebe807b9d | 162 | } |
el15pjt | 8:fe6ebe807b9d | 163 | |
el15pjt | 8:fe6ebe807b9d | 164 | switch (standby) { |
el15pjt | 8:fe6ebe807b9d | 165 | case 1: |
el15pjt | 8:fe6ebe807b9d | 166 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 167 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 168 | } |
el15pjt | 8:fe6ebe807b9d | 169 | lcd.clear(); |
el15pjt | 8:fe6ebe807b9d | 170 | sprintf(buffer,"**PATH CLEAR**"); |
el15pjt | 8:fe6ebe807b9d | 171 | lcd.printString(buffer,0,0); |
el15pjt | 8:fe6ebe807b9d | 172 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 173 | lcd.refresh(); |
el15pjt | 8:fe6ebe807b9d | 174 | break; |
el15pjt | 8:fe6ebe807b9d | 175 | case 2: |
el15pjt | 8:fe6ebe807b9d | 176 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 177 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 178 | lcd.clear(); |
el15pjt | 8:fe6ebe807b9d | 179 | sprintf(buffer3,"TEMP = %.2f",T); |
el15pjt | 8:fe6ebe807b9d | 180 | sprintf(buffer2,"TEMPERATER"); |
el15pjt | 8:fe6ebe807b9d | 181 | lcd.printString(buffer3,4,2); |
el15pjt | 8:fe6ebe807b9d | 182 | lcd.printString(buffer2,12,1); |
el15pjt | 8:fe6ebe807b9d | 183 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 184 | |
el15pjt | 8:fe6ebe807b9d | 185 | break; |
el15pjt | 8:fe6ebe807b9d | 186 | case 3: |
el15pjt | 8:fe6ebe807b9d | 187 | if (check_flag == 1) { |
el15pjt | 8:fe6ebe807b9d | 188 | sprintf(buffer4,"COLLISIONCHECK"); |
el15pjt | 8:fe6ebe807b9d | 189 | lcd.clear(); |
el15pjt | 8:fe6ebe807b9d | 190 | sprintf(buffer3,"TEMP = %.2f",T); |
el15pjt | 8:fe6ebe807b9d | 191 | sprintf(buffer2,"TEMPERATER"); |
el15pjt | 8:fe6ebe807b9d | 192 | lcd.refresh(); |
el15pjt | 8:fe6ebe807b9d | 193 | lcd.printString(buffer3,4,2); |
el15pjt | 8:fe6ebe807b9d | 194 | lcd.printString(buffer2,12,1); |
el15pjt | 8:fe6ebe807b9d | 195 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 196 | lcd.setBrightness(0); |
el15pjt | 8:fe6ebe807b9d | 197 | break; |
el15pjt | 8:fe6ebe807b9d | 198 | } |
el15pjt | 8:fe6ebe807b9d | 199 | } |
el15pjt | 8:fe6ebe807b9d | 200 | |
el15pjt | 8:fe6ebe807b9d | 201 | //If alert isn't 0 then the distance is to be dispayed alonng with the the distance bar |
el15pjt | 8:fe6ebe807b9d | 202 | else { |
el15pjt | 8:fe6ebe807b9d | 203 | lcd.setBrightness(bright); |
el15pjt | 8:fe6ebe807b9d | 204 | standby =0; |
el15pjt | 8:fe6ebe807b9d | 205 | lcd.clear(); |
el15pjt | 8:fe6ebe807b9d | 206 | |
el15pjt | 8:fe6ebe807b9d | 207 | if (units == METRIC) { |
el15pjt | 8:fe6ebe807b9d | 208 | sprintf(buffer,"%0.2f Cm",avgdistance); |
el15pjt | 8:fe6ebe807b9d | 209 | sprintf(buffer1,"****RANGE!****"); |
el15pjt | 8:fe6ebe807b9d | 210 | sprintf(buffer2,"DISTANCE"); |
el15pjt | 8:fe6ebe807b9d | 211 | |
el15pjt | 8:fe6ebe807b9d | 212 | sprintf(buffer4,"Menu"); |
el15pjt | 8:fe6ebe807b9d | 213 | |
el15pjt | 8:fe6ebe807b9d | 214 | } else { |
el15pjt | 8:fe6ebe807b9d | 215 | sprintf(buffer,"%0.2f Inches",avgdistance); |
el15pjt | 8:fe6ebe807b9d | 216 | sprintf(buffer1,"****RANGE!****"); |
el15pjt | 8:fe6ebe807b9d | 217 | sprintf(buffer2,"***DISTANCE***"); |
el15pjt | 8:fe6ebe807b9d | 218 | sprintf(buffer4,"Menu"); |
el15pjt | 8:fe6ebe807b9d | 219 | } |
el15pjt | 8:fe6ebe807b9d | 220 | lcd.printString(buffer,25,2); |
el15pjt | 8:fe6ebe807b9d | 221 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 222 | lcd.printString(buffer2,16,1); |
el15pjt | 8:fe6ebe807b9d | 223 | lcd.printString(buffer4,0,5); |
el15pjt | 8:fe6ebe807b9d | 224 | |
el15pjt | 8:fe6ebe807b9d | 225 | |
el15pjt | 8:fe6ebe807b9d | 226 | float h = (r7/84); |
el15pjt | 8:fe6ebe807b9d | 227 | float distbar = (avgdistance*h); |
el15pjt | 8:fe6ebe807b9d | 228 | //drawRect(int x0,int y0,int width,int height,int fill); |
el15pjt | 8:fe6ebe807b9d | 229 | lcd.drawRect(0,29,distbar,7,1); // |
el15pjt | 8:fe6ebe807b9d | 230 | lcd.refresh(); |
el15pjt | 8:fe6ebe807b9d | 231 | @endcode |
el15pjt | 8:fe6ebe807b9d | 232 | */ |
el15pjt | 7:14cfb0df30e6 | 233 | void lcdoutput(); |
el15pjt | 8:fe6ebe807b9d | 234 | |
el15pjt | 7:14cfb0df30e6 | 235 | void timer_isr_led(); |
el15pjt | 7:14cfb0df30e6 | 236 | void timer_isr_srf02(); |
el15pjt | 7:14cfb0df30e6 | 237 | void timer_isr_tone(); |
el15pjt | 7:14cfb0df30e6 | 238 | void timer_isr_standby(); |
el15pjt | 8:fe6ebe807b9d | 239 | |
el15pjt | 7:14cfb0df30e6 | 240 | /** Called to increment to brightness by 0.2 each time when at 1 resets back to 0.0 |
el15pjt | 7:14cfb0df30e6 | 241 | @param bright 0.0-1 |
el15pjt | 7:14cfb0df30e6 | 242 | @returns lcd.setbrightness |
el15pjt | 7:14cfb0df30e6 | 243 | @code |
el15pjt | 7:14cfb0df30e6 | 244 | if (bright == 1.0) { |
el15pjt | 7:14cfb0df30e6 | 245 | bright = 0; |
el15pjt | 7:14cfb0df30e6 | 246 | } else { |
el15pjt | 7:14cfb0df30e6 | 247 | bright += 0.2; |
el15pjt | 7:14cfb0df30e6 | 248 | } |
el15pjt | 7:14cfb0df30e6 | 249 | lcd.setBrightness(bright); |
el15pjt | 7:14cfb0df30e6 | 250 | @endcode |
el15pjt | 7:14cfb0df30e6 | 251 | */ |
el15pjt | 7:14cfb0df30e6 | 252 | void backlight(); |
el15pjt | 8:fe6ebe807b9d | 253 | void Getdistance(); |
el15pjt | 7:14cfb0df30e6 | 254 | void init_K64F(); |
el15pjt | 7:14cfb0df30e6 | 255 | void sw2_isr(); |
el15pjt | 7:14cfb0df30e6 | 256 | void sw1_isr(); |
el15pjt | 7:14cfb0df30e6 | 257 | void setup(); |
el15pjt | 7:14cfb0df30e6 | 258 | |
el15pjt | 7:14cfb0df30e6 | 259 | /** A fuction used to determin the alert level given a range with the use of IF statments |
el15pjt | 7:14cfb0df30e6 | 260 | @param distance The distance read from sensor |
el15pjt | 7:14cfb0df30e6 | 261 | @param alert The level that distance falls with in 0 -7 |
el15pjt | 7:14cfb0df30e6 | 262 | @returns alert |
el15pjt | 7:14cfb0df30e6 | 263 | @code |
el15pjt | 7:14cfb0df30e6 | 264 | if (distance >= r6 && distance < r7) { // r6 150 and r7 200 |
el15pjt | 7:14cfb0df30e6 | 265 | alert = 1; /// alert 1 distance between preset 150Cm to 200Cm |
el15pjt | 7:14cfb0df30e6 | 266 | } else if (distance >= r5 && distance < r6) { |
el15pjt | 7:14cfb0df30e6 | 267 | alert = 2; /// alert 2 when between preset 90Cm to 150Cm |
el15pjt | 7:14cfb0df30e6 | 268 | } else if (distance >= r4 && distance < r5) { |
el15pjt | 7:14cfb0df30e6 | 269 | alert = 3; /// alert 3 when distance between 60Cm to 90Cm |
el15pjt | 7:14cfb0df30e6 | 270 | } else if (distance >= r3 && distance < r4) { |
el15pjt | 7:14cfb0df30e6 | 271 | alert = 4; /// alert 4 when distance between 40Cm and 60Cm |
el15pjt | 7:14cfb0df30e6 | 272 | } else if ( distance > r2 && distance < r3) { |
el15pjt | 7:14cfb0df30e6 | 273 | alert = 5; ///alert 5 when distance between 20Cm and 40m |
el15pjt | 7:14cfb0df30e6 | 274 | } else if (distance > r1 && distance <= r2) { //r1 3 and r2 20 |
el15pjt | 7:14cfb0df30e6 | 275 | alert = 6; ///alert 6 when distance between 1 and 20 |
el15pjt | 7:14cfb0df30e6 | 276 | } else if (distance <=r1) { |
el15pjt | 7:14cfb0df30e6 | 277 | alert = 7; ///alert 7 when distance below 1Cm |
el15pjt | 7:14cfb0df30e6 | 278 | } else { |
el15pjt | 7:14cfb0df30e6 | 279 | alert = 0; /// alert 0 all else |
el15pjt | 7:14cfb0df30e6 | 280 | } |
el15pjt | 7:14cfb0df30e6 | 281 | } |
el15pjt | 7:14cfb0df30e6 | 282 | @endcode |
el15pjt | 7:14cfb0df30e6 | 283 | */ |
el15pjt | 7:14cfb0df30e6 | 284 | void setalert(); |
el15pjt | 7:14cfb0df30e6 | 285 | /** If statments to determine the output of each LED by inspecting the struct in the relevent element of the alertlevel array |
el15pjt | 7:14cfb0df30e6 | 286 | |
el15pjt | 7:14cfb0df30e6 | 287 | @code |
el15pjt | 7:14cfb0df30e6 | 288 | if (alert ==7) { |
el15pjt | 7:14cfb0df30e6 | 289 | if (g_timer_flag_led) { |
el15pjt | 7:14cfb0df30e6 | 290 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 291 | rr_led = !rr_led; |
el15pjt | 7:14cfb0df30e6 | 292 | gg_led = !gg_led; |
el15pjt | 7:14cfb0df30e6 | 293 | a_led = !a_led; |
el15pjt | 7:14cfb0df30e6 | 294 | } |
el15pjt | 7:14cfb0df30e6 | 295 | } else if(Alertlevel[alert].fa_led == HIGH) { |
el15pjt | 7:14cfb0df30e6 | 296 | if (g_timer_flag_led) { |
el15pjt | 7:14cfb0df30e6 | 297 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 298 | a_led = !a_led; |
el15pjt | 7:14cfb0df30e6 | 299 | } |
el15pjt | 7:14cfb0df30e6 | 300 | } else if (Alertlevel[alert].frr_led == HIGH) { |
el15pjt | 7:14cfb0df30e6 | 301 | if (g_timer_flag_led) { |
el15pjt | 7:14cfb0df30e6 | 302 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 303 | rr_led = !rr_led; |
el15pjt | 7:14cfb0df30e6 | 304 | } |
el15pjt | 7:14cfb0df30e6 | 305 | } else if(Alertlevel[alert].fgg_led == HIGH) { |
el15pjt | 7:14cfb0df30e6 | 306 | if (g_timer_flag_led) { |
el15pjt | 7:14cfb0df30e6 | 307 | g_timer_flag_led = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 308 | gg_led = !gg_led; |
el15pjt | 7:14cfb0df30e6 | 309 | } |
el15pjt | 7:14cfb0df30e6 | 310 | } else { |
el15pjt | 7:14cfb0df30e6 | 311 | rr_led = Alertlevel[alert].srr_led; |
el15pjt | 7:14cfb0df30e6 | 312 | a_led = Alertlevel[alert].sa_led; |
el15pjt | 7:14cfb0df30e6 | 313 | gg_led = Alertlevel[alert].sgg_led; |
el15pjt | 7:14cfb0df30e6 | 314 | } |
el15pjt | 7:14cfb0df30e6 | 315 | |
el15pjt | 7:14cfb0df30e6 | 316 | } |
el15pjt | 7:14cfb0df30e6 | 317 | @endcode*/ |
el15pjt | 7:14cfb0df30e6 | 318 | void setleds(); |
el15pjt | 7:14cfb0df30e6 | 319 | void setbuzzer(); |
el15pjt | 7:14cfb0df30e6 | 320 | |
el15pjt | 7:14cfb0df30e6 | 321 | |
el15pjt | 7:14cfb0df30e6 | 322 | void menu(); |
el15pjt | 7:14cfb0df30e6 | 323 | /** |
el15pjt | 7:14cfb0df30e6 | 324 | { |
el15pjt | 7:14cfb0df30e6 | 325 | Function called to invoke a menu within a while loop with button interupts used to move pages and adjust within a switch statment |
el15pjt | 7:14cfb0df30e6 | 326 | @param g_sw1_flag 0 or 1 used to advance page |
el15pjt | 7:14cfb0df30e6 | 327 | @param g_sw2_flag 0 or 1 used to adjust current item |
el15pjt | 7:14cfb0df30e6 | 328 | @code |
el15pjt | 7:14cfb0df30e6 | 329 | while(1) { |
el15pjt | 7:14cfb0df30e6 | 330 | |
el15pjt | 7:14cfb0df30e6 | 331 | |
el15pjt | 7:14cfb0df30e6 | 332 | if (g_sw1_flag) { |
el15pjt | 7:14cfb0df30e6 | 333 | g_sw1_flag = 0; |
el15pjt | 7:14cfb0df30e6 | 334 | page++; /// Moves page |
el15pjt | 7:14cfb0df30e6 | 335 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 336 | } |
el15pjt | 7:14cfb0df30e6 | 337 | switch (page) { |
el15pjt | 7:14cfb0df30e6 | 338 | case 0: |
el15pjt | 7:14cfb0df30e6 | 339 | if (g_sw2_flag) { |
el15pjt | 7:14cfb0df30e6 | 340 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 341 | backlight(); |
el15pjt | 7:14cfb0df30e6 | 342 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 343 | } else { |
el15pjt | 7:14cfb0df30e6 | 344 | int lightbar = bright*84; |
el15pjt | 7:14cfb0df30e6 | 345 | sprintf(buffer2,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 346 | sprintf(buffer1,"BACKLIGHT"); |
el15pjt | 7:14cfb0df30e6 | 347 | sprintf(buffer3,"%.0f%%",bright*100); |
el15pjt | 7:14cfb0df30e6 | 348 | lcd.printString(buffer2,0,0); |
el15pjt | 7:14cfb0df30e6 | 349 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 350 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 351 | lcd.drawRect(0,38,lightbar,7,1); |
el15pjt | 7:14cfb0df30e6 | 352 | lcd.refresh(); |
el15pjt | 7:14cfb0df30e6 | 353 | |
el15pjt | 7:14cfb0df30e6 | 354 | } |
el15pjt | 7:14cfb0df30e6 | 355 | break; |
el15pjt | 7:14cfb0df30e6 | 356 | |
el15pjt | 7:14cfb0df30e6 | 357 | case 1: |
el15pjt | 7:14cfb0df30e6 | 358 | if (g_sw2_flag) { |
el15pjt | 7:14cfb0df30e6 | 359 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 360 | if (offset == 20) { |
el15pjt | 7:14cfb0df30e6 | 361 | offset = 0; |
el15pjt | 7:14cfb0df30e6 | 362 | } else { |
el15pjt | 7:14cfb0df30e6 | 363 | offset += 1; |
el15pjt | 7:14cfb0df30e6 | 364 | } |
el15pjt | 7:14cfb0df30e6 | 365 | } else { |
el15pjt | 7:14cfb0df30e6 | 366 | length2 = sprintf(buffer2,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 367 | length1 = sprintf(buffer1,"OFFSET"); |
el15pjt | 7:14cfb0df30e6 | 368 | length3 = sprintf(buffer3,"%i",offset); |
el15pjt | 7:14cfb0df30e6 | 369 | lcd.printString(buffer2,0,0); |
el15pjt | 7:14cfb0df30e6 | 370 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 371 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 372 | lcd.refresh(); |
el15pjt | 7:14cfb0df30e6 | 373 | } |
el15pjt | 7:14cfb0df30e6 | 374 | |
el15pjt | 7:14cfb0df30e6 | 375 | break; |
el15pjt | 7:14cfb0df30e6 | 376 | |
el15pjt | 7:14cfb0df30e6 | 377 | case 2: |
el15pjt | 7:14cfb0df30e6 | 378 | if (g_sw2_flag) { |
el15pjt | 7:14cfb0df30e6 | 379 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 380 | if (units == METRIC) { |
el15pjt | 7:14cfb0df30e6 | 381 | units = IMPERIAL; |
el15pjt | 7:14cfb0df30e6 | 382 | } else { |
el15pjt | 7:14cfb0df30e6 | 383 | units = METRIC; |
el15pjt | 7:14cfb0df30e6 | 384 | } |
el15pjt | 7:14cfb0df30e6 | 385 | } |
el15pjt | 7:14cfb0df30e6 | 386 | if (units == METRIC) { |
el15pjt | 7:14cfb0df30e6 | 387 | sprintf(buffer3,"METRIC"); |
el15pjt | 7:14cfb0df30e6 | 388 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 389 | } else { |
el15pjt | 7:14cfb0df30e6 | 390 | sprintf(buffer3,"IMPERIAL"); |
el15pjt | 7:14cfb0df30e6 | 391 | lcd.printString(buffer3,0,2); |
el15pjt | 7:14cfb0df30e6 | 392 | } |
el15pjt | 7:14cfb0df30e6 | 393 | |
el15pjt | 7:14cfb0df30e6 | 394 | sprintf(buffer2,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 395 | sprintf(buffer1,"UNITS"); |
el15pjt | 7:14cfb0df30e6 | 396 | lcd.printString(buffer2,0,0); |
el15pjt | 7:14cfb0df30e6 | 397 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 398 | lcd.refresh(); |
el15pjt | 7:14cfb0df30e6 | 399 | |
el15pjt | 7:14cfb0df30e6 | 400 | break; |
el15pjt | 7:14cfb0df30e6 | 401 | |
el15pjt | 7:14cfb0df30e6 | 402 | case 3: |
el15pjt | 7:14cfb0df30e6 | 403 | |
el15pjt | 7:14cfb0df30e6 | 404 | if (g_sw2_flag) { |
el15pjt | 7:14cfb0df30e6 | 405 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 7:14cfb0df30e6 | 406 | submenu(); |
el15pjt | 7:14cfb0df30e6 | 407 | } |
el15pjt | 7:14cfb0df30e6 | 408 | length2 = sprintf(buffer3,"*****MENU*****"); |
el15pjt | 7:14cfb0df30e6 | 409 | length3 = sprintf(buffer1,"RANGE"); |
el15pjt | 7:14cfb0df30e6 | 410 | length3 = sprintf(buffer2,"PARAMETERS"); |
el15pjt | 7:14cfb0df30e6 | 411 | lcd.printString(buffer3,0,0); |
el15pjt | 7:14cfb0df30e6 | 412 | lcd.printString(buffer1,0,1); |
el15pjt | 7:14cfb0df30e6 | 413 | lcd.printString(buffer2,0,2); |
el15pjt | 7:14cfb0df30e6 | 414 | |
el15pjt | 7:14cfb0df30e6 | 415 | |
el15pjt | 7:14cfb0df30e6 | 416 | break; |
el15pjt | 7:14cfb0df30e6 | 417 | |
el15pjt | 7:14cfb0df30e6 | 418 | default: |
el15pjt | 7:14cfb0df30e6 | 419 | lcd.clear(); |
el15pjt | 7:14cfb0df30e6 | 420 | return; |
el15pjt | 7:14cfb0df30e6 | 421 | } |
el15pjt | 7:14cfb0df30e6 | 422 | } |
el15pjt | 7:14cfb0df30e6 | 423 | @endcode |
el15pjt | 7:14cfb0df30e6 | 424 | */ |
el15pjt | 8:fe6ebe807b9d | 425 | void menu(); |
el15pjt | 8:fe6ebe807b9d | 426 | /** |
el15pjt | 8:fe6ebe807b9d | 427 | @code |
el15pjt | 8:fe6ebe807b9d | 428 | while(1) { |
el15pjt | 8:fe6ebe807b9d | 429 | /// innterupt used to shift page |
el15pjt | 8:fe6ebe807b9d | 430 | if (g_sw1_flag) { |
el15pjt | 8:fe6ebe807b9d | 431 | g_sw1_flag = 0; |
el15pjt | 8:fe6ebe807b9d | 432 | subpage++; |
el15pjt | 8:fe6ebe807b9d | 433 | } |
el15pjt | 8:fe6ebe807b9d | 434 | switch (subpage) { |
el15pjt | 8:fe6ebe807b9d | 435 | ///interupt used to adjust range |
el15pjt | 8:fe6ebe807b9d | 436 | case 0: |
el15pjt | 8:fe6ebe807b9d | 437 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 438 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 439 | if (r2 == r3) { |
el15pjt | 8:fe6ebe807b9d | 440 | r2 = 1; |
el15pjt | 8:fe6ebe807b9d | 441 | } else { |
el15pjt | 8:fe6ebe807b9d | 442 | r2 = r2+1; |
el15pjt | 7:14cfb0df30e6 | 443 | } |
el15pjt | 8:fe6ebe807b9d | 444 | } |
el15pjt | 8:fe6ebe807b9d | 445 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 446 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 447 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 448 | length4 = sprintf(buffer4,"1Cm to %iCm",r2); |
el15pjt | 8:fe6ebe807b9d | 449 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 450 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 451 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 452 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 453 | break; |
el15pjt | 7:14cfb0df30e6 | 454 | |
el15pjt | 8:fe6ebe807b9d | 455 | case 1: |
el15pjt | 7:14cfb0df30e6 | 456 | |
el15pjt | 8:fe6ebe807b9d | 457 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 458 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 459 | if (r3 == r4) { |
el15pjt | 8:fe6ebe807b9d | 460 | r3 = r2; |
el15pjt | 8:fe6ebe807b9d | 461 | } else { |
el15pjt | 8:fe6ebe807b9d | 462 | r3 += 1; |
el15pjt | 7:14cfb0df30e6 | 463 | } |
el15pjt | 8:fe6ebe807b9d | 464 | } |
el15pjt | 7:14cfb0df30e6 | 465 | |
el15pjt | 8:fe6ebe807b9d | 466 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 467 | sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 468 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 469 | sprintf(buffer4,"%iCm to %iCm",r2,r3); |
el15pjt | 8:fe6ebe807b9d | 470 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 471 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 472 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 473 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 474 | break; |
el15pjt | 7:14cfb0df30e6 | 475 | |
el15pjt | 8:fe6ebe807b9d | 476 | case 2: |
el15pjt | 7:14cfb0df30e6 | 477 | |
el15pjt | 8:fe6ebe807b9d | 478 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 479 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 480 | if (r4 == r5) { |
el15pjt | 8:fe6ebe807b9d | 481 | r4 = r3; |
el15pjt | 8:fe6ebe807b9d | 482 | } else { |
el15pjt | 8:fe6ebe807b9d | 483 | r4 += 1; |
el15pjt | 7:14cfb0df30e6 | 484 | } |
el15pjt | 8:fe6ebe807b9d | 485 | } |
el15pjt | 7:14cfb0df30e6 | 486 | |
el15pjt | 8:fe6ebe807b9d | 487 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 488 | sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 489 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 490 | sprintf(buffer4,"%iCm to %iCm",r3,r4); |
el15pjt | 8:fe6ebe807b9d | 491 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 492 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 493 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 494 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 495 | break; |
el15pjt | 7:14cfb0df30e6 | 496 | |
el15pjt | 8:fe6ebe807b9d | 497 | case 3: |
el15pjt | 7:14cfb0df30e6 | 498 | |
el15pjt | 8:fe6ebe807b9d | 499 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 500 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 501 | if (r5 == r6) { |
el15pjt | 8:fe6ebe807b9d | 502 | r5 = r4; |
el15pjt | 8:fe6ebe807b9d | 503 | } else { |
el15pjt | 8:fe6ebe807b9d | 504 | r5 += 1; |
el15pjt | 7:14cfb0df30e6 | 505 | } |
el15pjt | 8:fe6ebe807b9d | 506 | } |
el15pjt | 7:14cfb0df30e6 | 507 | |
el15pjt | 8:fe6ebe807b9d | 508 | sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 509 | sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 510 | sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 511 | sprintf(buffer4,"%iCm to %iCm",r4,r5); |
el15pjt | 8:fe6ebe807b9d | 512 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 513 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 514 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 515 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 516 | break; |
el15pjt | 8:fe6ebe807b9d | 517 | case 4: |
el15pjt | 7:14cfb0df30e6 | 518 | |
el15pjt | 8:fe6ebe807b9d | 519 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 520 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 521 | if (r6 == r7) { |
el15pjt | 8:fe6ebe807b9d | 522 | r6 = r5; |
el15pjt | 8:fe6ebe807b9d | 523 | } else { |
el15pjt | 8:fe6ebe807b9d | 524 | r6 += 1; |
el15pjt | 7:14cfb0df30e6 | 525 | } |
el15pjt | 8:fe6ebe807b9d | 526 | } |
el15pjt | 7:14cfb0df30e6 | 527 | |
el15pjt | 8:fe6ebe807b9d | 528 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 529 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 530 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 531 | length3 = sprintf(buffer4,"%iCm to %iCm",r5,r6); |
el15pjt | 8:fe6ebe807b9d | 532 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 533 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 534 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 535 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 536 | break; |
el15pjt | 8:fe6ebe807b9d | 537 | case 5: |
el15pjt | 7:14cfb0df30e6 | 538 | |
el15pjt | 8:fe6ebe807b9d | 539 | if (g_sw2_flag) { |
el15pjt | 8:fe6ebe807b9d | 540 | g_sw2_flag = 0; // if it has, clear the flag |
el15pjt | 8:fe6ebe807b9d | 541 | if (r7 == 300) { |
el15pjt | 8:fe6ebe807b9d | 542 | r7 = r6; |
el15pjt | 8:fe6ebe807b9d | 543 | } else { |
el15pjt | 8:fe6ebe807b9d | 544 | r7 += 1; |
el15pjt | 7:14cfb0df30e6 | 545 | } |
el15pjt | 8:fe6ebe807b9d | 546 | } |
el15pjt | 7:14cfb0df30e6 | 547 | |
el15pjt | 8:fe6ebe807b9d | 548 | length2 = sprintf(buffer1,"*****MENU*****"); |
el15pjt | 8:fe6ebe807b9d | 549 | length3 = sprintf(buffer2,"RANGE"); |
el15pjt | 8:fe6ebe807b9d | 550 | length3 = sprintf(buffer3,"PARAMETERS"); |
el15pjt | 8:fe6ebe807b9d | 551 | length3 = sprintf(buffer4,"%iCm to %iCm",r6,r7); |
el15pjt | 8:fe6ebe807b9d | 552 | lcd.printString(buffer1,0,0); |
el15pjt | 8:fe6ebe807b9d | 553 | lcd.printString(buffer2,0,1); |
el15pjt | 8:fe6ebe807b9d | 554 | lcd.printString(buffer3,0,2); |
el15pjt | 8:fe6ebe807b9d | 555 | lcd.printString(buffer4,0,3); |
el15pjt | 8:fe6ebe807b9d | 556 | break; |
el15pjt | 7:14cfb0df30e6 | 557 | |
el15pjt | 8:fe6ebe807b9d | 558 | default: |
el15pjt | 8:fe6ebe807b9d | 559 | lcd.clear(); |
el15pjt | 8:fe6ebe807b9d | 560 | // save(); |
el15pjt | 8:fe6ebe807b9d | 561 | return; |
el15pjt | 7:14cfb0df30e6 | 562 | } |
el15pjt | 8:fe6ebe807b9d | 563 | } |
el15pjt | 8:fe6ebe807b9d | 564 | } |
el15pjt | 8:fe6ebe807b9d | 565 | @endcode |
el15pjt | 8:fe6ebe807b9d | 566 | */ |
el15pjt | 8:fe6ebe807b9d | 567 | void submenu(); |
el15pjt | 8:fe6ebe807b9d | 568 | void save(); |
el15pjt | 8:fe6ebe807b9d | 569 | void load(); |
el15pjt | 8:fe6ebe807b9d | 570 | void GetDistance(); |
el15pjt | 7:14cfb0df30e6 | 571 | |
el15pjt | 7:14cfb0df30e6 | 572 | #endif |