![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Working Menu, additions to be made
Dependencies: mbed
Diff: main.cpp
- Revision:
- 7:51c21f7f6f12
- Parent:
- 6:e6e7b99198fd
- Child:
- 8:811fe7529732
--- a/main.cpp Fri Jan 28 14:25:34 2022 +0000 +++ b/main.cpp Fri Jan 28 16:34:08 2022 +0000 @@ -1,13 +1,13 @@ -/* +/* * Author - Jack McGarley - 18689007 * Date - January 2022 -* Acknowledgements +* 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 "Joystick.h" #include "TMP102.h" #include "N5110.h" @@ -17,7 +17,6 @@ DigitalOut red_led1(PTC3); DigitalOut red_led2(PTC4); DigitalOut red_led3(PTD3); - DigitalIn button_A(PTB9); // Designating Buttons DigitalIn button_B(PTD0); @@ -25,27 +24,40 @@ DigitalIn button_Y(PTC12); DigitalIn button_L(PTB18); DigitalIn button_R(PTB3); -DigitalIn button_back(PTB19); -DigitalIn button_start(PTC5); - +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 +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); - -DigitalOut r_led(LED_RED); // K64F on-board LEDs +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 BEING USED IN 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 @@ -58,82 +70,142 @@ 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_serial(); init_leds(); -joystick.init(); - +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 - + +startup(); // USE VOID NOW + while (1) { - + // these are settings that I have adjusted -lcd.normalMode(); // normal colour mode +lcd.normalMode(); // normal colour mode lcd.setBrightness(0.75); // put LED backlight on 75% - -startup(); // USE VOID NOW - + 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 +pc.baud(9600); // set to highest baud - ensure terminal software matches } - -void init_K64F() + +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); - +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 +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 -{ -// Welcome Screen 1 +//LCD SET +} +void startup() // VOID FUNCTION SETUP +{ +S_flag = 0; +int select = 0; + +while (1) { +char d = joystick.get_direction(); + +switch(select) { + case 0: + switch(d) { + case N: + select = 1; + // printf("UP"); + break; + case S: + select = 1; + // printf("Down"); + break; + } +break; + + case 1: + switch(d) { + case N: + select = 0; + // printf("UP"); + break; + case S: + select = 0; + // printf("Down"); + break; + } +break; +} +// Menu + +if (select == 0){ +lcd.clear(); +lcd.printString(" >Collection ", 0, 0); +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 == 1) { +// Menu Selection +lcd.printString(" Collection ", 0, 0); +lcd.printString(" >View Data ", 0, 1); + +lcd.refresh(); +wait(0.3); +} +} +} + +void welcome() +{ + // Welcome Screen 1 lcd.clear(); lcd.printString(" Jack McGarley ", 0, 0); -lcd.printString(" 1868007 ", 0, 1); +lcd.printString(" 18689007 ", 0, 1); lcd.printString(" Schneider ", 0, 2); lcd.printString(" Lincoln Uni ", 0, 3); lcd.printString(" January 2022 ", 0, 4); @@ -148,5 +220,13 @@ lcd.printString(" Monitoring ", 0, 4); lcd.refresh(); wait(3); -char d = joystick.get_direction(); +} +void button_start_isr() +{ +S_flag = 1; +} + +void button_back_isr() +{ +B_flag = 1; } \ No newline at end of file