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