Testing 1 blue pill

Dependencies:   mbed mbed-rtos TextLCD

Revision:
14:63998be3d43c
Parent:
13:c681f340909b
Child:
15:7cf5595ed1b1
diff -r c681f340909b -r 63998be3d43c main.cpp
--- a/main.cpp	Mon Feb 11 14:18:58 2019 +0000
+++ b/main.cpp	Mon Feb 11 16:58:07 2019 +0000
@@ -1,27 +1,31 @@
+#include "mbed.h"
 #include "SETUP.hpp"
 //Thread Functions
+DigitalOut led(LED1);
+
+void up_signal(){up_thread.signal_set(1);}      //Sets the up thread to operate
+void down_signal(){down_thread.signal_set(1);}    //Sets the down thread to operate
+void start_signal(){start_stop_thread.signal_set(1);}   //Sets the start thread to operate
+void function_signal(){function_thread.signal_set(1);}//Sets the function thread to operate
+void select_signal(){select_thread.signal_set(1);}  //Sets the select thread to operate
+
 void LCD_thread(){
     while(1){
-        //lcd.printf("Test\n");
         lcd.cls();
-        if(Function == 0){
+        if(Function == 0){//Turn
+            lcd.printf("Mode: Turn\n");
+            lcd.printf("Done: %d ToDo: %d\n",turns_done,turns_todo);
+        }else if(Function == 1){//Anneal
             lcd.printf("Mode: Anneal\n");
             lcd.printf("Loop:%d Wait:%d\n",Loop,Wait_Time);
-        }else if(Function == 1){
+      
+        }else if(Function == 2){//Test
             lcd.printf("Mode: Test\n");
             lcd.printf("Duty: %d Time: %d\n",Duty_Cycle,Power_Time);
-        }else if(Function == 2){
-        
-            lcd.printf("Mode: Turn\n");
-            lcd.printf("Done: %d ToDo: %d\n",turns_done,turns_todo);
+
         }
-        Thread::wait(5000);
+        Thread::wait(250);
         lcd.cls();
-        Function = Function +1;
-        if(Function >2)
-        {
-            Function = 0;   
-        }   
     } 
 }
 void LED_thread(){
@@ -31,80 +35,132 @@
     }
 }
 //Interrupt functions
-void up(){//Action if the up button is pressed increment
-    if (Function == 0){ 
-        No_Of_Rotations = No_Of_Rotations + 1;//Increases Turn number
-    }else if (Function == 1){
-        if (Select == false){
-            Loop = Loop + 1;  //Increases Repetitions in Annealing
-        }else if (Select == true){
-            Wait_Time = Wait_Time + 1;  //Increases Wait time
-        }
-        }else if (Function == 2){  
-            if (Select == false){
-                if (Duty_Cycle < 100){
-                    Duty_Cycle = Duty_Cycle + 10; //Increases Testing Duty Cycle
-                }}else if (Select == true){
-                    Power_Time = Power_Time + 1;    //Increases time on
-                }
-        }
-}
-void down(){ //Action if the down button is pressed decrement
-    if (Function == 0){ 
-        No_Of_Rotations = No_Of_Rotations - 1;
+void up_thread_function(){//Action if the up button is pressed increment
+    while(1)
+    {
+        Thread::signal_wait(1);
+        up_thread.signal_set(0);
+        led1 = !led1;
+        pc.printf("Up Button Pressed\n");
+        
+        if (Function == 0){
+            
+            No_Of_Rotations = No_Of_Rotations + 1;//Increases Turn number
+            turns_todo = No_Of_Rotations;
         }else if (Function == 1){
             if (Select == false){
-                if (Loop > 0){
-                    Loop = Loop - 1;
-                }
-                }else if (Select == true){
-                    if (Wait_Time > 0){
-                        Wait_Time = Wait_Time - 1;
+                Loop = Loop + 1;  //Increases Repetitions in Annealing
+            }else if (Select == true){
+                Wait_Time = Wait_Time + 1;  //Increases Wait time
+            }
+            }else if (Function == 2){  
+                if (Select == false){
+                    if (Duty_Cycle < 100){
+                        Duty_Cycle = Duty_Cycle + 10; //Increases Testing Duty Cycle
+                    }}else if (Select == true){
+                        Power_Time = Power_Time + 1;    //Increases time on
                     }
+            }
+    Thread::wait(1000);//Button debounce
+    }
+}
+void down_thread_function(){ //Action if the down button is pressed decrement
+    while(1)
+    {
+        Thread::signal_wait(1);
+        down_thread.signal_set(0);
+        pc.printf("Down Button Pressed\n");
+        if (Function == 0){ 
+            No_Of_Rotations = No_Of_Rotations - 1;
+            turns_todo = No_Of_Rotations;
+            }else if (Function == 1){
+                if (Select == false){
+                    if (Loop > 0){
+                        Loop = Loop - 1;
+                    }
+                    }else if (Select == true){
+                        if (Wait_Time > 0){
+                            Wait_Time = Wait_Time - 1;
+                        }
+                    }
+            }else if (Function == 2){  
+                if (Select == false){
+                     if (Duty_Cycle > 0){
+                        Duty_Cycle = Duty_Cycle - 10;     //Decreases duty
+                        }}else if (Select == true){
+                    if (Power_Time > 0){
+                    Power_Time = Power_Time - 1;    //Decreases Time on
                 }
-     }else if (Function == 2){  
-        if (Select == false){
-        if (Duty_Cycle > 0){
-            Duty_Cycle = Duty_Cycle - 10;     //Decreases duty
-        }}else if (Select == true){
-        if (Power_Time > 0){
-            Power_Time = Power_Time - 1;    //Decreases Time on
-        }
-    }
-     }
-}
-void start_stop() { //Action if the Start/Stop button is pressed
-    if (Function == 0)//Twist selected
-    {
-        Twist_Go = !Twist_Go;//toggle used for coiling and twisting
-    }else if (Function == 1){ //Annealing selected 
-        Anneal_Go = !Anneal_Go;//toggle
-    }else if (Function == 2){ //Testing selected 
-        Test_Go = !Test_Go;//toggle
+            }
+         }
+         Thread::wait(1000);//Button debounce
     }
 }
-void Function_Selection() { //Action if the Function button is pressed
-    if (Function < 2){
-        Function = Function + 1;
-    }else{
-        Function = 0;
+void start_stop_thread_function(){ //Action if the Start/Stop button is pressed
+    while(1)
+    {
+        Thread::signal_wait(1);
+        start_stop_thread.signal_set(0);
+        pc.printf("S/S Button Pressed\n");
+        if (Function == 0)//Twist selected
+        {
+            Twist_Go = !Twist_Go;//toggle used for coiling and twisting
+        }else if (Function == 1){ //Annealing selected 
+            Anneal_Go = !Anneal_Go;//toggle
+        }else if (Function == 2){ //Testing selected 
+            Test_Go = !Test_Go;//toggle
+        }
+         Thread::wait(1000);//Button debounce
+    }
+}
+void Function_Selection_thread_function() { //Action if the Function button is pressed
+    while(1)
+    {
+        Thread::signal_wait(1);
+        function_thread.signal_set(0);
+        pc.printf("Function Button Pressed\n");
+        if (Function < 2){
+            Function = Function + 1;
+        }else{
+            Function = 0;
+        }
+         Thread::wait(2000);//Button debounce
     }
 }
-void Selection() { //Action if the Select button is pressed
-    Select = !Select;
+void Selection_thread_function() { //Action if the Select button is pressed
+    while(1)
+    {
+        Thread::signal_wait(1);
+        select_thread.signal_set(0);
+        pc.printf("Select Button Pressed\n");
+        Select = !Select;
+        Thread::wait(1000);//Button debounce
+    }
 }
+
 int main() 
 {
-    //Initialisation Routine
+    
     //Interrupt setters
-    button_up.rise(&up);                        //Sets up Up button
-    button_down.rise(&down);                    //Sets up Down Button
-    button_start.rise(&start_stop);             //Sets up Start/Stop Button
-    button_funct.rise(&Function_Selection);     //Sets up Function Button
-    button_select.rise(&Selection);             //Sets up Select Button
-   
+    button_up.rise(&up_signal);                        //Sets up Up button
+    button_down.rise(&down_signal);                    //Sets up Down Button
+    button_start.rise(&start_signal);             //Sets up Start/Stop Button
+    button_funct.rise(&function_signal);     //Sets up Function Button
+    button_select.rise(&select_signal);             //Sets up Select Button
+    
+    //Thread Starts
+    lcd_thread.start(LCD_thread);
+    led_thread.start(LED_thread);  
+      
+    up_thread.start(up_thread_function);
+    start_stop_thread.start(start_stop_thread_function);
+    
+    down_thread.start(down_thread_function);
+    function_thread.start(Function_Selection_thread_function);
+    select_thread.start(Selection_thread_function);
+    
     No_Of_Rotations = 20;//Defaults at 20 as a starting value
-    
+    turns_todo = No_Of_Rotations;
     Twist_Go = false;  //
     Anneal_Go = false; // The Values for the start/ stop button on each select setting
     Test_Go = false;   //
@@ -119,14 +175,14 @@
     Power_Time = 6; //Seconds
     
     /*
-    Function 0 = Turn code
-    Function 1 = Anneleaing
+    Function 0 = Turn
+    Function 1 = Anneal
     Function 2 = Test
     */
-    pc.printf("testing\n");//Outputs informtation to the putty terminal
-    //Thread Starts
-    lcd_thread.start(LCD_thread);
-    led_thread.start(LED_thread);
+
+    pc.printf("Program start\n");//Outputs informtation to the putty terminal
+
+    
     while(1)            // Main code
     {
         if (Function == 0){       //Turning Code
@@ -156,3 +212,5 @@
         }
     }
 }
+
+