Working Menu, additions to be made

Dependencies:   mbed

Revision:
7:51c21f7f6f12
Parent:
6:e6e7b99198fd
Child:
8:811fe7529732
diff -r e6e7b99198fd -r 51c21f7f6f12 main.cpp
--- 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