Working Menu with selectable fields yet to add comparison with healthy temperature ranges
Dependencies: TMP102_02
17665328_SmartVeterinaryThermometer.cpp@10:62da82b9b6de, 2022-02-04 (annotated)
- Committer:
- ejh23
- Date:
- Fri Feb 04 19:10:09 2022 +0000
- Revision:
- 10:62da82b9b6de
- Parent:
- 9:483d03b3e1bc
Final code for submission
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ejh23 | 9:483d03b3e1bc | 1 | /******************************************************************************* |
ejh23 | 9:483d03b3e1bc | 2 | Edward Hindley |
ejh23 | 9:483d03b3e1bc | 3 | Assistive Health device - measure temperature in an energy efficient and easy to use way |
ejh23 | 9:483d03b3e1bc | 4 | Board is initialised and awaits edge triggered interrupts to enable |
ejh23 | 9:483d03b3e1bc | 5 | a menu, measurement type selection and an average temperature reading. |
ejh23 | 9:483d03b3e1bc | 6 | |
ejh23 | 9:483d03b3e1bc | 7 | |
ejh23 | 9:483d03b3e1bc | 8 | * Craig A. Evans, University of Leeds, TMP102 Library, Feb 2016 |
ejh23 | 9:483d03b3e1bc | 9 | * Dr Edmond Nurellari, University of Lincoln, Joystick, N5110 Libraries, Feb 2022 |
ejh23 | 9:483d03b3e1bc | 10 | |
ejh23 | 9:483d03b3e1bc | 11 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 12 | |
ejh23 | 9:483d03b3e1bc | 13 | #include "mbed.h" //Include all header files to be used throughout |
ejh23 | 9:483d03b3e1bc | 14 | #include "Timer.h" |
ejh23 | 9:483d03b3e1bc | 15 | #include "TMP102.h" |
ejh23 | 9:483d03b3e1bc | 16 | #include "Bitmap.h" |
ejh23 | 9:483d03b3e1bc | 17 | #include "N5110.h" |
ejh23 | 9:483d03b3e1bc | 18 | #include "Joystick.h" |
ejh23 | 9:483d03b3e1bc | 19 | |
ejh23 | 9:483d03b3e1bc | 20 | /******************************************************************************* |
ejh23 | 9:483d03b3e1bc | 21 | Set-up of all vital peripherals |
ejh23 | 9:483d03b3e1bc | 22 | Note that the following values correspond to these notes |
ejh23 | 9:483d03b3e1bc | 23 | NOTE_C4 262, NOTE_CS4 277, NOTE_D4 294, NOTE_DS4 311 |
ejh23 | 9:483d03b3e1bc | 24 | NOTE_E4 330, NOTE_F4 349, NOTE_FS4 370, NOTE_G4 392 |
ejh23 | 9:483d03b3e1bc | 25 | NOTE_GS4 415, NOTE_A4 440, NOTE_AS4 466, NOTE_B4 494 |
ejh23 | 9:483d03b3e1bc | 26 | NOTE_C5 523, NOTE_CS5 554, NOTE_D5 587, NOTE_DS5 622 |
ejh23 | 9:483d03b3e1bc | 27 | NOTE_E5 659, NOTE_F5 698, NOTE_FS5 740, NOTE_G5 784 |
ejh23 | 9:483d03b3e1bc | 28 | NOTE_GS5 831, NOTE_A5 880, NOTE_AS5 932, NOTE_B5 988 |
ejh23 | 9:483d03b3e1bc | 29 | NOTE_C6 1047 |
ejh23 | 9:483d03b3e1bc | 30 | *Author Jorge Rancé, PUBLISHED December 4, 2017 |
ejh23 | 9:483d03b3e1bc | 31 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 32 | TMP102 tmp102(I2C_SDA,I2C_SCL); |
ejh23 | 9:483d03b3e1bc | 33 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
ejh23 | 9:483d03b3e1bc | 34 | Joystick joystick(PTB10,PTB11,PTC16); |
ejh23 | 9:483d03b3e1bc | 35 | InterruptIn StartButton(PTC5); |
ejh23 | 9:483d03b3e1bc | 36 | InterruptIn BackButton(PTB19); |
ejh23 | 9:483d03b3e1bc | 37 | InterruptIn MenuOnButton(PTB3); //Open Menu |
ejh23 | 9:483d03b3e1bc | 38 | InterruptIn MenuOffButton(PTB18); //Close Menu |
ejh23 | 9:483d03b3e1bc | 39 | InterruptIn YButton(PTC12); //Set contrast |
ejh23 | 9:483d03b3e1bc | 40 | DigitalIn AButton(PTB9); //Submit Joystick Position |
ejh23 | 9:483d03b3e1bc | 41 | DigitalIn BButton(PTD0); //As Yet Unused |
ejh23 | 9:483d03b3e1bc | 42 | BusOut LedStatus(PTA1, PTA2, PTC2, PTC3, PTC4, PTD3); |
ejh23 | 9:483d03b3e1bc | 43 | PwmOut Buzz(PTC10); |
ejh23 | 9:483d03b3e1bc | 44 | AnalogIn Pot(PTB2); |
ejh23 | 9:483d03b3e1bc | 45 | Serial pc(USBTX,USBRX); |
ejh23 | 9:483d03b3e1bc | 46 | /******************************************************************************* |
ejh23 | 9:483d03b3e1bc | 47 | Initiate Variables and Voids |
ejh23 | 9:483d03b3e1bc | 48 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 49 | volatile int G_RepeatNum; //Global variables denoted G_ |
ejh23 | 9:483d03b3e1bc | 50 | volatile float G_TempR; // TempR = Temp read from sensor |
ejh23 | 9:483d03b3e1bc | 51 | volatile float G_TempAve; |
ejh23 | 9:483d03b3e1bc | 52 | volatile int G_MLayerFlag; // MenuLayer flags = Maintains while loops whilst navigating menus |
ejh23 | 9:483d03b3e1bc | 53 | volatile bool G_APressed; |
ejh23 | 9:483d03b3e1bc | 54 | volatile bool G_BPressed; |
ejh23 | 9:483d03b3e1bc | 55 | volatile int G_PageNum; |
ejh23 | 9:483d03b3e1bc | 56 | volatile int G_PagePos; |
ejh23 | 9:483d03b3e1bc | 57 | volatile int G_SpeciesSelect; |
ejh23 | 9:483d03b3e1bc | 58 | |
ejh23 | 10:62da82b9b6de | 59 | Timer MLayer1Time; //Create Flag reset timer to initiate sleep in inactivity |
ejh23 | 10:62da82b9b6de | 60 | Timer MLayer2Time; // used extensively to ensure device is not on during periods of inactivity |
ejh23 | 10:62da82b9b6de | 61 | Timer ReviewTime; |
ejh23 | 10:62da82b9b6de | 62 | Timer PromptTime; |
ejh23 | 9:483d03b3e1bc | 63 | |
ejh23 | 9:483d03b3e1bc | 64 | void SetContrast(); |
ejh23 | 9:483d03b3e1bc | 65 | void initDevice(); |
ejh23 | 9:483d03b3e1bc | 66 | void FillAnimal(); |
ejh23 | 9:483d03b3e1bc | 67 | void OpenLayer1(); |
ejh23 | 9:483d03b3e1bc | 68 | void OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 69 | void PageOne(); |
ejh23 | 9:483d03b3e1bc | 70 | void PageTwo(); |
ejh23 | 9:483d03b3e1bc | 71 | void PageThree(); |
ejh23 | 9:483d03b3e1bc | 72 | void PG2_0(); |
ejh23 | 9:483d03b3e1bc | 73 | void PG2_1(); |
ejh23 | 9:483d03b3e1bc | 74 | void PG2_2(); |
ejh23 | 9:483d03b3e1bc | 75 | void PG2_3(); |
ejh23 | 9:483d03b3e1bc | 76 | void PG2_4(); |
ejh23 | 9:483d03b3e1bc | 77 | void PG3_0(); |
ejh23 | 9:483d03b3e1bc | 78 | void PG3_1(); |
ejh23 | 9:483d03b3e1bc | 79 | void PG3_2(); |
ejh23 | 9:483d03b3e1bc | 80 | void PG3_3(); |
ejh23 | 9:483d03b3e1bc | 81 | void PG3_4(); |
ejh23 | 9:483d03b3e1bc | 82 | void TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 83 | void Display(); |
ejh23 | 9:483d03b3e1bc | 84 | void HealthCheck(); |
ejh23 | 9:483d03b3e1bc | 85 | void CloseMenu(); |
ejh23 | 9:483d03b3e1bc | 86 | void RemPrompt(); |
ejh23 | 9:483d03b3e1bc | 87 | |
ejh23 | 10:62da82b9b6de | 88 | /*struct Animal{ Unsuccessful use of structs to store temperature ranges |
ejh23 | 10:62da82b9b6de | 89 | float UTemp,LTemp; considered healthy for different species |
ejh23 | 10:62da82b9b6de | 90 | }; |
ejh23 | 10:62da82b9b6de | 91 | |
ejh23 | 10:62da82b9b6de | 92 | struct Dog{ |
ejh23 | 10:62da82b9b6de | 93 | float UTemp = 39.2; |
ejh23 | 10:62da82b9b6de | 94 | float LTemp = 37.5; |
ejh23 | 9:483d03b3e1bc | 95 | }; |
ejh23 | 10:62da82b9b6de | 96 | struct Horse{ |
ejh23 | 10:62da82b9b6de | 97 | float UTemp = 38.6; |
ejh23 | 10:62da82b9b6de | 98 | float LTemp = 37.5; |
ejh23 | 10:62da82b9b6de | 99 | }; |
ejh23 | 10:62da82b9b6de | 100 | struct Rabbit{ |
ejh23 | 10:62da82b9b6de | 101 | float UTemp = 40.0; |
ejh23 | 10:62da82b9b6de | 102 | float LTemp = 38.5; |
ejh23 | 10:62da82b9b6de | 103 | }; |
ejh23 | 10:62da82b9b6de | 104 | struct Snake{ |
ejh23 | 10:62da82b9b6de | 105 | float UTemp = 31.1; |
ejh23 | 10:62da82b9b6de | 106 | float LTemp = 23.8; |
ejh23 | 10:62da82b9b6de | 107 | };*/ |
ejh23 | 9:483d03b3e1bc | 108 | |
ejh23 | 9:483d03b3e1bc | 109 | //****************************************************************************** |
ejh23 | 9:483d03b3e1bc | 110 | void SetContrast() |
ejh23 | 9:483d03b3e1bc | 111 | { //Move Potentiometer to required position and Press Y to Set |
ejh23 | 9:483d03b3e1bc | 112 | float PotValue = Pot.read(); |
ejh23 | 9:483d03b3e1bc | 113 | printf("Brightness %f\n",PotValue); |
ejh23 | 9:483d03b3e1bc | 114 | lcd.setBrightness(PotValue); |
ejh23 | 9:483d03b3e1bc | 115 | } |
ejh23 | 9:483d03b3e1bc | 116 | |
ejh23 | 9:483d03b3e1bc | 117 | void initDevice() |
ejh23 | 9:483d03b3e1bc | 118 | { |
ejh23 | 9:483d03b3e1bc | 119 | pc.baud(9600); //Set compatible to Terminal software |
ejh23 | 9:483d03b3e1bc | 120 | lcd.init(); //Use library initialisation function for onboard devices |
ejh23 | 9:483d03b3e1bc | 121 | tmp102.init(); |
ejh23 | 9:483d03b3e1bc | 122 | joystick.init(); |
ejh23 | 9:483d03b3e1bc | 123 | StartButton.mode(PullDown); //Set so rise is press and fall is release |
ejh23 | 9:483d03b3e1bc | 124 | BackButton.mode(PullDown); |
ejh23 | 9:483d03b3e1bc | 125 | MenuOnButton.mode(PullDown); |
ejh23 | 9:483d03b3e1bc | 126 | MenuOffButton.mode(PullDown); |
ejh23 | 9:483d03b3e1bc | 127 | AButton.mode(PullDown); |
ejh23 | 9:483d03b3e1bc | 128 | BButton.mode(PullDown); |
ejh23 | 9:483d03b3e1bc | 129 | YButton.mode(PullDown); |
ejh23 | 10:62da82b9b6de | 130 | lcd.setBrightness(0.00); |
ejh23 | 10:62da82b9b6de | 131 | Buzz.period(1.0/587.0); //Play tones users can recognise as initialising the device |
ejh23 | 10:62da82b9b6de | 132 | Buzz = 0.15; // ready for use but screen not on |
ejh23 | 10:62da82b9b6de | 133 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 134 | Buzz.period(1.0/392.0); |
ejh23 | 10:62da82b9b6de | 135 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 136 | wait(0.2); |
ejh23 | 10:62da82b9b6de | 137 | Buzz.period(1.0/659.0); |
ejh23 | 10:62da82b9b6de | 138 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 139 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 140 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 141 | printf("Hardware Initialisation Complete \n"); |
ejh23 | 9:483d03b3e1bc | 142 | } |
ejh23 | 9:483d03b3e1bc | 143 | |
ejh23 | 9:483d03b3e1bc | 144 | void FillAnimal() |
ejh23 | 9:483d03b3e1bc | 145 | { |
ejh23 | 10:62da82b9b6de | 146 | // struct Animal Dog = {39.2,37.5}; Unsuccessful use of structs to store temperature ranges |
ejh23 | 10:62da82b9b6de | 147 | //float UTemp,LTemp; considered healthy for different species |
ejh23 | 10:62da82b9b6de | 148 | /* Animal Dog[2] = |
ejh23 | 9:483d03b3e1bc | 149 | { |
ejh23 | 9:483d03b3e1bc | 150 | Dog.UTemp = 39.2; |
ejh23 | 9:483d03b3e1bc | 151 | Dog.LTemp = 37.5; |
ejh23 | 9:483d03b3e1bc | 152 | } |
ejh23 | 10:62da82b9b6de | 153 | Animal Horse[2] = |
ejh23 | 9:483d03b3e1bc | 154 | { |
ejh23 | 9:483d03b3e1bc | 155 | Horse.UTemp = 38.6; |
ejh23 | 9:483d03b3e1bc | 156 | Horse.LTemp = 37.5; |
ejh23 | 9:483d03b3e1bc | 157 | } |
ejh23 | 10:62da82b9b6de | 158 | Animal Rabbit[2] = |
ejh23 | 9:483d03b3e1bc | 159 | { |
ejh23 | 9:483d03b3e1bc | 160 | Rabbit.UTemp = 40.0; |
ejh23 | 9:483d03b3e1bc | 161 | Rabbit.LTemp = 38.5; |
ejh23 | 9:483d03b3e1bc | 162 | } |
ejh23 | 10:62da82b9b6de | 163 | Animal Snake[2] = |
ejh23 | 9:483d03b3e1bc | 164 | { |
ejh23 | 9:483d03b3e1bc | 165 | Snake.UTemp = 31.1; |
ejh23 | 9:483d03b3e1bc | 166 | Snake.LTemp = 23.8; |
ejh23 | 10:62da82b9b6de | 167 | }*/ |
ejh23 | 9:483d03b3e1bc | 168 | } |
ejh23 | 9:483d03b3e1bc | 169 | |
ejh23 | 10:62da82b9b6de | 170 | /****************************************************************************** |
ejh23 | 10:62da82b9b6de | 171 | Reading values fromthe joystick - direction converted to integer in joystick cpp file |
ejh23 | 10:62da82b9b6de | 172 | 1 corresponds to North in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 173 | 3 corresponds to East in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 174 | 5 correspsonds to South in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 175 | 7 corresponds to West in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 176 | |
ejh23 | 10:62da82b9b6de | 177 | |
ejh23 | 10:62da82b9b6de | 178 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 179 | void OpenLayer1() |
ejh23 | 9:483d03b3e1bc | 180 | { |
ejh23 | 9:483d03b3e1bc | 181 | G_MLayerFlag = 1; |
ejh23 | 9:483d03b3e1bc | 182 | MLayer1Time.start(); //MLayer1Time timer started in case this is first time |
ejh23 | 9:483d03b3e1bc | 183 | MLayer1Time.reset(); // running and reset incase this is not first time running |
ejh23 | 9:483d03b3e1bc | 184 | PageOne(); |
ejh23 | 9:483d03b3e1bc | 185 | wait(2.0); |
ejh23 | 9:483d03b3e1bc | 186 | if (G_PageNum==1) |
ejh23 | 9:483d03b3e1bc | 187 | { |
ejh23 | 9:483d03b3e1bc | 188 | while(G_MLayerFlag==1) |
ejh23 | 9:483d03b3e1bc | 189 | { |
ejh23 | 9:483d03b3e1bc | 190 | //printf("G_MLayerFlag is True \n"); |
ejh23 | 10:62da82b9b6de | 191 | Direction d = joystick.get_direction(); //Upon each cycle of while, check joystick direction and buttons statuses |
ejh23 | 10:62da82b9b6de | 192 | //printf("Direction %i \n", d); improvement could be made to up the reaction time to user input |
ejh23 | 9:483d03b3e1bc | 193 | G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 194 | G_BPressed = BButton.read(); |
ejh23 | 9:483d03b3e1bc | 195 | printf("A Button Status : %d \n", G_APressed); |
ejh23 | 9:483d03b3e1bc | 196 | wait(0.1); |
ejh23 | 9:483d03b3e1bc | 197 | float TimeGone = MLayer1Time.read(); |
ejh23 | 9:483d03b3e1bc | 198 | |
ejh23 | 10:62da82b9b6de | 199 | if(TimeGone >= 10) //Set value for timer comparitor called TimeGone (Seconds) |
ejh23 | 9:483d03b3e1bc | 200 | { |
ejh23 | 9:483d03b3e1bc | 201 | CloseMenu(); |
ejh23 | 9:483d03b3e1bc | 202 | } |
ejh23 | 10:62da82b9b6de | 203 | else if(d==1) |
ejh23 | 9:483d03b3e1bc | 204 | { |
ejh23 | 9:483d03b3e1bc | 205 | printf("North Time is %.1f \n", TimeGone); |
ejh23 | 10:62da82b9b6de | 206 | G_PagePos = 1; |
ejh23 | 9:483d03b3e1bc | 207 | G_SpeciesSelect = 1; |
ejh23 | 10:62da82b9b6de | 208 | PageTwo(); |
ejh23 | 9:483d03b3e1bc | 209 | MLayer1Time.reset(); |
ejh23 | 9:483d03b3e1bc | 210 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 211 | } |
ejh23 | 10:62da82b9b6de | 212 | else if(d==3) |
ejh23 | 9:483d03b3e1bc | 213 | { |
ejh23 | 9:483d03b3e1bc | 214 | printf("East Time is %.1f \n", TimeGone); |
ejh23 | 9:483d03b3e1bc | 215 | G_PagePos = 2; |
ejh23 | 9:483d03b3e1bc | 216 | G_SpeciesSelect = 2; |
ejh23 | 9:483d03b3e1bc | 217 | PageTwo(); |
ejh23 | 9:483d03b3e1bc | 218 | MLayer1Time.reset(); |
ejh23 | 9:483d03b3e1bc | 219 | wait(0.2); |
ejh23 | 9:483d03b3e1bc | 220 | } |
ejh23 | 10:62da82b9b6de | 221 | else if(d==5) |
ejh23 | 9:483d03b3e1bc | 222 | { |
ejh23 | 9:483d03b3e1bc | 223 | printf("South Time is %.1f \n", TimeGone); |
ejh23 | 9:483d03b3e1bc | 224 | G_PagePos = 3; |
ejh23 | 9:483d03b3e1bc | 225 | G_SpeciesSelect = 3; |
ejh23 | 9:483d03b3e1bc | 226 | PageTwo(); |
ejh23 | 9:483d03b3e1bc | 227 | MLayer1Time.reset(); |
ejh23 | 9:483d03b3e1bc | 228 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 229 | } |
ejh23 | 10:62da82b9b6de | 230 | else if(d==7) |
ejh23 | 9:483d03b3e1bc | 231 | { |
ejh23 | 9:483d03b3e1bc | 232 | printf("West Time is %.1f \n", TimeGone); |
ejh23 | 9:483d03b3e1bc | 233 | G_PagePos = 4; |
ejh23 | 9:483d03b3e1bc | 234 | G_SpeciesSelect = 4; |
ejh23 | 9:483d03b3e1bc | 235 | PageTwo(); |
ejh23 | 9:483d03b3e1bc | 236 | MLayer1Time.reset(); |
ejh23 | 9:483d03b3e1bc | 237 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 238 | } |
ejh23 | 10:62da82b9b6de | 239 | else if(TimeGone >=2) //removes arrow from last previous joystick input after 2 seconds |
ejh23 | 9:483d03b3e1bc | 240 | { |
ejh23 | 9:483d03b3e1bc | 241 | PG2_0(); |
ejh23 | 9:483d03b3e1bc | 242 | } |
ejh23 | 10:62da82b9b6de | 243 | if(G_BPressed==1) //B button is used to reverse through menus |
ejh23 | 9:483d03b3e1bc | 244 | { |
ejh23 | 9:483d03b3e1bc | 245 | if(G_PageNum==1) |
ejh23 | 9:483d03b3e1bc | 246 | { |
ejh23 | 9:483d03b3e1bc | 247 | printf("Go to CloseMenu"); |
ejh23 | 9:483d03b3e1bc | 248 | CloseMenu(); |
ejh23 | 9:483d03b3e1bc | 249 | } |
ejh23 | 9:483d03b3e1bc | 250 | else if(G_PageNum==2) |
ejh23 | 9:483d03b3e1bc | 251 | { |
ejh23 | 9:483d03b3e1bc | 252 | printf("Go to PageOne"); |
ejh23 | 9:483d03b3e1bc | 253 | PageOne(); |
ejh23 | 9:483d03b3e1bc | 254 | } |
ejh23 | 9:483d03b3e1bc | 255 | } |
ejh23 | 9:483d03b3e1bc | 256 | } |
ejh23 | 9:483d03b3e1bc | 257 | } |
ejh23 | 10:62da82b9b6de | 258 | else if(G_PageNum==2) |
ejh23 | 9:483d03b3e1bc | 259 | { |
ejh23 | 9:483d03b3e1bc | 260 | OpenLayer2(); //if MLayer2Flag == 1 should return to OpenLayer2 |
ejh23 | 9:483d03b3e1bc | 261 | } |
ejh23 | 9:483d03b3e1bc | 262 | else if(G_PageNum==0) |
ejh23 | 9:483d03b3e1bc | 263 | { |
ejh23 | 9:483d03b3e1bc | 264 | printf("Menue Closed"); |
ejh23 | 9:483d03b3e1bc | 265 | } |
ejh23 | 9:483d03b3e1bc | 266 | } |
ejh23 | 10:62da82b9b6de | 267 | /******************************************************************************* |
ejh23 | 10:62da82b9b6de | 268 | Page One used as a welcome screen to user |
ejh23 | 10:62da82b9b6de | 269 | Plays welcome sounds when screen turns on and displays information about device |
ejh23 | 10:62da82b9b6de | 270 | ******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 271 | void PageOne() |
ejh23 | 9:483d03b3e1bc | 272 | { |
ejh23 | 9:483d03b3e1bc | 273 | float PotValue = Pot.read(); |
ejh23 | 9:483d03b3e1bc | 274 | lcd.setBrightness(PotValue); |
ejh23 | 9:483d03b3e1bc | 275 | printf("Start Page"); |
ejh23 | 9:483d03b3e1bc | 276 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 277 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 278 | lcd.printString(" Veterinary ",0,1); |
ejh23 | 9:483d03b3e1bc | 279 | lcd.printString("Thermometer",0,2); |
ejh23 | 9:483d03b3e1bc | 280 | lcd.printString(" ",0,3); |
ejh23 | 9:483d03b3e1bc | 281 | lcd.printString("EJH - Feb '22",0,4); |
ejh23 | 10:62da82b9b6de | 282 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 283 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 284 | Buzz.period(1.0/523.0); |
ejh23 | 10:62da82b9b6de | 285 | Buzz = 0.15; |
ejh23 | 10:62da82b9b6de | 286 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 287 | Buzz.period(1.0/659.0); |
ejh23 | 10:62da82b9b6de | 288 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 289 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 290 | Buzz.period(1.0/784.0); |
ejh23 | 10:62da82b9b6de | 291 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 292 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 293 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 294 | G_PageNum = 1; |
ejh23 | 9:483d03b3e1bc | 295 | return; |
ejh23 | 9:483d03b3e1bc | 296 | } |
ejh23 | 9:483d03b3e1bc | 297 | |
ejh23 | 10:62da82b9b6de | 298 | void PageTwo() //Direct to different menu statements based on user selection |
ejh23 | 9:483d03b3e1bc | 299 | { |
ejh23 | 9:483d03b3e1bc | 300 | G_PageNum = 2; |
ejh23 | 9:483d03b3e1bc | 301 | if(G_PagePos==1) |
ejh23 | 9:483d03b3e1bc | 302 | { |
ejh23 | 9:483d03b3e1bc | 303 | PG2_1(); |
ejh23 | 9:483d03b3e1bc | 304 | } |
ejh23 | 9:483d03b3e1bc | 305 | else if(G_PagePos==2) |
ejh23 | 9:483d03b3e1bc | 306 | { |
ejh23 | 9:483d03b3e1bc | 307 | PG2_2(); |
ejh23 | 9:483d03b3e1bc | 308 | } |
ejh23 | 9:483d03b3e1bc | 309 | else if(G_PagePos==3) |
ejh23 | 9:483d03b3e1bc | 310 | { |
ejh23 | 9:483d03b3e1bc | 311 | PG2_3(); |
ejh23 | 9:483d03b3e1bc | 312 | } |
ejh23 | 9:483d03b3e1bc | 313 | else if(G_PagePos==4) |
ejh23 | 9:483d03b3e1bc | 314 | { |
ejh23 | 9:483d03b3e1bc | 315 | PG2_4(); |
ejh23 | 9:483d03b3e1bc | 316 | } |
ejh23 | 9:483d03b3e1bc | 317 | return; |
ejh23 | 9:483d03b3e1bc | 318 | } |
ejh23 | 9:483d03b3e1bc | 319 | void PG2_0() |
ejh23 | 9:483d03b3e1bc | 320 | { |
ejh23 | 9:483d03b3e1bc | 321 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 322 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 323 | lcd.printString(" Dog",0,1); |
ejh23 | 9:483d03b3e1bc | 324 | lcd.printString(" Horse",0,2); |
ejh23 | 9:483d03b3e1bc | 325 | lcd.printString(" Rabbit",0,3); |
ejh23 | 9:483d03b3e1bc | 326 | lcd.printString(" Snake",0,4); |
ejh23 | 9:483d03b3e1bc | 327 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 328 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 329 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 330 | return; |
ejh23 | 9:483d03b3e1bc | 331 | } |
ejh23 | 9:483d03b3e1bc | 332 | void PG2_1() |
ejh23 | 9:483d03b3e1bc | 333 | { |
ejh23 | 9:483d03b3e1bc | 334 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 335 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 336 | lcd.printString("-> Dog",0,1); |
ejh23 | 9:483d03b3e1bc | 337 | lcd.printString(" Horse",0,2); |
ejh23 | 9:483d03b3e1bc | 338 | lcd.printString(" Rabbit",0,3); |
ejh23 | 9:483d03b3e1bc | 339 | lcd.printString(" Snake",0,4); |
ejh23 | 9:483d03b3e1bc | 340 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 341 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 342 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 343 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 344 | { |
ejh23 | 9:483d03b3e1bc | 345 | G_PageNum=2; |
ejh23 | 9:483d03b3e1bc | 346 | G_MLayerFlag=2; |
ejh23 | 10:62da82b9b6de | 347 | Buzz.period(1.0/784.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 348 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 349 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 350 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 351 | OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 352 | } |
ejh23 | 9:483d03b3e1bc | 353 | else |
ejh23 | 9:483d03b3e1bc | 354 | { |
ejh23 | 9:483d03b3e1bc | 355 | return; |
ejh23 | 9:483d03b3e1bc | 356 | } |
ejh23 | 9:483d03b3e1bc | 357 | } |
ejh23 | 9:483d03b3e1bc | 358 | void PG2_2() |
ejh23 | 9:483d03b3e1bc | 359 | { |
ejh23 | 9:483d03b3e1bc | 360 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 361 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 362 | lcd.printString(" Dog",0,1); |
ejh23 | 9:483d03b3e1bc | 363 | lcd.printString("-> Horse",0,2); |
ejh23 | 9:483d03b3e1bc | 364 | lcd.printString(" Rabbit",0,3); |
ejh23 | 9:483d03b3e1bc | 365 | lcd.printString(" Snake",0,4); |
ejh23 | 9:483d03b3e1bc | 366 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 367 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 368 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 369 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 370 | { |
ejh23 | 9:483d03b3e1bc | 371 | G_PageNum=2; |
ejh23 | 9:483d03b3e1bc | 372 | G_MLayerFlag=2; |
ejh23 | 10:62da82b9b6de | 373 | Buzz.period(1.0/784.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 374 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 375 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 376 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 377 | OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 378 | } |
ejh23 | 9:483d03b3e1bc | 379 | else |
ejh23 | 9:483d03b3e1bc | 380 | { |
ejh23 | 9:483d03b3e1bc | 381 | return; |
ejh23 | 9:483d03b3e1bc | 382 | } |
ejh23 | 9:483d03b3e1bc | 383 | } |
ejh23 | 9:483d03b3e1bc | 384 | void PG2_3() |
ejh23 | 9:483d03b3e1bc | 385 | { |
ejh23 | 9:483d03b3e1bc | 386 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 387 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 388 | lcd.printString(" Dog",0,1); |
ejh23 | 9:483d03b3e1bc | 389 | lcd.printString(" Horse",0,2); |
ejh23 | 9:483d03b3e1bc | 390 | lcd.printString("-> Rabbit",0,3); |
ejh23 | 9:483d03b3e1bc | 391 | lcd.printString(" Snake",0,4); |
ejh23 | 9:483d03b3e1bc | 392 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 393 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 394 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 395 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 396 | { |
ejh23 | 9:483d03b3e1bc | 397 | G_PageNum=2; |
ejh23 | 9:483d03b3e1bc | 398 | G_MLayerFlag=2; |
ejh23 | 10:62da82b9b6de | 399 | Buzz.period(1.0/784.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 400 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 401 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 402 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 403 | OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 404 | } |
ejh23 | 9:483d03b3e1bc | 405 | else |
ejh23 | 9:483d03b3e1bc | 406 | { |
ejh23 | 9:483d03b3e1bc | 407 | return; |
ejh23 | 9:483d03b3e1bc | 408 | } |
ejh23 | 9:483d03b3e1bc | 409 | } |
ejh23 | 9:483d03b3e1bc | 410 | void PG2_4() |
ejh23 | 9:483d03b3e1bc | 411 | { |
ejh23 | 9:483d03b3e1bc | 412 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 413 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 414 | lcd.printString(" Dog",0,1); |
ejh23 | 9:483d03b3e1bc | 415 | lcd.printString(" Horse",0,2); |
ejh23 | 9:483d03b3e1bc | 416 | lcd.printString(" Rabbit",0,3); |
ejh23 | 9:483d03b3e1bc | 417 | lcd.printString("-> Snake",0,4); |
ejh23 | 9:483d03b3e1bc | 418 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 419 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 420 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 421 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 422 | { |
ejh23 | 9:483d03b3e1bc | 423 | G_PageNum=2; |
ejh23 | 9:483d03b3e1bc | 424 | G_MLayerFlag=2; |
ejh23 | 10:62da82b9b6de | 425 | Buzz.period(1.0/784.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 426 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 427 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 428 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 429 | OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 430 | } |
ejh23 | 9:483d03b3e1bc | 431 | else |
ejh23 | 9:483d03b3e1bc | 432 | { |
ejh23 | 9:483d03b3e1bc | 433 | return; |
ejh23 | 9:483d03b3e1bc | 434 | } |
ejh23 | 9:483d03b3e1bc | 435 | } |
ejh23 | 10:62da82b9b6de | 436 | /******************************************************************************* |
ejh23 | 10:62da82b9b6de | 437 | Reading values fromthe joystick - direction converted to integer in joystick cpp file |
ejh23 | 10:62da82b9b6de | 438 | 1 corresponds to North in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 439 | 3 corresponds to East in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 440 | 5 correspsonds to South in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 441 | 7 corresponds to West in the Enumerator (from joystick header) |
ejh23 | 10:62da82b9b6de | 442 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 443 | void OpenLayer2() |
ejh23 | 9:483d03b3e1bc | 444 | { |
ejh23 | 9:483d03b3e1bc | 445 | wait(1.0); |
ejh23 | 9:483d03b3e1bc | 446 | MLayer2Time.start(); //MLayer2Time timer started in case this is first time |
ejh23 | 9:483d03b3e1bc | 447 | MLayer2Time.reset(); // running and reset incase this is not first time running |
ejh23 | 9:483d03b3e1bc | 448 | |
ejh23 | 9:483d03b3e1bc | 449 | if(G_PageNum==2) |
ejh23 | 9:483d03b3e1bc | 450 | { |
ejh23 | 9:483d03b3e1bc | 451 | while(G_MLayerFlag==2) |
ejh23 | 9:483d03b3e1bc | 452 | { |
ejh23 | 9:483d03b3e1bc | 453 | //printf("G_MLayerFlag is True \n"); |
ejh23 | 9:483d03b3e1bc | 454 | Direction d = joystick.get_direction(); //Upon each cycle of while, check joystick direction and buttons statuses |
ejh23 | 9:483d03b3e1bc | 455 | printf("Direction %i \n", d); |
ejh23 | 9:483d03b3e1bc | 456 | bool G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 457 | bool G_BPressed = BButton.read(); |
ejh23 | 9:483d03b3e1bc | 458 | //printf("A Button Status : %d \n", G_APressed); |
ejh23 | 9:483d03b3e1bc | 459 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 460 | float TimeGone2 = MLayer2Time.read(); |
ejh23 | 9:483d03b3e1bc | 461 | |
ejh23 | 10:62da82b9b6de | 462 | if(TimeGone2 >= 10) //Set value for timer comparitor called TimeGone2 (Seconds) |
ejh23 | 9:483d03b3e1bc | 463 | { |
ejh23 | 9:483d03b3e1bc | 464 | OpenLayer1(); |
ejh23 | 9:483d03b3e1bc | 465 | } |
ejh23 | 10:62da82b9b6de | 466 | else if(d==1) |
ejh23 | 9:483d03b3e1bc | 467 | { |
ejh23 | 9:483d03b3e1bc | 468 | printf("North Time is %.1f \n", TimeGone2); |
ejh23 | 9:483d03b3e1bc | 469 | G_PagePos = 5; |
ejh23 | 9:483d03b3e1bc | 470 | PageThree(); |
ejh23 | 9:483d03b3e1bc | 471 | MLayer2Time.reset(); |
ejh23 | 9:483d03b3e1bc | 472 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 473 | } |
ejh23 | 10:62da82b9b6de | 474 | else if(d==3) |
ejh23 | 9:483d03b3e1bc | 475 | { |
ejh23 | 9:483d03b3e1bc | 476 | printf("East Time is %.1f \n", TimeGone2); |
ejh23 | 9:483d03b3e1bc | 477 | G_PagePos = 6; |
ejh23 | 9:483d03b3e1bc | 478 | PageThree(); |
ejh23 | 9:483d03b3e1bc | 479 | MLayer2Time.reset(); |
ejh23 | 9:483d03b3e1bc | 480 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 481 | } |
ejh23 | 10:62da82b9b6de | 482 | else if(d==5) |
ejh23 | 9:483d03b3e1bc | 483 | { |
ejh23 | 9:483d03b3e1bc | 484 | printf("South Time is %.1f \n", TimeGone2); |
ejh23 | 9:483d03b3e1bc | 485 | G_PagePos = 7; |
ejh23 | 9:483d03b3e1bc | 486 | PageThree(); |
ejh23 | 9:483d03b3e1bc | 487 | MLayer2Time.reset(); |
ejh23 | 9:483d03b3e1bc | 488 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 489 | } |
ejh23 | 10:62da82b9b6de | 490 | else if(d==7) |
ejh23 | 9:483d03b3e1bc | 491 | { |
ejh23 | 9:483d03b3e1bc | 492 | printf("West Time is %.1f \n", TimeGone2); |
ejh23 | 9:483d03b3e1bc | 493 | G_PagePos = 8; |
ejh23 | 9:483d03b3e1bc | 494 | PageThree(); |
ejh23 | 9:483d03b3e1bc | 495 | MLayer2Time.reset(); |
ejh23 | 9:483d03b3e1bc | 496 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 497 | } |
ejh23 | 9:483d03b3e1bc | 498 | else if(TimeGone2 >=2) |
ejh23 | 9:483d03b3e1bc | 499 | { |
ejh23 | 9:483d03b3e1bc | 500 | PG3_0(); |
ejh23 | 9:483d03b3e1bc | 501 | } |
ejh23 | 10:62da82b9b6de | 502 | else if(G_BPressed==1) //Direct to previous menu |
ejh23 | 9:483d03b3e1bc | 503 | { |
ejh23 | 9:483d03b3e1bc | 504 | G_PageNum=1; |
ejh23 | 9:483d03b3e1bc | 505 | OpenLayer1(); |
ejh23 | 9:483d03b3e1bc | 506 | } |
ejh23 | 9:483d03b3e1bc | 507 | } |
ejh23 | 9:483d03b3e1bc | 508 | if (G_MLayerFlag==3) |
ejh23 | 9:483d03b3e1bc | 509 | { |
ejh23 | 9:483d03b3e1bc | 510 | TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 511 | } |
ejh23 | 9:483d03b3e1bc | 512 | } |
ejh23 | 9:483d03b3e1bc | 513 | else if(G_PageNum==1) |
ejh23 | 9:483d03b3e1bc | 514 | { |
ejh23 | 9:483d03b3e1bc | 515 | OpenLayer1(); //if MLayer2Flag == 1 should return to OpenLayer2 |
ejh23 | 9:483d03b3e1bc | 516 | } |
ejh23 | 9:483d03b3e1bc | 517 | } |
ejh23 | 9:483d03b3e1bc | 518 | //****************************************************************************** |
ejh23 | 9:483d03b3e1bc | 519 | |
ejh23 | 9:483d03b3e1bc | 520 | void PageThree() |
ejh23 | 9:483d03b3e1bc | 521 | { |
ejh23 | 9:483d03b3e1bc | 522 | //G_PageNum = 3; |
ejh23 | 9:483d03b3e1bc | 523 | if(G_PagePos==5) |
ejh23 | 9:483d03b3e1bc | 524 | { |
ejh23 | 9:483d03b3e1bc | 525 | PG3_1(); |
ejh23 | 9:483d03b3e1bc | 526 | } |
ejh23 | 9:483d03b3e1bc | 527 | else if(G_PagePos==6) |
ejh23 | 9:483d03b3e1bc | 528 | { |
ejh23 | 9:483d03b3e1bc | 529 | PG3_2(); |
ejh23 | 9:483d03b3e1bc | 530 | } |
ejh23 | 9:483d03b3e1bc | 531 | else if(G_PagePos==7) |
ejh23 | 9:483d03b3e1bc | 532 | { |
ejh23 | 9:483d03b3e1bc | 533 | PG3_3(); |
ejh23 | 9:483d03b3e1bc | 534 | } |
ejh23 | 9:483d03b3e1bc | 535 | else if(G_PagePos==8) |
ejh23 | 9:483d03b3e1bc | 536 | { |
ejh23 | 9:483d03b3e1bc | 537 | PG3_4(); |
ejh23 | 9:483d03b3e1bc | 538 | } |
ejh23 | 9:483d03b3e1bc | 539 | return; |
ejh23 | 9:483d03b3e1bc | 540 | } |
ejh23 | 9:483d03b3e1bc | 541 | void PG3_0() |
ejh23 | 9:483d03b3e1bc | 542 | { |
ejh23 | 9:483d03b3e1bc | 543 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 544 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 545 | lcd.printString(" 1 Reading",0,1); |
ejh23 | 9:483d03b3e1bc | 546 | lcd.printString(" 5 Readings",0,2); |
ejh23 | 9:483d03b3e1bc | 547 | lcd.printString(" 20 Readings",0,3); |
ejh23 | 9:483d03b3e1bc | 548 | lcd.printString(" 100 Readings",0,4); |
ejh23 | 9:483d03b3e1bc | 549 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 550 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 551 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 552 | return; |
ejh23 | 9:483d03b3e1bc | 553 | } |
ejh23 | 9:483d03b3e1bc | 554 | void PG3_1() |
ejh23 | 9:483d03b3e1bc | 555 | { |
ejh23 | 9:483d03b3e1bc | 556 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 557 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 558 | lcd.printString("->1 Reading",0,1); |
ejh23 | 9:483d03b3e1bc | 559 | lcd.printString(" 5 Readings",0,2); |
ejh23 | 9:483d03b3e1bc | 560 | lcd.printString(" 20 Readings",0,3); |
ejh23 | 9:483d03b3e1bc | 561 | lcd.printString(" 100 Readings",0,4); |
ejh23 | 9:483d03b3e1bc | 562 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 563 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 564 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 565 | bool G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 566 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 567 | { |
ejh23 | 9:483d03b3e1bc | 568 | G_RepeatNum = 1; |
ejh23 | 9:483d03b3e1bc | 569 | G_MLayerFlag=3; |
ejh23 | 10:62da82b9b6de | 570 | Buzz.period(1.0/587.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 571 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 572 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 573 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 574 | //TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 575 | } |
ejh23 | 9:483d03b3e1bc | 576 | else |
ejh23 | 9:483d03b3e1bc | 577 | { |
ejh23 | 9:483d03b3e1bc | 578 | return; |
ejh23 | 9:483d03b3e1bc | 579 | } |
ejh23 | 9:483d03b3e1bc | 580 | } |
ejh23 | 9:483d03b3e1bc | 581 | void PG3_2() |
ejh23 | 9:483d03b3e1bc | 582 | { |
ejh23 | 9:483d03b3e1bc | 583 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 584 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 585 | lcd.printString(" 1 Reading",0,1); |
ejh23 | 9:483d03b3e1bc | 586 | lcd.printString("->5 Readings",0,2); |
ejh23 | 9:483d03b3e1bc | 587 | lcd.printString(" 20 Readings",0,3); |
ejh23 | 9:483d03b3e1bc | 588 | lcd.printString(" 100 Readings",0,4); |
ejh23 | 9:483d03b3e1bc | 589 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 590 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 591 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 592 | bool G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 593 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 594 | { |
ejh23 | 9:483d03b3e1bc | 595 | G_RepeatNum = 5; |
ejh23 | 9:483d03b3e1bc | 596 | G_MLayerFlag=3; |
ejh23 | 10:62da82b9b6de | 597 | Buzz.period(1.0/587.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 598 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 599 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 600 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 601 | //TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 602 | } |
ejh23 | 9:483d03b3e1bc | 603 | else |
ejh23 | 9:483d03b3e1bc | 604 | { |
ejh23 | 9:483d03b3e1bc | 605 | return; |
ejh23 | 9:483d03b3e1bc | 606 | } |
ejh23 | 9:483d03b3e1bc | 607 | } |
ejh23 | 9:483d03b3e1bc | 608 | void PG3_3() |
ejh23 | 9:483d03b3e1bc | 609 | { |
ejh23 | 9:483d03b3e1bc | 610 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 611 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 612 | lcd.printString(" 1 Reading",0,1); |
ejh23 | 9:483d03b3e1bc | 613 | lcd.printString(" 5 Readings",0,2); |
ejh23 | 9:483d03b3e1bc | 614 | lcd.printString("->20 Readings",0,3); |
ejh23 | 9:483d03b3e1bc | 615 | lcd.printString(" 100 Readings",0,4); |
ejh23 | 9:483d03b3e1bc | 616 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 617 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 618 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 619 | bool G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 620 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 621 | { |
ejh23 | 9:483d03b3e1bc | 622 | G_RepeatNum = 20; |
ejh23 | 9:483d03b3e1bc | 623 | G_MLayerFlag=3; |
ejh23 | 10:62da82b9b6de | 624 | Buzz.period(1.0/587.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 625 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 626 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 627 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 628 | //TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 629 | } |
ejh23 | 9:483d03b3e1bc | 630 | else |
ejh23 | 9:483d03b3e1bc | 631 | { |
ejh23 | 9:483d03b3e1bc | 632 | return; |
ejh23 | 9:483d03b3e1bc | 633 | } |
ejh23 | 9:483d03b3e1bc | 634 | } |
ejh23 | 9:483d03b3e1bc | 635 | void PG3_4() |
ejh23 | 9:483d03b3e1bc | 636 | { |
ejh23 | 9:483d03b3e1bc | 637 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 638 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 639 | lcd.printString(" 1 Reading",0,1); |
ejh23 | 9:483d03b3e1bc | 640 | lcd.printString(" 5 Readings",0,2); |
ejh23 | 9:483d03b3e1bc | 641 | lcd.printString(" 20 Readings",0,3); |
ejh23 | 9:483d03b3e1bc | 642 | lcd.printString("->100 Readings",0,4); |
ejh23 | 9:483d03b3e1bc | 643 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 644 | wait(0.05); |
ejh23 | 9:483d03b3e1bc | 645 | lcd.refresh(); |
ejh23 | 9:483d03b3e1bc | 646 | bool G_APressed = AButton.read(); |
ejh23 | 9:483d03b3e1bc | 647 | if (G_APressed==1) |
ejh23 | 9:483d03b3e1bc | 648 | { |
ejh23 | 9:483d03b3e1bc | 649 | G_RepeatNum = 100; |
ejh23 | 9:483d03b3e1bc | 650 | G_MLayerFlag=3; |
ejh23 | 10:62da82b9b6de | 651 | Buzz.period(1.0/587.0); //Affirmation sound on user input |
ejh23 | 10:62da82b9b6de | 652 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 653 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 654 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 655 | //TakeRdng(); |
ejh23 | 9:483d03b3e1bc | 656 | } |
ejh23 | 9:483d03b3e1bc | 657 | else |
ejh23 | 9:483d03b3e1bc | 658 | { |
ejh23 | 9:483d03b3e1bc | 659 | return; |
ejh23 | 9:483d03b3e1bc | 660 | } |
ejh23 | 9:483d03b3e1bc | 661 | } |
ejh23 | 10:62da82b9b6de | 662 | |
ejh23 | 10:62da82b9b6de | 663 | /******************************************************************************* |
ejh23 | 10:62da82b9b6de | 664 | Close screen as a result of inactivity or user input exiting menus |
ejh23 | 10:62da82b9b6de | 665 | Play close down tones for user affirmation |
ejh23 | 10:62da82b9b6de | 666 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 667 | void CloseMenu() |
ejh23 | 9:483d03b3e1bc | 668 | { |
ejh23 | 9:483d03b3e1bc | 669 | lcd.setBrightness(0.00); |
ejh23 | 9:483d03b3e1bc | 670 | G_PageNum = 0; |
ejh23 | 9:483d03b3e1bc | 671 | G_MLayerFlag = 0; |
ejh23 | 9:483d03b3e1bc | 672 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 673 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 674 | Buzz.period(1.0/784.0); |
ejh23 | 10:62da82b9b6de | 675 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 676 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 677 | Buzz.period(1.0/659.0); |
ejh23 | 10:62da82b9b6de | 678 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 679 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 680 | Buzz.period(1.0/523.0); |
ejh23 | 10:62da82b9b6de | 681 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 682 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 683 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 684 | printf("Menu Closed and Flag Reset \n"); |
ejh23 | 9:483d03b3e1bc | 685 | } |
ejh23 | 9:483d03b3e1bc | 686 | |
ejh23 | 9:483d03b3e1bc | 687 | |
ejh23 | 9:483d03b3e1bc | 688 | void TakeRdng() |
ejh23 | 9:483d03b3e1bc | 689 | { |
ejh23 | 9:483d03b3e1bc | 690 | float TempSum = 0; |
ejh23 | 9:483d03b3e1bc | 691 | G_TempR = tmp102.get_temperature(); // read temperature save to variable TempR |
ejh23 | 9:483d03b3e1bc | 692 | for(int i=0; i<G_RepeatNum; i++) { //change G_RepeatNum set by user in menu |
ejh23 | 9:483d03b3e1bc | 693 | printf("Temp was %.2f \n", G_TempR); |
ejh23 | 9:483d03b3e1bc | 694 | TempSum = TempSum + G_TempR; |
ejh23 | 9:483d03b3e1bc | 695 | printf("TempSum = %.2f \n",TempSum); |
ejh23 | 10:62da82b9b6de | 696 | Buzz.period(1.0/523.0); |
ejh23 | 10:62da82b9b6de | 697 | Buzz = 0.15; |
ejh23 | 10:62da82b9b6de | 698 | wait(0.1); |
ejh23 | 10:62da82b9b6de | 699 | Buzz.period(1.0/659.0); |
ejh23 | 10:62da82b9b6de | 700 | Buzz = 0.5; |
ejh23 | 10:62da82b9b6de | 701 | wait(0.1); //Time between tones utilisaed as break between readings |
ejh23 | 10:62da82b9b6de | 702 | Buzz = 0; |
ejh23 | 9:483d03b3e1bc | 703 | if(G_BPressed==1) |
ejh23 | 9:483d03b3e1bc | 704 | { |
ejh23 | 9:483d03b3e1bc | 705 | G_RepeatNum = 0; |
ejh23 | 9:483d03b3e1bc | 706 | OpenLayer2(); |
ejh23 | 9:483d03b3e1bc | 707 | } |
ejh23 | 9:483d03b3e1bc | 708 | } |
ejh23 | 9:483d03b3e1bc | 709 | G_TempAve = TempSum / G_RepeatNum; //Average Temperature Calculation using the RepeatNum |
ejh23 | 10:62da82b9b6de | 710 | HealthCheck(); // variable as number of elements in average |
ejh23 | 9:483d03b3e1bc | 711 | } |
ejh23 | 9:483d03b3e1bc | 712 | enum SpeciesPage |
ejh23 | 10:62da82b9b6de | 713 | { //Enum used in case switching below defines states to switch between |
ejh23 | 10:62da82b9b6de | 714 | SpeciesDog, |
ejh23 | 10:62da82b9b6de | 715 | SpeciesHorse, |
ejh23 | 10:62da82b9b6de | 716 | SpeciesRabbit, |
ejh23 | 10:62da82b9b6de | 717 | SpeciesSnake, |
ejh23 | 10:62da82b9b6de | 718 | SpeciesState, |
ejh23 | 9:483d03b3e1bc | 719 | }; |
ejh23 | 9:483d03b3e1bc | 720 | void Display() |
ejh23 | 9:483d03b3e1bc | 721 | { |
ejh23 | 10:62da82b9b6de | 722 | printf("Display \n"); |
ejh23 | 9:483d03b3e1bc | 723 | int DisplayType = SpeciesState; |
ejh23 | 9:483d03b3e1bc | 724 | int NextDisplayType = SpeciesState; |
ejh23 | 10:62da82b9b6de | 725 | printf("SpeciesType %i", G_SpeciesSelect); |
ejh23 | 9:483d03b3e1bc | 726 | switch(DisplayType) |
ejh23 | 9:483d03b3e1bc | 727 | { |
ejh23 | 10:62da82b9b6de | 728 | case SpeciesState: //uses global SpreciesSelect variable to determine range of healthy temperatures |
ejh23 | 9:483d03b3e1bc | 729 | { |
ejh23 | 9:483d03b3e1bc | 730 | if(G_SpeciesSelect == 1) |
ejh23 | 9:483d03b3e1bc | 731 | { |
ejh23 | 9:483d03b3e1bc | 732 | NextDisplayType = SpeciesDog; |
ejh23 | 9:483d03b3e1bc | 733 | } |
ejh23 | 9:483d03b3e1bc | 734 | else if(G_SpeciesSelect == 2) |
ejh23 | 9:483d03b3e1bc | 735 | { |
ejh23 | 9:483d03b3e1bc | 736 | NextDisplayType = SpeciesHorse; |
ejh23 | 9:483d03b3e1bc | 737 | } |
ejh23 | 9:483d03b3e1bc | 738 | else if(G_SpeciesSelect == 3) |
ejh23 | 9:483d03b3e1bc | 739 | { |
ejh23 | 9:483d03b3e1bc | 740 | NextDisplayType = SpeciesRabbit; |
ejh23 | 9:483d03b3e1bc | 741 | } |
ejh23 | 9:483d03b3e1bc | 742 | else if(G_SpeciesSelect == 4) |
ejh23 | 9:483d03b3e1bc | 743 | { |
ejh23 | 9:483d03b3e1bc | 744 | NextDisplayType = SpeciesSnake; |
ejh23 | 9:483d03b3e1bc | 745 | } |
ejh23 | 9:483d03b3e1bc | 746 | } |
ejh23 | 9:483d03b3e1bc | 747 | case SpeciesDog: |
ejh23 | 9:483d03b3e1bc | 748 | { |
ejh23 | 10:62da82b9b6de | 749 | lcd.clear(); //Display relevant information for species previously selected by user |
ejh23 | 9:483d03b3e1bc | 750 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 751 | lcd.printString("Dog Health",0,1); |
ejh23 | 9:483d03b3e1bc | 752 | char buffer[14]; |
ejh23 | 9:483d03b3e1bc | 753 | int length = sprintf(buffer,"T=%.3f 'C", G_TempAve); |
ejh23 | 10:62da82b9b6de | 754 | if (length <= 14) //check string fits on screen (14 lots of 6 wide characters) |
ejh23 | 9:483d03b3e1bc | 755 | lcd.printString(buffer,0,2); |
ejh23 | 9:483d03b3e1bc | 756 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 757 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 758 | /*if (G_TempAve >= Dog.LTemp and G_TempAve <= Dog.UTemp) |
ejh23 | 9:483d03b3e1bc | 759 | { |
ejh23 | 9:483d03b3e1bc | 760 | lcd.printString("Temperature OK",0,3); |
ejh23 | 10:62da82b9b6de | 761 | }*/ |
ejh23 | 9:483d03b3e1bc | 762 | } |
ejh23 | 9:483d03b3e1bc | 763 | case SpeciesHorse: |
ejh23 | 10:62da82b9b6de | 764 | { //Display relevant information for species previously selected by user |
ejh23 | 9:483d03b3e1bc | 765 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 766 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 767 | lcd.printString("Horse Health",0,1); |
ejh23 | 9:483d03b3e1bc | 768 | char buffer[14]; |
ejh23 | 9:483d03b3e1bc | 769 | int length = sprintf(buffer,"T=%.3f 'C", G_TempAve); |
ejh23 | 10:62da82b9b6de | 770 | if (length <= 14) //check string fits on screen (14 lots of 6 wide characters) |
ejh23 | 9:483d03b3e1bc | 771 | lcd.printString(buffer,0,2); |
ejh23 | 9:483d03b3e1bc | 772 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 773 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 774 | /*if (G_TempAve >= Horse.LTemp and G_TempAve <= Horse.UTemp) |
ejh23 | 9:483d03b3e1bc | 775 | { |
ejh23 | 9:483d03b3e1bc | 776 | lcd.printString("Temperature OK",0,3); |
ejh23 | 10:62da82b9b6de | 777 | }*/ |
ejh23 | 9:483d03b3e1bc | 778 | } |
ejh23 | 9:483d03b3e1bc | 779 | case SpeciesRabbit: |
ejh23 | 10:62da82b9b6de | 780 | { //Display relevant information for species previously selected by user |
ejh23 | 9:483d03b3e1bc | 781 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 782 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 783 | lcd.printString("Rabbit Health",0,1); |
ejh23 | 9:483d03b3e1bc | 784 | char buffer[14]; |
ejh23 | 9:483d03b3e1bc | 785 | int length = sprintf(buffer,"T=%.3f 'C", G_TempAve); |
ejh23 | 10:62da82b9b6de | 786 | if (length <= 14) //check string fits on screen (14 lots of 6 wide characters) |
ejh23 | 9:483d03b3e1bc | 787 | lcd.printString(buffer,0,2); |
ejh23 | 9:483d03b3e1bc | 788 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 789 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 790 | /*if (G_TempAve >= Rabbit.LTemp and G_TempAve <= Rabbit.UTemp) |
ejh23 | 9:483d03b3e1bc | 791 | { |
ejh23 | 9:483d03b3e1bc | 792 | lcd.printString("Temperature OK",0,3); |
ejh23 | 10:62da82b9b6de | 793 | }*/ |
ejh23 | 9:483d03b3e1bc | 794 | } |
ejh23 | 9:483d03b3e1bc | 795 | case SpeciesSnake: |
ejh23 | 10:62da82b9b6de | 796 | { //Display relevant information for species previously selected by user |
ejh23 | 9:483d03b3e1bc | 797 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 798 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 799 | lcd.printString("Snake Health",0,1); |
ejh23 | 9:483d03b3e1bc | 800 | char buffer[14]; |
ejh23 | 9:483d03b3e1bc | 801 | int length = sprintf(buffer,"T=%.3f 'C", G_TempAve); |
ejh23 | 10:62da82b9b6de | 802 | if (length <= 14) //check string fits on screen (14 lots of 6 wide characters) |
ejh23 | 9:483d03b3e1bc | 803 | lcd.printString(buffer,0,2); |
ejh23 | 9:483d03b3e1bc | 804 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 9:483d03b3e1bc | 805 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 806 | /*if (G_TempAve >= Snake.LTemp and G_TempAve <= Snake.UTemp) |
ejh23 | 9:483d03b3e1bc | 807 | { |
ejh23 | 9:483d03b3e1bc | 808 | lcd.printString("Temperature OK",0,3); |
ejh23 | 10:62da82b9b6de | 809 | }*/ |
ejh23 | 9:483d03b3e1bc | 810 | } |
ejh23 | 9:483d03b3e1bc | 811 | } |
ejh23 | 9:483d03b3e1bc | 812 | /*printf("Average Reading = %.2f \n",G_TempAve); |
ejh23 | 9:483d03b3e1bc | 813 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 814 | char buffer[14]; |
ejh23 | 9:483d03b3e1bc | 815 | int length = sprintf(buffer,"T=%.3f 'C", G_TempAve); |
ejh23 | 9:483d03b3e1bc | 816 | if (length <= 14) //check string fits on screen (14 lots of 6 wide characters) |
ejh23 | 9:483d03b3e1bc | 817 | lcd.printString(buffer,0,1); |
ejh23 | 9:483d03b3e1bc | 818 | lcd.refresh(); */ |
ejh23 | 9:483d03b3e1bc | 819 | } |
ejh23 | 10:62da82b9b6de | 820 | |
ejh23 | 10:62da82b9b6de | 821 | /******************************************************************************* |
ejh23 | 10:62da82b9b6de | 822 | waits for user inactivity then promts the user to keep device on else device |
ejh23 | 10:62da82b9b6de | 823 | will shut down |
ejh23 | 10:62da82b9b6de | 824 | *******************************************************************************/ |
ejh23 | 9:483d03b3e1bc | 825 | void RemPrompt() |
ejh23 | 9:483d03b3e1bc | 826 | { |
ejh23 | 10:62da82b9b6de | 827 | printf("RP "); |
ejh23 | 9:483d03b3e1bc | 828 | lcd.clear(); |
ejh23 | 9:483d03b3e1bc | 829 | lcd.drawLine(1,1,84,1,1); |
ejh23 | 9:483d03b3e1bc | 830 | lcd.printString("Device may",0,1); |
ejh23 | 9:483d03b3e1bc | 831 | lcd.printString("sleep soon!",0,2); |
ejh23 | 9:483d03b3e1bc | 832 | lcd.printString("A to keep Temp",0,3); |
ejh23 | 10:62da82b9b6de | 833 | lcd.printString("B to main menu",0,4); |
ejh23 | 9:483d03b3e1bc | 834 | lcd.drawLine(1,47,84,47,1); |
ejh23 | 10:62da82b9b6de | 835 | lcd.refresh(); |
ejh23 | 10:62da82b9b6de | 836 | PromptTime.start(); |
ejh23 | 10:62da82b9b6de | 837 | while (PromptTime<=10) |
ejh23 | 10:62da82b9b6de | 838 | { |
ejh23 | 10:62da82b9b6de | 839 | Display(); |
ejh23 | 10:62da82b9b6de | 840 | if (G_APressed==1) |
ejh23 | 10:62da82b9b6de | 841 | { |
ejh23 | 10:62da82b9b6de | 842 | ReviewTime.reset(); //Time out function is reset when the user interacts with device |
ejh23 | 10:62da82b9b6de | 843 | HealthCheck(); |
ejh23 | 10:62da82b9b6de | 844 | } |
ejh23 | 10:62da82b9b6de | 845 | else if(G_BPressed==1) |
ejh23 | 10:62da82b9b6de | 846 | { |
ejh23 | 10:62da82b9b6de | 847 | G_MLayerFlag =1; |
ejh23 | 10:62da82b9b6de | 848 | G_PageNum =1; |
ejh23 | 10:62da82b9b6de | 849 | OpenLayer1(); |
ejh23 | 10:62da82b9b6de | 850 | } |
ejh23 | 10:62da82b9b6de | 851 | } |
ejh23 | 10:62da82b9b6de | 852 | return; |
ejh23 | 10:62da82b9b6de | 853 | } //Prompts user to allow screen to sleep |
ejh23 | 9:483d03b3e1bc | 854 | void HealthCheck() |
ejh23 | 9:483d03b3e1bc | 855 | { |
ejh23 | 10:62da82b9b6de | 856 | printf("HealthCheck \n"); |
ejh23 | 9:483d03b3e1bc | 857 | ReviewTime.start(); //ReviewTime timer started in case this is first time |
ejh23 | 9:483d03b3e1bc | 858 | Display(); |
ejh23 | 9:483d03b3e1bc | 859 | while(ReviewTime<=30) |
ejh23 | 9:483d03b3e1bc | 860 | { |
ejh23 | 10:62da82b9b6de | 861 | bool G_APressed = AButton.read(); |
ejh23 | 10:62da82b9b6de | 862 | bool G_BPressed = BButton.read(); |
ejh23 | 10:62da82b9b6de | 863 | if(ReviewTime>=10) //Added Time out function after 10 seconds |
ejh23 | 9:483d03b3e1bc | 864 | { |
ejh23 | 9:483d03b3e1bc | 865 | RemPrompt(); |
ejh23 | 9:483d03b3e1bc | 866 | } |
ejh23 | 9:483d03b3e1bc | 867 | } |
ejh23 | 9:483d03b3e1bc | 868 | CloseMenu(); |
ejh23 | 9:483d03b3e1bc | 869 | } |
ejh23 | 9:483d03b3e1bc | 870 | |
ejh23 | 9:483d03b3e1bc | 871 | int main() |
ejh23 | 9:483d03b3e1bc | 872 | { |
ejh23 | 9:483d03b3e1bc | 873 | initDevice(); |
ejh23 | 9:483d03b3e1bc | 874 | FillAnimal(); //Initiate Hardware |
ejh23 | 9:483d03b3e1bc | 875 | YButton.rise(&SetContrast); //Interrupts connected to voids |
ejh23 | 9:483d03b3e1bc | 876 | StartButton.rise(&TakeRdng); |
ejh23 | 9:483d03b3e1bc | 877 | MenuOnButton.rise(&OpenLayer1); |
ejh23 | 9:483d03b3e1bc | 878 | MenuOffButton.rise(&CloseMenu); //Obselete |
ejh23 | 9:483d03b3e1bc | 879 | } |