Working Menu, additions to be made

Dependencies:   mbed

Committer:
jackmcgarley
Date:
Wed Aug 24 18:48:25 2022 +0000
Revision:
15:61d9a4e63b99
Parent:
14:ef54ca605b6f
Working menu, additions to be made;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jackmcgarley 7:51c21f7f6f12 1 /*
jackmcgarley 4:143487eef742 2 * Author - Jack McGarley - 18689007
jackmcgarley 14:ef54ca605b6f 3 * Date - August 2022
jackmcgarley 7:51c21f7f6f12 4 * Acknowledgements
jackmcgarley 4:143487eef742 5 * Craig A. Evans, University of Leeds, TMP102 Library, Feb 2016
jackmcgarley 4:143487eef742 6 * Dr Edmond Nurellari, University of Lincoln, Joystick & N5110 Libraries
jackmcgarley 7:51c21f7f6f12 7 */
25574069 1:a87075699085 8
jackmcgarley 4:143487eef742 9 #include "mbed.h" // include the library header, ensure the library has been imported into the project
jackmcgarley 7:51c21f7f6f12 10 #include "Joystick.h"
25574069 2:d3676e11e2c6 11 #include "TMP102.h"
jackmcgarley 4:143487eef742 12 #include "N5110.h"
25574069 0:d4d7e882c87d 13
jackmcgarley 4:143487eef742 14 TMP102 tmp102(I2C_SDA,I2C_SCL); // Create TMP102 object
25574069 0:d4d7e882c87d 15
jackmcgarley 7:51c21f7f6f12 16 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); //Designating N5110 Display
jackmcgarley 4:143487eef742 17
jackmcgarley 4:143487eef742 18 Joystick joystick(PTB10,PTB11,PTC16); //Designating Joystick
25574069 0:d4d7e882c87d 19
jackmcgarley 4:143487eef742 20 Serial pc(USBTX,USBRX); // UART connection for PC
jackmcgarley 7:51c21f7f6f12 21
jackmcgarley 14:ef54ca605b6f 22 DigitalOut grn_led1(PTA1); // Designating LEDs from left to right
jackmcgarley 14:ef54ca605b6f 23 DigitalOut grn_led2(PTA2);
jackmcgarley 14:ef54ca605b6f 24 DigitalOut grn_led3(PTC2);
jackmcgarley 14:ef54ca605b6f 25 DigitalOut red_led1(PTC3);
jackmcgarley 14:ef54ca605b6f 26 DigitalOut red_led2(PTC4);
jackmcgarley 14:ef54ca605b6f 27 DigitalOut red_led3(PTD3);
jackmcgarley 14:ef54ca605b6f 28 DigitalIn button_A(PTB9); // Designating Buttons
jackmcgarley 14:ef54ca605b6f 29 //DigitalIn B(PTD0);
jackmcgarley 14:ef54ca605b6f 30 DigitalIn button_X(PTC17);
jackmcgarley 14:ef54ca605b6f 31 DigitalIn button_Y(PTC12);
jackmcgarley 14:ef54ca605b6f 32 DigitalIn button_L(PTB18);
jackmcgarley 14:ef54ca605b6f 33 DigitalIn button_R(PTB3);
jackmcgarley 14:ef54ca605b6f 34 InterruptIn button_back(PTB19);
jackmcgarley 14:ef54ca605b6f 35 InterruptIn button_start(PTC5);
jackmcgarley 4:143487eef742 36 InterruptIn sw2(SW2); // K64F on-board switches
jackmcgarley 4:143487eef742 37 InterruptIn sw3(SW3);
jackmcgarley 13:f2dad2365841 38 InterruptIn B(PTD0);
jackmcgarley 14:ef54ca605b6f 39 InterruptIn R(PTB3); // Right Bumper Button
jackmcgarley 14:ef54ca605b6f 40 InterruptIn L(PTB18); // Left Bumper Button
jackmcgarley 14:ef54ca605b6f 41 InterruptIn A(PTB9); // A Button
jackmcgarley 14:ef54ca605b6f 42 InterruptIn Y(PTC12); // Y Button
jackmcgarley 7:51c21f7f6f12 43 DigitalOut r_led(LED_RED); // K64F on-board LEDs
jackmcgarley 5:bec67fb2b2f9 44 DigitalOut g_led(LED_GREEN);
jackmcgarley 4:143487eef742 45 DigitalOut b_led(LED_BLUE);
jackmcgarley 7:51c21f7f6f12 46
jackmcgarley 14:ef54ca605b6f 47
jackmcgarley 14:ef54ca605b6f 48
jackmcgarley 14:ef54ca605b6f 49 float Morning, Afternoon, Evening, Night ;
jackmcgarley 14:ef54ca605b6f 50
jackmcgarley 14:ef54ca605b6f 51
jackmcgarley 14:ef54ca605b6f 52
jackmcgarley 14:ef54ca605b6f 53 /** Declare voids before using in the code*/
jackmcgarley 7:51c21f7f6f12 54
jackmcgarley 14:ef54ca605b6f 55 void button_start_isr(); // Button Start interrupt service routine
jackmcgarley 14:ef54ca605b6f 56 void button_back_isr();
jackmcgarley 7:51c21f7f6f12 57
jackmcgarley 14:ef54ca605b6f 58 void B_isr(); // Interrupt Voidsvoid R_isr();
jackmcgarley 14:ef54ca605b6f 59 void L_isr();
jackmcgarley 14:ef54ca605b6f 60 void A_isr();
jackmcgarley 14:ef54ca605b6f 61 void Y_isr();
jackmcgarley 13:f2dad2365841 62 void init_buttons(); // Initialise buttons
jackmcgarley 7:51c21f7f6f12 63
jackmcgarley 14:ef54ca605b6f 64
jackmcgarley 4:143487eef742 65 void error(); // error function hangs flashing an LED
jackmcgarley 4:143487eef742 66
jackmcgarley 14:ef54ca605b6f 67
jackmcgarley 4:143487eef742 68 void init_serial(); // Setting up the serial port
25574069 0:d4d7e882c87d 69
jackmcgarley 14:ef54ca605b6f 70
jackmcgarley 4:143487eef742 71 void init_K64F(); // Setting up the on-board LEDs and switches
25574069 0:d4d7e882c87d 72
jackmcgarley 14:ef54ca605b6f 73
jackmcgarley 12:988bacb1c2a6 74 void init_leds(); // Setting up the LEDs
jackmcgarley 5:bec67fb2b2f9 75
jackmcgarley 14:ef54ca605b6f 76
jackmcgarley 12:988bacb1c2a6 77 void welcome(); // Setting up welcome screen
jackmcgarley 8:811fe7529732 78
jackmcgarley 14:ef54ca605b6f 79
jackmcgarley 12:988bacb1c2a6 80 void startup(); // Setting up startup
jackmcgarley 5:bec67fb2b2f9 81
jackmcgarley 14:ef54ca605b6f 82
jackmcgarley 14:ef54ca605b6f 83 void collection(); //temp collection
jackmcgarley 14:ef54ca605b6f 84
jackmcgarley 14:ef54ca605b6f 85
jackmcgarley 14:ef54ca605b6f 86 void view_data(); //view saved data
jackmcgarley 14:ef54ca605b6f 87
jackmcgarley 14:ef54ca605b6f 88
jackmcgarley 14:ef54ca605b6f 89
jackmcgarley 13:f2dad2365841 90 void display_tmp(); // Tempertature display
jackmcgarley 13:f2dad2365841 91
jackmcgarley 14:ef54ca605b6f 92
jackmcgarley 14:ef54ca605b6f 93
jackmcgarley 14:ef54ca605b6f 94 void morning(); //morning temp reading
jackmcgarley 14:ef54ca605b6f 95
jackmcgarley 14:ef54ca605b6f 96
jackmcgarley 14:ef54ca605b6f 97
jackmcgarley 14:ef54ca605b6f 98 void afternoon(); //afternoon temp reading
jackmcgarley 14:ef54ca605b6f 99
jackmcgarley 14:ef54ca605b6f 100
jackmcgarley 14:ef54ca605b6f 101
jackmcgarley 14:ef54ca605b6f 102 void evening(); //evening temp reading
jackmcgarley 13:f2dad2365841 103
jackmcgarley 14:ef54ca605b6f 104
jackmcgarley 14:ef54ca605b6f 105
jackmcgarley 14:ef54ca605b6f 106 void night(); //night temp reading
jackmcgarley 14:ef54ca605b6f 107
jackmcgarley 14:ef54ca605b6f 108
jackmcgarley 13:f2dad2365841 109
jackmcgarley 14:ef54ca605b6f 110 volatile int button_start_flag; // Global Variables
jackmcgarley 14:ef54ca605b6f 111 volatile int button_back_flag; // Global Variables
jackmcgarley 14:ef54ca605b6f 112 volatile int g_R_flag = 0;
jackmcgarley 14:ef54ca605b6f 113 volatile int g_L_flag = 0;
jackmcgarley 14:ef54ca605b6f 114 volatile int g_A_flag = 0;
jackmcgarley 14:ef54ca605b6f 115 volatile int g_Y_flag = 0;
jackmcgarley 13:f2dad2365841 116 volatile int g_B_flag = 0;
jackmcgarley 8:811fe7529732 117
jackmcgarley 14:ef54ca605b6f 118
jackmcgarley 14:ef54ca605b6f 119
jackmcgarley 14:ef54ca605b6f 120
jackmcgarley 14:ef54ca605b6f 121 /**Main Function*/
jackmcgarley 4:143487eef742 122 int main()
jackmcgarley 4:143487eef742 123 {
jackmcgarley 7:51c21f7f6f12 124 button_start.mode(PullDown);
jackmcgarley 7:51c21f7f6f12 125 button_start.rise(button_start_isr);
jackmcgarley 14:ef54ca605b6f 126 button_back.mode(PullDown);
jackmcgarley 14:ef54ca605b6f 127 button_back.rise(button_back_isr);
jackmcgarley 14:ef54ca605b6f 128 B.fall(&B_isr); // Flipping the Interrupt Function
jackmcgarley 14:ef54ca605b6f 129 B.mode(PullDown); // When the PCB Button is Pulled Down
jackmcgarley 14:ef54ca605b6f 130 /**R.fall(&R_isr);
jackmcgarley 14:ef54ca605b6f 131 R.mode(PullDown);
jackmcgarley 14:ef54ca605b6f 132 L.fall(&L_isr);
jackmcgarley 14:ef54ca605b6f 133 L.mode(PullDown);
jackmcgarley 14:ef54ca605b6f 134 A.fall(&A_isr);A.mode(PullDown);
jackmcgarley 14:ef54ca605b6f 135 Y.fall(&Y_isr);
jackmcgarley 14:ef54ca605b6f 136 Y.mode(PullDown);**/
jackmcgarley 14:ef54ca605b6f 137
jackmcgarley 14:ef54ca605b6f 138
jackmcgarley 7:51c21f7f6f12 139
jackmcgarley 5:bec67fb2b2f9 140 init_K64F(); // Initialising the board, serial port, LED'S and joystick
jackmcgarley 7:51c21f7f6f12 141 init_serial();
jackmcgarley 5:bec67fb2b2f9 142 init_leds();
jackmcgarley 7:51c21f7f6f12 143 joystick.init();
jackmcgarley 7:51c21f7f6f12 144
jackmcgarley 14:ef54ca605b6f 145
jackmcgarley 14:ef54ca605b6f 146
jackmcgarley 5:bec67fb2b2f9 147 tmp102.init(); // call the sensor init method using dot syntax
jackmcgarley 7:51c21f7f6f12 148
jackmcgarley 14:ef54ca605b6f 149
jackmcgarley 14:ef54ca605b6f 150
jackmcgarley 5:bec67fb2b2f9 151 lcd.init(); // initialise display
jackmcgarley 7:51c21f7f6f12 152
jackmcgarley 14:ef54ca605b6f 153
jackmcgarley 14:ef54ca605b6f 154
jackmcgarley 5:bec67fb2b2f9 155 lcd.setContrast(0.5); // Sets contrast to 0.5
jackmcgarley 12:988bacb1c2a6 156 welcome(); // Initialising Welcome Screen
jackmcgarley 12:988bacb1c2a6 157 startup(); // Initialising Startup
jackmcgarley 7:51c21f7f6f12 158
jackmcgarley 14:ef54ca605b6f 159
jackmcgarley 14:ef54ca605b6f 160
jackmcgarley 5:bec67fb2b2f9 161 while (1) {
jackmcgarley 5:bec67fb2b2f9 162 // these are settings that I have adjusted
jackmcgarley 7:51c21f7f6f12 163 lcd.normalMode(); // normal colour mode
jackmcgarley 5:bec67fb2b2f9 164 lcd.setBrightness(0.75); // put LED backlight on 75%
jackmcgarley 7:51c21f7f6f12 165
jackmcgarley 14:ef54ca605b6f 166
jackmcgarley 14:ef54ca605b6f 167
jackmcgarley 5:bec67fb2b2f9 168 float T = tmp102.get_temperature(); // read temperature and print over serial port
jackmcgarley 5:bec67fb2b2f9 169 pc.printf("T = %.1f K\n",T);
jackmcgarley 7:51c21f7f6f12 170
jackmcgarley 14:ef54ca605b6f 171
jackmcgarley 14:ef54ca605b6f 172
jackmcgarley 5:bec67fb2b2f9 173 if (T > 37.2f) {
jackmcgarley 5:bec67fb2b2f9 174 red_led1.write(0); // LED 1 will flash when you're in High Temp
jackmcgarley 5:bec67fb2b2f9 175 pc.printf("High Temperature \n"); // Printing to the LCD
jackmcgarley 5:bec67fb2b2f9 176 }
jackmcgarley 7:51c21f7f6f12 177
jackmcgarley 14:ef54ca605b6f 178
jackmcgarley 14:ef54ca605b6f 179
jackmcgarley 5:bec67fb2b2f9 180 else if (T < 36.1f) {
jackmcgarley 5:bec67fb2b2f9 181 red_led2.write(0); // LED 2 will flash when you're in Low Temp
jackmcgarley 5:bec67fb2b2f9 182 printf("Low Temperature \n"); // Printing to the LCD
jackmcgarley 7:51c21f7f6f12 183 }
jackmcgarley 5:bec67fb2b2f9 184 else if (T > 38) {
jackmcgarley 5:bec67fb2b2f9 185 red_led3.write(0); // LED 3 will flash when you're beyond high temperature
jackmcgarley 5:bec67fb2b2f9 186 printf("Call Your GP \n"); // Printing to the LCD
jackmcgarley 5:bec67fb2b2f9 187 }
jackmcgarley 4:143487eef742 188 }
jackmcgarley 7:51c21f7f6f12 189 }
jackmcgarley 13:f2dad2365841 190
jackmcgarley 14:ef54ca605b6f 191
jackmcgarley 14:ef54ca605b6f 192
jackmcgarley 4:143487eef742 193 void init_serial() {
jackmcgarley 7:51c21f7f6f12 194 pc.baud(9600); // set to highest baud - ensure terminal software matches
25574069 0:d4d7e882c87d 195 }
jackmcgarley 7:51c21f7f6f12 196
jackmcgarley 14:ef54ca605b6f 197
jackmcgarley 14:ef54ca605b6f 198
jackmcgarley 7:51c21f7f6f12 199 void init_K64F()
25574069 0:d4d7e882c87d 200 {
jackmcgarley 7:51c21f7f6f12 201 r_led = 1; // on-board LEDs are active-low, so set pin high to turn them off.
jackmcgarley 7:51c21f7f6f12 202 g_led = 1;
jackmcgarley 7:51c21f7f6f12 203 b_led = 1;
jackmcgarley 7:51c21f7f6f12 204
jackmcgarley 14:ef54ca605b6f 205
jackmcgarley 14:ef54ca605b6f 206
jackmcgarley 7:51c21f7f6f12 207 // since the on-board switches have external pull-ups, we should disable the internal pull-down
jackmcgarley 7:51c21f7f6f12 208 // resistors that are enabled by default using InterruptIn
jackmcgarley 7:51c21f7f6f12 209 sw2.mode(PullNone);
jackmcgarley 7:51c21f7f6f12 210 sw3.mode(PullNone);
jackmcgarley 7:51c21f7f6f12 211
jackmcgarley 14:ef54ca605b6f 212
jackmcgarley 14:ef54ca605b6f 213
25574069 0:d4d7e882c87d 214 }
jackmcgarley 4:143487eef742 215 void init_leds()
jackmcgarley 4:143487eef742 216 {
jackmcgarley 7:51c21f7f6f12 217 red_led1.write(1); // LEDs are common anode (active-low) so writing a 1 will turn them off
jackmcgarley 7:51c21f7f6f12 218 red_led2.write(1);
jackmcgarley 7:51c21f7f6f12 219 red_led3.write(1);
jackmcgarley 13:f2dad2365841 220 grn_led1.write(0);// LED on to show the board is on
jackmcgarley 7:51c21f7f6f12 221 grn_led2.write(1);
jackmcgarley 14:ef54ca605b6f 222 grn_led3.write(1);
jackmcgarley 5:bec67fb2b2f9 223 }
jackmcgarley 11:f1a6cced30cf 224 void lcd_sett()//LCD Set
jackmcgarley 5:bec67fb2b2f9 225 {
jackmcgarley 7:51c21f7f6f12 226 }
jackmcgarley 11:f1a6cced30cf 227 void startup() // Void function setup
jackmcgarley 7:51c21f7f6f12 228 {
jackmcgarley 14:ef54ca605b6f 229 button_start_flag = 0;
jackmcgarley 14:ef54ca605b6f 230 button_back_flag = 0;
jackmcgarley 10:f894ac48a342 231 int select = 1;
jackmcgarley 11:f1a6cced30cf 232 /**Menu starting here, using the joystick for navigating the menu.
jackmcgarley 11:f1a6cced30cf 233 */
jackmcgarley 7:51c21f7f6f12 234 while (1) {
jackmcgarley 11:f1a6cced30cf 235 char d = joystick.get_direction(); // Allowing the joystick to navigate the menu
jackmcgarley 7:51c21f7f6f12 236
jackmcgarley 14:ef54ca605b6f 237
jackmcgarley 14:ef54ca605b6f 238
jackmcgarley 11:f1a6cced30cf 239 switch(select) { // Main switch
jackmcgarley 11:f1a6cced30cf 240 case 1: //Internal case 1 switch
jackmcgarley 10:f894ac48a342 241 switch(d) {
jackmcgarley 10:f894ac48a342 242 case N:
jackmcgarley 10:f894ac48a342 243 select = 4;
jackmcgarley 10:f894ac48a342 244 wait(0.3);
jackmcgarley 10:f894ac48a342 245 // printf("UP");
jackmcgarley 11:f1a6cced30cf 246 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 247 case S:
jackmcgarley 10:f894ac48a342 248 select = 2;
jackmcgarley 10:f894ac48a342 249 wait(0.3);
jackmcgarley 10:f894ac48a342 250 // printf("Down");
jackmcgarley 11:f1a6cced30cf 251 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 252 }
jackmcgarley 11:f1a6cced30cf 253 break; // Break from main switch
jackmcgarley 10:f894ac48a342 254
jackmcgarley 14:ef54ca605b6f 255
jackmcgarley 14:ef54ca605b6f 256
jackmcgarley 11:f1a6cced30cf 257 case 2: //Internal case 2 switch
jackmcgarley 10:f894ac48a342 258 switch(d) {
jackmcgarley 10:f894ac48a342 259 case N:
jackmcgarley 10:f894ac48a342 260 select = 1;
jackmcgarley 10:f894ac48a342 261 wait(0.3);
jackmcgarley 10:f894ac48a342 262 // printf("UP");
jackmcgarley 11:f1a6cced30cf 263 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 264 case S:
jackmcgarley 10:f894ac48a342 265 select = 3;
jackmcgarley 10:f894ac48a342 266 wait(0.3);
jackmcgarley 10:f894ac48a342 267 // printf("Down");
jackmcgarley 11:f1a6cced30cf 268 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 269 }
jackmcgarley 11:f1a6cced30cf 270 break; // Break from main switch
jackmcgarley 7:51c21f7f6f12 271
jackmcgarley 14:ef54ca605b6f 272
jackmcgarley 14:ef54ca605b6f 273
jackmcgarley 11:f1a6cced30cf 274 case 3: //Internal case 3 switch
jackmcgarley 10:f894ac48a342 275 switch(d) {
jackmcgarley 10:f894ac48a342 276 case N:
jackmcgarley 10:f894ac48a342 277 select = 2;
jackmcgarley 10:f894ac48a342 278 wait(0.3);
jackmcgarley 10:f894ac48a342 279 // printf("UP");
jackmcgarley 11:f1a6cced30cf 280 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 281 case S:
jackmcgarley 10:f894ac48a342 282 select = 4;
jackmcgarley 10:f894ac48a342 283 wait(0.3);
jackmcgarley 10:f894ac48a342 284 // printf("Down");
jackmcgarley 11:f1a6cced30cf 285 break; // Break from internal switch
jackmcgarley 7:51c21f7f6f12 286 }
jackmcgarley 11:f1a6cced30cf 287 break; // Break from main switch
jackmcgarley 7:51c21f7f6f12 288
jackmcgarley 14:ef54ca605b6f 289
jackmcgarley 14:ef54ca605b6f 290
jackmcgarley 11:f1a6cced30cf 291 case 4: //Internal case 4 switch
jackmcgarley 10:f894ac48a342 292 switch(d) {
jackmcgarley 10:f894ac48a342 293 case N:
jackmcgarley 10:f894ac48a342 294 select = 3;
jackmcgarley 10:f894ac48a342 295 wait(0.3);
jackmcgarley 10:f894ac48a342 296 // printf("UP");
jackmcgarley 11:f1a6cced30cf 297 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 298 case S:
jackmcgarley 10:f894ac48a342 299 select = 1;
jackmcgarley 10:f894ac48a342 300 wait(0.3);
jackmcgarley 10:f894ac48a342 301 // printf("Down");
jackmcgarley 11:f1a6cced30cf 302 break; // Break from internal switch
jackmcgarley 10:f894ac48a342 303 }
jackmcgarley 11:f1a6cced30cf 304 break; // Break from main switch
jackmcgarley 10:f894ac48a342 305 }
jackmcgarley 10:f894ac48a342 306 wait(0.3);
jackmcgarley 14:ef54ca605b6f 307 /** Menu selection screen printed to LCD*/
jackmcgarley 14:ef54ca605b6f 308
jackmcgarley 10:f894ac48a342 309 if (select == 1){
jackmcgarley 13:f2dad2365841 310 lcd.clear(); // Clear display
jackmcgarley 11:f1a6cced30cf 311 lcd.printString(" >Collection ", 0, 0); // Menu Selection, printing to LCD
jackmcgarley 7:51c21f7f6f12 312 lcd.printString(" View Data ", 0, 1);
jackmcgarley 7:51c21f7f6f12 313 lcd.printString(" Live Data ", 0, 2);
jackmcgarley 7:51c21f7f6f12 314 lcd.printString(" About ", 0, 3);
jackmcgarley 12:988bacb1c2a6 315 lcd.refresh(); // Refresh display
jackmcgarley 14:ef54ca605b6f 316 wait(0.3);
jackmcgarley 14:ef54ca605b6f 317
jackmcgarley 14:ef54ca605b6f 318 if (button_start_flag==1){
jackmcgarley 14:ef54ca605b6f 319 printf("start button");
jackmcgarley 14:ef54ca605b6f 320 button_start_flag=0;
jackmcgarley 14:ef54ca605b6f 321 collection();
jackmcgarley 14:ef54ca605b6f 322 }
jackmcgarley 14:ef54ca605b6f 323 }
jackmcgarley 14:ef54ca605b6f 324
jackmcgarley 14:ef54ca605b6f 325
jackmcgarley 7:51c21f7f6f12 326
jackmcgarley 10:f894ac48a342 327 else if (select == 2) {
jackmcgarley 11:f1a6cced30cf 328 lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD
jackmcgarley 7:51c21f7f6f12 329 lcd.printString(" >View Data ", 0, 1);
jackmcgarley 12:988bacb1c2a6 330 lcd.printString(" Live Data ", 0, 2);
jackmcgarley 13:f2dad2365841 331 lcd.printString(" About ", 0, 3);
jackmcgarley 12:988bacb1c2a6 332 lcd.refresh(); // Refresh display
jackmcgarley 14:ef54ca605b6f 333 wait(0.3);
jackmcgarley 14:ef54ca605b6f 334 if (button_start_flag==1){
jackmcgarley 14:ef54ca605b6f 335 button_start_flag=0;
jackmcgarley 14:ef54ca605b6f 336 view_data();
jackmcgarley 14:ef54ca605b6f 337 }
jackmcgarley 14:ef54ca605b6f 338 }
jackmcgarley 14:ef54ca605b6f 339
jackmcgarley 14:ef54ca605b6f 340
jackmcgarley 7:51c21f7f6f12 341
jackmcgarley 10:f894ac48a342 342 else if (select == 3) {
jackmcgarley 13:f2dad2365841 343 lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD
jackmcgarley 12:988bacb1c2a6 344 lcd.printString(" View Data ", 0, 1);// Menu Selection, Printing to LCD
jackmcgarley 10:f894ac48a342 345 lcd.printString(" >Live Data ", 0, 2);
jackmcgarley 12:988bacb1c2a6 346 lcd.printString(" About ", 0, 3);
jackmcgarley 12:988bacb1c2a6 347 lcd.refresh(); // Refresh display
jackmcgarley 13:f2dad2365841 348 wait(0.3);
jackmcgarley 13:f2dad2365841 349 display_tmp();}
jackmcgarley 10:f894ac48a342 350
jackmcgarley 14:ef54ca605b6f 351
jackmcgarley 14:ef54ca605b6f 352
jackmcgarley 10:f894ac48a342 353 else if (select == 4){
jackmcgarley 11:f1a6cced30cf 354 lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD
jackmcgarley 13:f2dad2365841 355 lcd.printString(" View Data ", 0, 1);
jackmcgarley 10:f894ac48a342 356 lcd.printString(" Live Data ", 0, 2);
jackmcgarley 10:f894ac48a342 357 lcd.printString(" >About ", 0, 3);
jackmcgarley 12:988bacb1c2a6 358 lcd.refresh(); // Refresh display
jackmcgarley 10:f894ac48a342 359 wait(0.3);}
jackmcgarley 7:51c21f7f6f12 360 }
jackmcgarley 7:51c21f7f6f12 361 }
jackmcgarley 7:51c21f7f6f12 362
jackmcgarley 14:ef54ca605b6f 363
jackmcgarley 12:988bacb1c2a6 364 void welcome() // Start Welcome screens
jackmcgarley 14:ef54ca605b6f 365 {
jackmcgarley 5:bec67fb2b2f9 366 lcd.clear();
jackmcgarley 14:ef54ca605b6f 367 lcd.printString(" Jack McGarley ", 0, 0); // Welcome Screen 1, Printing to LCD
jackmcgarley 7:51c21f7f6f12 368 lcd.printString(" 18689007 ", 0, 1);
jackmcgarley 6:e6e7b99198fd 369 lcd.printString(" Schneider ", 0, 2);
jackmcgarley 6:e6e7b99198fd 370 lcd.printString(" Lincoln Uni ", 0, 3);
jackmcgarley 10:f894ac48a342 371 lcd.printString(" February 2022 ", 0, 4);
jackmcgarley 12:988bacb1c2a6 372 lcd.refresh(); // Refresh display
jackmcgarley 6:e6e7b99198fd 373 wait(3);
jackmcgarley 11:f1a6cced30cf 374
jackmcgarley 14:ef54ca605b6f 375
jackmcgarley 6:e6e7b99198fd 376 lcd.clear();
jackmcgarley 11:f1a6cced30cf 377 lcd.printString(" Temperature ", 0, 0);// Welcome Screen 2, Printing to LCD
jackmcgarley 6:e6e7b99198fd 378 lcd.printString(" Based ", 0, 1);
jackmcgarley 6:e6e7b99198fd 379 lcd.printString(" Smart Device ", 0, 2);
jackmcgarley 6:e6e7b99198fd 380 lcd.printString(" Health ", 0, 3);
jackmcgarley 6:e6e7b99198fd 381 lcd.printString(" Monitoring ", 0, 4);
jackmcgarley 12:988bacb1c2a6 382 lcd.refresh(); // Refresh display
jackmcgarley 6:e6e7b99198fd 383 wait(3);
jackmcgarley 7:51c21f7f6f12 384 }
jackmcgarley 13:f2dad2365841 385
jackmcgarley 14:ef54ca605b6f 386 void B_isr() // Right Bumper Interrupt Service
jackmcgarley 14:ef54ca605b6f 387 {g_B_flag = 1; // set flag in ISR
jackmcgarley 14:ef54ca605b6f 388 }
jackmcgarley 14:ef54ca605b6f 389 void R_isr() // Right Bumper Interrupt Service
jackmcgarley 14:ef54ca605b6f 390 { g_R_flag = 1; // set flag in ISR
jackmcgarley 7:51c21f7f6f12 391 }
jackmcgarley 14:ef54ca605b6f 392 void L_isr() // Left Bumper Interrupt Service
jackmcgarley 14:ef54ca605b6f 393 { g_L_flag = 1; // set flag in ISR
jackmcgarley 14:ef54ca605b6f 394 }
jackmcgarley 14:ef54ca605b6f 395 void A_isr() // A Button Interrupt Service
jackmcgarley 14:ef54ca605b6f 396 { g_A_flag = 1; // set flag in ISR
jackmcgarley 14:ef54ca605b6f 397 }
jackmcgarley 14:ef54ca605b6f 398 void Y_isr() // Y Button Interrupt Service
jackmcgarley 14:ef54ca605b6f 399 { g_Y_flag = 1; // set flag in ISR
jackmcgarley 13:f2dad2365841 400 }
jackmcgarley 13:f2dad2365841 401
jackmcgarley 14:ef54ca605b6f 402
jackmcgarley 14:ef54ca605b6f 403
jackmcgarley 13:f2dad2365841 404 void display_tmp() // Displays Temperature on LCD
jackmcgarley 14:ef54ca605b6f 405 {
jackmcgarley 14:ef54ca605b6f 406 char buffer[14]; //each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
jackmcgarley 13:f2dad2365841 407 if (g_B_flag) { // Press button B to display Live data
jackmcgarley 14:ef54ca605b6f 408 g_B_flag = 0;
jackmcgarley 13:f2dad2365841 409 B.rise(&B_isr);
jackmcgarley 14:ef54ca605b6f 410 float T = tmp102.get_temperature(); // Get temperature and display
jackmcgarley 14:ef54ca605b6f 411 int length = sprintf(buffer,"%.1f C",T); // Displays to .1 decimal place
jackmcgarley 13:f2dad2365841 412 if (length <= 14) {
jackmcgarley 13:f2dad2365841 413 lcd.clear(); // Clear display
jackmcgarley 13:f2dad2365841 414 lcd.printString("Temperature",0,1);
jackmcgarley 13:f2dad2365841 415 lcd.printString(buffer,0,2);
jackmcgarley 14:ef54ca605b6f 416 lcd.refresh();} // Refresh display
jackmcgarley 13:f2dad2365841 417 wait(3);
jackmcgarley 13:f2dad2365841 418 }
jackmcgarley 14:ef54ca605b6f 419 }
jackmcgarley 14:ef54ca605b6f 420
jackmcgarley 14:ef54ca605b6f 421
jackmcgarley 14:ef54ca605b6f 422
jackmcgarley 14:ef54ca605b6f 423 void collection(){
jackmcgarley 14:ef54ca605b6f 424
jackmcgarley 14:ef54ca605b6f 425 int state = 0;
jackmcgarley 14:ef54ca605b6f 426
jackmcgarley 14:ef54ca605b6f 427 while(1)
jackmcgarley 14:ef54ca605b6f 428 {
jackmcgarley 14:ef54ca605b6f 429 switch(state){
jackmcgarley 14:ef54ca605b6f 430 case 0:
jackmcgarley 14:ef54ca605b6f 431 {
jackmcgarley 14:ef54ca605b6f 432 lcd.clear(); // Clear display
jackmcgarley 14:ef54ca605b6f 433 lcd.printString(" >Morning", 0, 0); // Menu Selection, printing to LCD
jackmcgarley 14:ef54ca605b6f 434 lcd.printString(" Afternoon ", 0, 1);
jackmcgarley 14:ef54ca605b6f 435 lcd.printString(" Evening ", 0, 2);
jackmcgarley 14:ef54ca605b6f 436 lcd.printString(" Night ", 0, 3);
jackmcgarley 14:ef54ca605b6f 437 lcd.refresh(); // Refresh display
jackmcgarley 14:ef54ca605b6f 438 wait(0.3);}
jackmcgarley 14:ef54ca605b6f 439
jackmcgarley 14:ef54ca605b6f 440
jackmcgarley 14:ef54ca605b6f 441
jackmcgarley 14:ef54ca605b6f 442 if (button_start_flag==1){
jackmcgarley 14:ef54ca605b6f 443 button_start_flag=0;
jackmcgarley 14:ef54ca605b6f 444 morning();
jackmcgarley 14:ef54ca605b6f 445 }
jackmcgarley 14:ef54ca605b6f 446 else if (button_back_flag==1){
jackmcgarley 14:ef54ca605b6f 447 button_back_flag=0;
jackmcgarley 14:ef54ca605b6f 448 startup();
jackmcgarley 14:ef54ca605b6f 449 }
jackmcgarley 14:ef54ca605b6f 450 }
jackmcgarley 14:ef54ca605b6f 451 }
jackmcgarley 14:ef54ca605b6f 452 }
jackmcgarley 14:ef54ca605b6f 453
jackmcgarley 14:ef54ca605b6f 454 void view_data()
jackmcgarley 14:ef54ca605b6f 455 {
jackmcgarley 14:ef54ca605b6f 456
jackmcgarley 14:ef54ca605b6f 457 lcd.clear();
jackmcgarley 14:ef54ca605b6f 458 char buffer[14];
jackmcgarley 14:ef54ca605b6f 459 int length = sprintf(buffer,"%.1f C", Morning);
jackmcgarley 14:ef54ca605b6f 460 if (length <= 14)
jackmcgarley 14:ef54ca605b6f 461 lcd.printString("Morning Temp",0,0);
jackmcgarley 14:ef54ca605b6f 462 lcd.printString(buffer,24,3);
jackmcgarley 14:ef54ca605b6f 463 lcd.refresh();
jackmcgarley 14:ef54ca605b6f 464 wait(1);
jackmcgarley 14:ef54ca605b6f 465
jackmcgarley 14:ef54ca605b6f 466 if (button_back_flag==1){
jackmcgarley 14:ef54ca605b6f 467 button_back_flag=0;
jackmcgarley 14:ef54ca605b6f 468 startup();
jackmcgarley 14:ef54ca605b6f 469 }
jackmcgarley 14:ef54ca605b6f 470 }
jackmcgarley 14:ef54ca605b6f 471 void morning(){
jackmcgarley 14:ef54ca605b6f 472
jackmcgarley 14:ef54ca605b6f 473 Morning = tmp102.get_temperature();
jackmcgarley 14:ef54ca605b6f 474 printf("morning temp = %i\n",Morning);
jackmcgarley 14:ef54ca605b6f 475 }
jackmcgarley 14:ef54ca605b6f 476
jackmcgarley 14:ef54ca605b6f 477 void button_start_isr()
jackmcgarley 14:ef54ca605b6f 478 {
jackmcgarley 14:ef54ca605b6f 479 button_start_flag = 1;
jackmcgarley 14:ef54ca605b6f 480 }
jackmcgarley 14:ef54ca605b6f 481
jackmcgarley 14:ef54ca605b6f 482 void button_back_isr()
jackmcgarley 14:ef54ca605b6f 483 {
jackmcgarley 14:ef54ca605b6f 484 button_back_flag = 1;
jackmcgarley 4:143487eef742 485 }