![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Working Menu, additions to be made
Dependencies: mbed
main.cpp
- Committer:
- jackmcgarley
- Date:
- 2022-02-04
- Revision:
- 11:f1a6cced30cf
- Parent:
- 10:f894ac48a342
- Child:
- 12:988bacb1c2a6
File content as of revision 11:f1a6cced30cf:
/* * Author - Jack McGarley - 18689007 * Date - January 2022 * Acknowledgements * Craig A. Evans, University of Leeds, TMP102 Library, Feb 2016 * Dr Edmond Nurellari, University of Lincoln, Joystick & N5110 Libraries */ #include "mbed.h" // include the library header, ensure the library has been imported into the project #include "Joystick.h" #include "TMP102.h" #include "N5110.h" DigitalOut grn_led1(PTA1); // Designating LEDs from left to right DigitalOut grn_led2(PTA2); DigitalOut grn_led3(PTC2); DigitalOut red_led1(PTC3); DigitalOut red_led2(PTC4); DigitalOut red_led3(PTD3); DigitalIn button_A(PTB9); // Designating Buttons DigitalIn button_B(PTD0); DigitalIn button_X(PTC17); DigitalIn button_Y(PTC12); DigitalIn button_L(PTB18); DigitalIn button_R(PTB3); InterruptIn button_back(PTB19); InterruptIn button_start(PTC5); TMP102 tmp102(I2C_SDA,I2C_SCL); // Create TMP102 object N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); //Designating N5110 Display Joystick joystick(PTB10,PTB11,PTC16); //Designating Joystick Serial pc(USBTX,USBRX); // UART connection for PC InterruptIn sw2(SW2); // K64F on-board switches InterruptIn sw3(SW3); InterruptIn buttonStart(PTC5); InterruptIn buttonBack(PTB19); DigitalOut r_led(LED_RED); // K64F on-board LEDs DigitalOut g_led(LED_GREEN); DigitalOut b_led(LED_BLUE); /** Declare voids before using in the code */ void buttonStart_isr(); // Button Start interrupt service routine void buttonBack_isr(); // Button Back interrupt service routine void button_start_isr(); void button_back_isr(); volatile int S_flag, B_flag; volatile int g_buttonStart_flag = 0; volatile int g_buttonBack_flag = 0; void error(); // error function hangs flashing an LED void init_serial(); // Setting up the serial port void init_K64F(); // Setting up the on-board LEDs and switches void init_leds(); //Setting up the LEDs void welcome(); void startup(); int main() { button_start.mode(PullDown); button_start.rise(button_start_isr); button_back.mode(PullDown); button_back.rise(button_back_isr); init_K64F(); // Initialising the board, serial port, LED'S and joystick init_serial(); init_leds(); joystick.init(); tmp102.init(); // call the sensor init method using dot syntax lcd.init(); // initialise display lcd.setContrast(0.5); // Sets contrast to 0.5 welcome(); startup(); // USE VOID NOW while (1) { // these are settings that I have adjusted lcd.normalMode(); // normal colour mode lcd.setBrightness(0.75); // put LED backlight on 75% float T = tmp102.get_temperature(); // read temperature and print over serial port pc.printf("T = %.1f K\n",T); if (T > 37.2f) { red_led1.write(0); // LED 1 will flash when you're in High Temp pc.printf("High Temperature \n"); // Printing to the LCD } else if (T < 36.1f) { red_led2.write(0); // LED 2 will flash when you're in Low Temp printf("Low Temperature \n"); // Printing to the LCD } else if (T > 38) { red_led3.write(0); // LED 3 will flash when you're beyond high temperature printf("Call Your GP \n"); // Printing to the LCD } } } void init_serial() { pc.baud(9600); // set to highest baud - ensure terminal software matches } void init_K64F() { r_led = 1; // on-board LEDs are active-low, so set pin high to turn them off. g_led = 1; b_led = 1; // since the on-board switches have external pull-ups, we should disable the internal pull-down // resistors that are enabled by default using InterruptIn sw2.mode(PullNone); sw3.mode(PullNone); } void init_leds() { red_led1.write(1); // LEDs are common anode (active-low) so writing a 1 will turn them off red_led2.write(1); red_led3.write(1); grn_led1.write(1); grn_led2.write(1); grn_led3.write(0); // LED on to show the board is on } void lcd_sett()//LCD Set { } void startup() // Void function setup { S_flag = 0; int select = 1; /**Menu starting here, using the joystick for navigating the menu. */ while (1) { char d = joystick.get_direction(); // Allowing the joystick to navigate the menu switch(select) { // Main switch case 1: //Internal case 1 switch switch(d) { case N: select = 4; wait(0.3); // printf("UP"); break; // Break from internal switch case S: select = 2; wait(0.3); // printf("Down"); break; // Break from internal switch } break; // Break from main switch case 2: //Internal case 2 switch switch(d) { case N: select = 1; wait(0.3); // printf("UP"); break; // Break from internal switch case S: select = 3; wait(0.3); // printf("Down"); break; // Break from internal switch } break; // Break from main switch case 3: //Internal case 3 switch switch(d) { case N: select = 2; wait(0.3); // printf("UP"); break; // Break from internal switch case S: select = 4; wait(0.3); // printf("Down"); break; // Break from internal switch } break; // Break from main switch case 4: //Internal case 4 switch switch(d) { case N: select = 3; wait(0.3); // printf("UP"); break; // Break from internal switch case S: select = 1; wait(0.3); // printf("Down"); break; // Break from internal switch } break; // Break from main switch } wait(0.3); /** Menu selection screen printed to LCD */ if (select == 1){ lcd.clear(); lcd.printString(" >Collection ", 0, 0); // Menu Selection, printing to LCD lcd.printString(" View Data ", 0, 1); lcd.printString(" Live Data ", 0, 2); lcd.printString(" About ", 0, 3); lcd.refresh(); wait(0.3);} else if (select == 2) { lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD lcd.printString(" >View Data ", 0, 1); lcd.refresh(); wait(0.3);} else if (select == 3) { lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD lcd.printString(" View Data ", 0, 1); lcd.printString(" >Live Data ", 0, 2); lcd.refresh(); wait(0.3);} else if (select == 4){ lcd.clear(); lcd.printString(" Collection ", 0, 0);// Menu Selection, Printing to LCD lcd.printString(" View Data ", 0, 1); lcd.printString(" Live Data ", 0, 2); lcd.printString(" >About ", 0, 3); lcd.refresh(); wait(0.3);} } } void welcome() { lcd.clear(); lcd.printString(" Jack McGarley ", 0, 0); // Welcome Screen 1, Printing to LCD lcd.printString(" 18689007 ", 0, 1); lcd.printString(" Schneider ", 0, 2); lcd.printString(" Lincoln Uni ", 0, 3); lcd.printString(" February 2022 ", 0, 4); lcd.refresh(); wait(3); lcd.clear(); lcd.printString(" Temperature ", 0, 0);// Welcome Screen 2, Printing to LCD lcd.printString(" Based ", 0, 1); lcd.printString(" Smart Device ", 0, 2); lcd.printString(" Health ", 0, 3); lcd.printString(" Monitoring ", 0, 4); lcd.refresh(); wait(3); } void button_start_isr() { S_flag = 1; } void button_back_isr() { B_flag = 1; }