Working Menu, additions to be made

Dependencies:   mbed

Committer:
jackmcgarley
Date:
Fri Feb 04 14:45:43 2022 +0000
Revision:
10:f894ac48a342
Parent:
8:811fe7529732
Child:
11:f1a6cced30cf
Working Menu;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jackmcgarley 7:51c21f7f6f12 1 /*
jackmcgarley 4:143487eef742 2 * Author - Jack McGarley - 18689007
jackmcgarley 4:143487eef742 3 * Date - January 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 DigitalOut grn_led1(PTA1); // Designating LEDs from left to right
jackmcgarley 4:143487eef742 15 DigitalOut grn_led2(PTA2);
jackmcgarley 4:143487eef742 16 DigitalOut grn_led3(PTC2);
jackmcgarley 4:143487eef742 17 DigitalOut red_led1(PTC3);
jackmcgarley 4:143487eef742 18 DigitalOut red_led2(PTC4);
jackmcgarley 4:143487eef742 19 DigitalOut red_led3(PTD3);
25574069 0:d4d7e882c87d 20
jackmcgarley 4:143487eef742 21 DigitalIn button_A(PTB9); // Designating Buttons
jackmcgarley 4:143487eef742 22 DigitalIn button_B(PTD0);
jackmcgarley 4:143487eef742 23 DigitalIn button_X(PTC17);
jackmcgarley 4:143487eef742 24 DigitalIn button_Y(PTC12);
jackmcgarley 4:143487eef742 25 DigitalIn button_L(PTB18);
jackmcgarley 4:143487eef742 26 DigitalIn button_R(PTB3);
jackmcgarley 7:51c21f7f6f12 27 InterruptIn button_back(PTB19);
jackmcgarley 7:51c21f7f6f12 28 InterruptIn button_start(PTC5);
jackmcgarley 7:51c21f7f6f12 29
jackmcgarley 4:143487eef742 30 TMP102 tmp102(I2C_SDA,I2C_SCL); // Create TMP102 object
25574069 0:d4d7e882c87d 31
jackmcgarley 7:51c21f7f6f12 32 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); //Designating N5110 Display
jackmcgarley 4:143487eef742 33
jackmcgarley 4:143487eef742 34 Joystick joystick(PTB10,PTB11,PTC16); //Designating Joystick
25574069 0:d4d7e882c87d 35
jackmcgarley 4:143487eef742 36 Serial pc(USBTX,USBRX); // UART connection for PC
jackmcgarley 7:51c21f7f6f12 37
jackmcgarley 4:143487eef742 38 InterruptIn sw2(SW2); // K64F on-board switches
jackmcgarley 4:143487eef742 39 InterruptIn sw3(SW3);
jackmcgarley 7:51c21f7f6f12 40 InterruptIn buttonStart(PTC5);
jackmcgarley 7:51c21f7f6f12 41 InterruptIn buttonBack(PTB19);
jackmcgarley 7:51c21f7f6f12 42
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 5:bec67fb2b2f9 47 // DECLARE VOIDS BEING USED IN CODE
25574069 0:d4d7e882c87d 48
jackmcgarley 7:51c21f7f6f12 49 void buttonStart_isr(); // Button Start interrupt service routine
jackmcgarley 7:51c21f7f6f12 50
jackmcgarley 7:51c21f7f6f12 51 void buttonBack_isr(); // Button Back interrupt service routine
jackmcgarley 7:51c21f7f6f12 52
jackmcgarley 7:51c21f7f6f12 53 void button_start_isr();
jackmcgarley 7:51c21f7f6f12 54
jackmcgarley 7:51c21f7f6f12 55 void button_back_isr();
jackmcgarley 7:51c21f7f6f12 56
jackmcgarley 7:51c21f7f6f12 57 volatile int S_flag, B_flag;
jackmcgarley 7:51c21f7f6f12 58 volatile int g_buttonStart_flag = 0;
jackmcgarley 7:51c21f7f6f12 59 volatile int g_buttonBack_flag = 0;
jackmcgarley 7:51c21f7f6f12 60
jackmcgarley 4:143487eef742 61 void error(); // error function hangs flashing an LED
jackmcgarley 4:143487eef742 62
jackmcgarley 4:143487eef742 63 void init_serial(); // Setting up the serial port
25574069 0:d4d7e882c87d 64
jackmcgarley 4:143487eef742 65 void init_K64F(); // Setting up the on-board LEDs and switches
25574069 0:d4d7e882c87d 66
jackmcgarley 4:143487eef742 67 void init_leds(); //Setting up the LEDs
jackmcgarley 5:bec67fb2b2f9 68
jackmcgarley 8:811fe7529732 69 void welcome();
jackmcgarley 8:811fe7529732 70
jackmcgarley 5:bec67fb2b2f9 71 void startup();
jackmcgarley 5:bec67fb2b2f9 72
jackmcgarley 8:811fe7529732 73
jackmcgarley 4:143487eef742 74 int main()
jackmcgarley 4:143487eef742 75 {
jackmcgarley 7:51c21f7f6f12 76 button_start.mode(PullDown);
jackmcgarley 7:51c21f7f6f12 77 button_start.rise(button_start_isr);
jackmcgarley 7:51c21f7f6f12 78 button_back.mode(PullDown);
jackmcgarley 7:51c21f7f6f12 79 button_back.rise(button_back_isr);
jackmcgarley 7:51c21f7f6f12 80
jackmcgarley 5:bec67fb2b2f9 81 init_K64F(); // Initialising the board, serial port, LED'S and joystick
jackmcgarley 7:51c21f7f6f12 82 init_serial();
jackmcgarley 5:bec67fb2b2f9 83 init_leds();
jackmcgarley 7:51c21f7f6f12 84 joystick.init();
jackmcgarley 7:51c21f7f6f12 85
jackmcgarley 5:bec67fb2b2f9 86 tmp102.init(); // call the sensor init method using dot syntax
jackmcgarley 7:51c21f7f6f12 87
jackmcgarley 5:bec67fb2b2f9 88 lcd.init(); // initialise display
jackmcgarley 7:51c21f7f6f12 89
jackmcgarley 5:bec67fb2b2f9 90 lcd.setContrast(0.5); // Sets contrast to 0.5
jackmcgarley 8:811fe7529732 91 welcome();
jackmcgarley 7:51c21f7f6f12 92 startup(); // USE VOID NOW
jackmcgarley 7:51c21f7f6f12 93
jackmcgarley 5:bec67fb2b2f9 94 while (1) {
jackmcgarley 7:51c21f7f6f12 95
jackmcgarley 5:bec67fb2b2f9 96 // these are settings that I have adjusted
jackmcgarley 7:51c21f7f6f12 97 lcd.normalMode(); // normal colour mode
jackmcgarley 5:bec67fb2b2f9 98 lcd.setBrightness(0.75); // put LED backlight on 75%
jackmcgarley 7:51c21f7f6f12 99
jackmcgarley 5:bec67fb2b2f9 100 float T = tmp102.get_temperature(); // read temperature and print over serial port
jackmcgarley 5:bec67fb2b2f9 101 pc.printf("T = %.1f K\n",T);
jackmcgarley 7:51c21f7f6f12 102
jackmcgarley 5:bec67fb2b2f9 103 if (T > 37.2f) {
jackmcgarley 5:bec67fb2b2f9 104 red_led1.write(0); // LED 1 will flash when you're in High Temp
jackmcgarley 5:bec67fb2b2f9 105 pc.printf("High Temperature \n"); // Printing to the LCD
jackmcgarley 5:bec67fb2b2f9 106 }
jackmcgarley 7:51c21f7f6f12 107
jackmcgarley 5:bec67fb2b2f9 108 else if (T < 36.1f) {
jackmcgarley 5:bec67fb2b2f9 109 red_led2.write(0); // LED 2 will flash when you're in Low Temp
jackmcgarley 5:bec67fb2b2f9 110 printf("Low Temperature \n"); // Printing to the LCD
jackmcgarley 7:51c21f7f6f12 111 }
jackmcgarley 5:bec67fb2b2f9 112 else if (T > 38) {
jackmcgarley 5:bec67fb2b2f9 113 red_led3.write(0); // LED 3 will flash when you're beyond high temperature
jackmcgarley 5:bec67fb2b2f9 114 printf("Call Your GP \n"); // Printing to the LCD
jackmcgarley 5:bec67fb2b2f9 115 }
jackmcgarley 4:143487eef742 116 }
jackmcgarley 7:51c21f7f6f12 117 }
jackmcgarley 4:143487eef742 118 void init_serial() {
jackmcgarley 7:51c21f7f6f12 119 pc.baud(9600); // set to highest baud - ensure terminal software matches
25574069 0:d4d7e882c87d 120 }
jackmcgarley 7:51c21f7f6f12 121
jackmcgarley 7:51c21f7f6f12 122 void init_K64F()
25574069 0:d4d7e882c87d 123 {
jackmcgarley 7:51c21f7f6f12 124 r_led = 1; // on-board LEDs are active-low, so set pin high to turn them off.
jackmcgarley 7:51c21f7f6f12 125 g_led = 1;
jackmcgarley 7:51c21f7f6f12 126 b_led = 1;
jackmcgarley 7:51c21f7f6f12 127
jackmcgarley 7:51c21f7f6f12 128 // since the on-board switches have external pull-ups, we should disable the internal pull-down
jackmcgarley 7:51c21f7f6f12 129 // resistors that are enabled by default using InterruptIn
jackmcgarley 7:51c21f7f6f12 130 sw2.mode(PullNone);
jackmcgarley 7:51c21f7f6f12 131 sw3.mode(PullNone);
jackmcgarley 7:51c21f7f6f12 132
25574069 0:d4d7e882c87d 133 }
jackmcgarley 4:143487eef742 134 void init_leds()
jackmcgarley 4:143487eef742 135 {
jackmcgarley 7:51c21f7f6f12 136 red_led1.write(1); // LEDs are common anode (active-low) so writing a 1 will turn them off
jackmcgarley 7:51c21f7f6f12 137 red_led2.write(1);
jackmcgarley 7:51c21f7f6f12 138 red_led3.write(1);
jackmcgarley 7:51c21f7f6f12 139 grn_led1.write(1);
jackmcgarley 7:51c21f7f6f12 140 grn_led2.write(1);
jackmcgarley 7:51c21f7f6f12 141 grn_led3.write(0); // LED on to show the board is on
jackmcgarley 5:bec67fb2b2f9 142 }
jackmcgarley 5:bec67fb2b2f9 143 void lcd_sett()
jackmcgarley 5:bec67fb2b2f9 144 {
jackmcgarley 7:51c21f7f6f12 145 //LCD SET
jackmcgarley 7:51c21f7f6f12 146 }
jackmcgarley 7:51c21f7f6f12 147 void startup() // VOID FUNCTION SETUP
jackmcgarley 7:51c21f7f6f12 148 {
jackmcgarley 7:51c21f7f6f12 149 S_flag = 0;
jackmcgarley 10:f894ac48a342 150 int select = 1;
jackmcgarley 7:51c21f7f6f12 151
jackmcgarley 7:51c21f7f6f12 152 while (1) {
jackmcgarley 7:51c21f7f6f12 153 char d = joystick.get_direction();
jackmcgarley 7:51c21f7f6f12 154
jackmcgarley 7:51c21f7f6f12 155 switch(select) {
jackmcgarley 10:f894ac48a342 156 case 1:
jackmcgarley 10:f894ac48a342 157 switch(d) {
jackmcgarley 10:f894ac48a342 158 case N:
jackmcgarley 10:f894ac48a342 159 select = 4;
jackmcgarley 10:f894ac48a342 160 wait(0.3);
jackmcgarley 10:f894ac48a342 161 // printf("UP");
jackmcgarley 10:f894ac48a342 162 break;
jackmcgarley 10:f894ac48a342 163 case S:
jackmcgarley 10:f894ac48a342 164 select = 2;
jackmcgarley 10:f894ac48a342 165 wait(0.3);
jackmcgarley 10:f894ac48a342 166 // printf("Down");
jackmcgarley 10:f894ac48a342 167 break;
jackmcgarley 10:f894ac48a342 168 }
jackmcgarley 10:f894ac48a342 169 break;
jackmcgarley 10:f894ac48a342 170
jackmcgarley 10:f894ac48a342 171 case 2:
jackmcgarley 10:f894ac48a342 172 switch(d) {
jackmcgarley 10:f894ac48a342 173 case N:
jackmcgarley 10:f894ac48a342 174 select = 1;
jackmcgarley 10:f894ac48a342 175 wait(0.3);
jackmcgarley 10:f894ac48a342 176 // printf("UP");
jackmcgarley 10:f894ac48a342 177 break;
jackmcgarley 10:f894ac48a342 178 case S:
jackmcgarley 10:f894ac48a342 179 select = 3;
jackmcgarley 10:f894ac48a342 180 wait(0.3);
jackmcgarley 10:f894ac48a342 181 // printf("Down");
jackmcgarley 10:f894ac48a342 182 break;
jackmcgarley 10:f894ac48a342 183 }
jackmcgarley 7:51c21f7f6f12 184 break;
jackmcgarley 7:51c21f7f6f12 185
jackmcgarley 10:f894ac48a342 186 case 3:
jackmcgarley 10:f894ac48a342 187 switch(d) {
jackmcgarley 10:f894ac48a342 188 case N:
jackmcgarley 10:f894ac48a342 189 select = 2;
jackmcgarley 10:f894ac48a342 190 wait(0.3);
jackmcgarley 10:f894ac48a342 191 // printf("UP");
jackmcgarley 10:f894ac48a342 192 break;
jackmcgarley 10:f894ac48a342 193 case S:
jackmcgarley 10:f894ac48a342 194 select = 4;
jackmcgarley 10:f894ac48a342 195 wait(0.3);
jackmcgarley 10:f894ac48a342 196 // printf("Down");
jackmcgarley 7:51c21f7f6f12 197 break;
jackmcgarley 7:51c21f7f6f12 198 }
jackmcgarley 10:f894ac48a342 199 break;
jackmcgarley 7:51c21f7f6f12 200
jackmcgarley 10:f894ac48a342 201 case 4:
jackmcgarley 10:f894ac48a342 202 switch(d) {
jackmcgarley 10:f894ac48a342 203 case N:
jackmcgarley 10:f894ac48a342 204 select = 3;
jackmcgarley 10:f894ac48a342 205 wait(0.3);
jackmcgarley 10:f894ac48a342 206 // printf("UP");
jackmcgarley 10:f894ac48a342 207 break;
jackmcgarley 10:f894ac48a342 208 case S:
jackmcgarley 10:f894ac48a342 209 select = 1;
jackmcgarley 10:f894ac48a342 210 wait(0.3);
jackmcgarley 10:f894ac48a342 211 // printf("Down");
jackmcgarley 10:f894ac48a342 212 break;
jackmcgarley 10:f894ac48a342 213 }
jackmcgarley 10:f894ac48a342 214 break;
jackmcgarley 10:f894ac48a342 215 }
jackmcgarley 10:f894ac48a342 216 wait(0.3);
jackmcgarley 10:f894ac48a342 217 // Menu
jackmcgarley 10:f894ac48a342 218 if (select == 1){
jackmcgarley 7:51c21f7f6f12 219 lcd.clear();
jackmcgarley 7:51c21f7f6f12 220 lcd.printString(" >Collection ", 0, 0);
jackmcgarley 7:51c21f7f6f12 221 lcd.printString(" View Data ", 0, 1);
jackmcgarley 7:51c21f7f6f12 222 lcd.printString(" Live Data ", 0, 2);
jackmcgarley 7:51c21f7f6f12 223 lcd.printString(" About ", 0, 3);
jackmcgarley 7:51c21f7f6f12 224 lcd.refresh();
jackmcgarley 7:51c21f7f6f12 225 wait(0.3);}
jackmcgarley 7:51c21f7f6f12 226
jackmcgarley 7:51c21f7f6f12 227
jackmcgarley 10:f894ac48a342 228 else if (select == 2) {
jackmcgarley 10:f894ac48a342 229 lcd.printString(" Collection ", 0, 0);// Menu Selection
jackmcgarley 7:51c21f7f6f12 230 lcd.printString(" >View Data ", 0, 1);
jackmcgarley 10:f894ac48a342 231 lcd.refresh();
jackmcgarley 10:f894ac48a342 232 wait(0.3);}
jackmcgarley 7:51c21f7f6f12 233
jackmcgarley 10:f894ac48a342 234 else if (select == 3) {
jackmcgarley 10:f894ac48a342 235 lcd.printString(" Collection ", 0, 0);// Menu Selection
jackmcgarley 10:f894ac48a342 236 lcd.printString(" View Data ", 0, 1);
jackmcgarley 10:f894ac48a342 237 lcd.printString(" >Live Data ", 0, 2);
jackmcgarley 7:51c21f7f6f12 238 lcd.refresh();
jackmcgarley 10:f894ac48a342 239 wait(0.3);}
jackmcgarley 10:f894ac48a342 240
jackmcgarley 10:f894ac48a342 241 else if (select == 4){
jackmcgarley 10:f894ac48a342 242 lcd.clear();
jackmcgarley 10:f894ac48a342 243 lcd.printString(" Collection ", 0, 0);// Menu Selection
jackmcgarley 10:f894ac48a342 244 lcd.printString(" View Data ", 0, 1);
jackmcgarley 10:f894ac48a342 245 lcd.printString(" Live Data ", 0, 2);
jackmcgarley 10:f894ac48a342 246 lcd.printString(" >About ", 0, 3);
jackmcgarley 10:f894ac48a342 247 lcd.refresh();
jackmcgarley 10:f894ac48a342 248 wait(0.3);}
jackmcgarley 7:51c21f7f6f12 249 }
jackmcgarley 7:51c21f7f6f12 250 }
jackmcgarley 7:51c21f7f6f12 251
jackmcgarley 10:f894ac48a342 252
jackmcgarley 7:51c21f7f6f12 253 void welcome()
jackmcgarley 7:51c21f7f6f12 254 {
jackmcgarley 10:f894ac48a342 255 // Welcome Screen 1
jackmcgarley 5:bec67fb2b2f9 256 lcd.clear();
jackmcgarley 5:bec67fb2b2f9 257 lcd.printString(" Jack McGarley ", 0, 0);
jackmcgarley 7:51c21f7f6f12 258 lcd.printString(" 18689007 ", 0, 1);
jackmcgarley 6:e6e7b99198fd 259 lcd.printString(" Schneider ", 0, 2);
jackmcgarley 6:e6e7b99198fd 260 lcd.printString(" Lincoln Uni ", 0, 3);
jackmcgarley 10:f894ac48a342 261 lcd.printString(" February 2022 ", 0, 4);
jackmcgarley 5:bec67fb2b2f9 262 lcd.refresh();
jackmcgarley 6:e6e7b99198fd 263 wait(3);
jackmcgarley 6:e6e7b99198fd 264 // Welcome Screen 2
jackmcgarley 6:e6e7b99198fd 265 lcd.clear();
jackmcgarley 6:e6e7b99198fd 266 lcd.printString(" Temperature ", 0, 0);
jackmcgarley 6:e6e7b99198fd 267 lcd.printString(" Based ", 0, 1);
jackmcgarley 6:e6e7b99198fd 268 lcd.printString(" Smart Device ", 0, 2);
jackmcgarley 6:e6e7b99198fd 269 lcd.printString(" Health ", 0, 3);
jackmcgarley 6:e6e7b99198fd 270 lcd.printString(" Monitoring ", 0, 4);
jackmcgarley 6:e6e7b99198fd 271 lcd.refresh();
jackmcgarley 6:e6e7b99198fd 272 wait(3);
jackmcgarley 7:51c21f7f6f12 273 }
jackmcgarley 7:51c21f7f6f12 274 void button_start_isr()
jackmcgarley 7:51c21f7f6f12 275 {
jackmcgarley 7:51c21f7f6f12 276 S_flag = 1;
jackmcgarley 7:51c21f7f6f12 277 }
jackmcgarley 7:51c21f7f6f12 278
jackmcgarley 7:51c21f7f6f12 279 void button_back_isr()
jackmcgarley 7:51c21f7f6f12 280 {
jackmcgarley 7:51c21f7f6f12 281 B_flag = 1;
jackmcgarley 4:143487eef742 282 }