![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Working Menu, additions to be made
Dependencies: mbed
main.cpp@15:61d9a4e63b99, 23 months ago (annotated)
- 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?
User | Revision | Line number | New 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 | } |