Rev 1.6 - Sample Period Work in progress

Dependencies:   mbed Bitmap N5110 TMP102 Joystick

Revision:
13:70f02d5e56f5
Parent:
12:1c821d6d50f9
Child:
14:fa5f83f26ed7
diff -r 1c821d6d50f9 -r 70f02d5e56f5 main.cpp
--- a/main.cpp	Sat Jan 15 19:39:12 2022 +0000
+++ b/main.cpp	Sun Jan 16 15:29:11 2022 +0000
@@ -29,6 +29,7 @@
 Joystick Joystick(PTB10,PTB11,PTC16);          // Create Joystick (PTB10 = Up/Down) (PTB11 = L/R) (PTB16 = Button)
 
 //Timer timer();                                 // USE FOR LOGGING BETWEEN 0-10s
+Ticker joystickDelay;
 
 DigitalOut RED_led(LED_RED);                   // On-board K64F LED'S
 DigitalOut GRN_led(LED_GREEN);
@@ -38,18 +39,26 @@
 InterruptIn sw3(SW3);
 InterruptIn R(PTB3);                         // Right Bumper Button
 InterruptIn L(PTB18);                        // Left Bumper Button
+InterruptIn A(PTB9);                         // Right Bumper Button
+InterruptIn Y(PTC12);                        // Left Bumper Button
 
 volatile int g_R_flag = 0;                    // g_ in order to show it is a global variable. 
 volatile int g_L_flag = 0;                    // volatile flag as it will change within the isr
-
+volatile int g_A_flag = 0;                    // g_ in order to show it is a global variable. 
+volatile int g_Y_flag = 0; 
 /*======================= Void Declaration ===================================*/
 void error();                                  // Error Hang Code Function
 void init_serial();                            // Setup serial port Function
 void init_K64F();                              // K64F Disabling Onboard Components Function
 void R_isr();
 void L_isr();
+void A_isr();
+void Y_isr();
 void info();
 void temp_SP();
+void Menu();
+void Page1();
+void Page2();
 
 /*======================== Main Function =====================================*/
 int main()
@@ -60,7 +69,9 @@
     tmp102.init();                              // Initialise Temp Sensor
     lcd.init();                                 // Initialise LCD
     Joystick.init();
-        
+    
+    
+       
     lcd.setContrast(0.4);                       // Setup the contrast for the LCD Screen
     R.fall(&R_isr);
     R.mode(PullDown);
@@ -68,29 +79,28 @@
     L.fall(&L_isr);
     L.mode(PullDown);
     
+    A.fall(&A_isr);
+    A.mode(PullDown);
+    
+    Y.fall(&Y_isr);
+    Y.mode(PullDown);
+    
     while (1) {        
         //timer.start(); 
         //for(i = 0; i < 10; i++){
         // read temperature and print over serial port
-                                                                       
-        if (g_R_flag){                               // Condition to change over into new loop
-            g_R_flag = 0;                                   // When the R Flag has been pressed
-            R.rise(&R_isr);       
-            info();                                         // Call the info function           
-        }
-        lcd.refresh();                                  
-        wait(1.0); 
-
-        if (g_L_flag){                                  // Condition to change over into new loop
-            g_L_flag = 0;       
-            L.fall(&L_isr);
-            temp_SP();
-        lcd.refresh();                                  
-        wait(1.0);
+        
+        
+        Menu();                                         // Call the info function                                              
+        Page1();
+        Page2();
+        temp_SP();
+        
                                                                 
     }
+
 }
-}
+
 
 /*
 =========================== Void Setup =========================================
@@ -125,51 +135,84 @@
 {
     g_L_flag = 1;                       // set flag in ISR
 }
+void A_isr()                            // Left Bumper Interrupt Service     
+{
+    g_A_flag = 1;                       // set flag in ISR
+}
+void Y_isr()                            // Left Bumper Interrupt Service     
+{
+    g_Y_flag = 1;                       // set flag in ISR
+}
 void info()
 {
+        if (g_R_flag){                               // Condition to change over into new loop
+            g_R_flag = 0;                                   // When the R Flag has been pressed
+            R.rise(&R_isr);
         serial.printf(" Information Page Selected ");  // Debugging Print
         lcd.clear();                                   // Clear Screen
         lcd.printString("Info Page",0,0);              // Print Information Screen
         lcd.printString("Author:",0,1);
         lcd.printString("Louis M",0,2);
         lcd.printString("18689006",0,3);
-        lcd.printString("Version 1.9",0,4);   
-    
+        lcd.printString("Version 1.9.1",0,4);   
+    }
 } 
 void Page1()
 {
+                if (g_Y_flag){                                  // Condition to change over into new loop
+                g_Y_flag = 0;       
+                Y.fall(&Y_isr);{
+               
         serial.printf(" Page 1 ");  // Debugging Print
         lcd.clear();                                   // Clear Screen
         lcd.printString("    Page 1    ",0,0);              // Print Information Screen
         lcd.printString("Temperature",0,1);
         lcd.printString("Logging",0,2);
-        lcd.printString("Press A",0,3);
-        lcd.printString("Page Down",0,5);   
-    
+        lcd.printString("Press L",0,3);
+        lcd.printString("Page Down A",0,5);   
+        lcd.refresh();
+                wait(1);
+    }
+}
 }
 void Page2()
 {
+     if (g_A_flag){                               // Condition to change over into new loop
+        g_A_flag = 0;                                   // When the R Flag has been pressed
+        A.rise(&A_isr);
+        
+        
         serial.printf(" Page 2 ");  // Debugging Print
         lcd.clear();                                   // Clear Screen
         lcd.printString("    Page 2    ",0,1);              // Print Information Screen
         lcd.printString("Blood Pressure",0,2);
         lcd.printString("Logging",0,3);
         lcd.printString("Press A",0,5);
-        lcd.printString("Page Up",0,0);   
+        lcd.printString("Page Up Y",0,0);   
+        lcd.refresh();
+                wait(1);}
     
 }  
 void temp_SP()
 {
+        
         float T = tmp102.get_temperature();             // Reading Temperature as a floating variable
         float Set = SP * 100;                           // Reading Potentiometer as a floating variable. Multiplied by 100 to give larger range        
         
         //serial.printf("%2.2fs: %3.1f deg C\n\r", timer.read(), T);
-        
+        if (g_L_flag){                                  // Condition to change over into new loop
+            g_L_flag = 0;       
+            L.fall(&L_isr);
         //if (T > Set){
         lcd.clear();                                    // clearing the LCD buffer at the begining of the loop        
         lcd.printString("Temperature",0,0);             // Can also pre-determine the co-ordinates of the ',0,0' (must be less than 84 pixels to fit on display)            
         char buffer[14];                                // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14 Max amound of Characters)
-                                                        // Therefor strings csn not exceed the 14 Character Limit
+        Direction d = Joystick.get_direction();
+        float B = 0;
+        if (1){
+        float BP = B + 1;
+            serial.printf("BP = i%",BP);
+            }                                                // Therefor strings csn not exceed the 14 Character Limit
                                                                   
         int length = sprintf(buffer,"T=%.2F 'C",T);     // print the temperature from the float variable T
         if (length <= 14)                               // Ensuring string will fit on the screen (Printing at x=0)                                                                  
@@ -180,51 +223,56 @@
         if (length <= 14)                               // Ensuring string will fit on the screen (Printing at x=0)
           lcd.printString(buffer,0,2);                  // display on screen
         serial.printf("   SP = %f",  Set);              // 
-        
+        lcd.refresh();
+                wait(1);
         if (Set < T){                                // Condition to change over into new loop
             lcd.clear();                                    // clearing the LCD buffer at the begining of the loop
             lcd.printString("Over Heating",3,2);            // Print New Message
             serial.printf("OverTemp");                      // Debugging Print   
+        lcd.refresh();
+                wait(1);
+        }
         }
 }    
-void init_Menu()
-{
-    Joystick.init();
+/*void Menu()
+{    
+    while (1){
+    
     Direction d = Joystick.get_direction();
-    serial.printf("Direction = %i/n ",d);
-
+    //serial.printf("Direction = %i ",d);
+    joystickDelay.attach(d,0.10);
     int select = 0;
-    while (1) {
+    //while (1) {
         switch(select) {
             case 0:
                 switch(d) {
-                    case N:
+                    case 1:
                         select = 1;
                         serial.printf("UP");
                         break;
-                    case S:
+                    case 5:
                         select = 2;
                         serial.printf("DOWN");
                         break;
                 }
-                break;
+                //break;
             case 1:
                 switch(d) {
-                    case N:
+                    case 1:
                         select = 2;
                         serial.printf("UP");
                         break;
-                    case S:
+                    case 5:
                         select = 0;
                         serial.printf("DOWN");
                         break;
             case 2:
                 switch(d) {
-                    case N:
+                    case 1:
                         select = 0;
                         serial.printf("UP");
                         break;
-                    case S:
+                    case 5:
                         select = 1;
                         serial.printf("DOWN");
                         break;
@@ -238,26 +286,55 @@
                 lcd.printString("Main Menu",0,3);
                 lcd.printString("Page Down",0,5);    
                 }
-                if (g_R_flag){                               // Condition to change over into new loop
-                g_R_flag = 0;                                   // When the R Flag has been pressed
-                R.rise(&R_isr);
-                serial.printf("R Pressed");
+                if (g_A_flag){                               // Condition to change over into new loop
+                g_A_flag = 0;                                   // When the R Flag has been pressed
+                A.rise(&A_isr);
+                serial.printf("A Pressed");
                 }
             else if (select == 1){
                 serial.printf("Page1");
                 Page1();
+                if (g_A_flag){                               // Condition to change over into new loop
+                g_A_flag = 0;                                   // When the R Flag has been pressed
+                A.rise(&A_isr);
+                serial.printf("A Pressed");
                 }
-                if (g_R_flag){                               // Condition to change over into new loop
-                g_R_flag = 0;                                   // When the R Flag has been pressed
-                R.rise(&R_isr);
-                serial.printf("R Pressed");
-                }
+                
             else if (select == 2){
                 serial.printf("Page2");
                 Page2();
+                if (g_A_flag){                               // Condition to change over into new loop
+                g_A_flag = 0;                                   // When the R Flag has been pressed
+                A.rise(&A_isr);
+                serial.printf("A Pressed");
                 }
         
 }
 }
 }
-}
\ No newline at end of file
+}
+*/
+void Menu()
+{               
+            if (g_R_flag){                               // Condition to change over into new loop
+            g_R_flag = 0;                                   // When the R Flag has been pressed
+            R.rise(&R_isr);
+                
+                lcd.clear();                                   // Clear Screen
+                serial.printf("Welcome");
+                lcd.printString("   Welcome   ",0,1);              // Print Information Screen
+                lcd.printString("Main Menu",0,3);
+                lcd.printString("Page Down",0,5);    
+                lcd.refresh();
+                wait(1);
+}
+}
+/*void BP()
+{
+    Direction d = Joystick.get_direction();
+    float BP = 0;
+    if (d = 1){
+        BP + 1;
+        serial.printf("BP = i%",BP);
+            }
+  */  
\ No newline at end of file