Dependencies: mbed mbed-rtos TextLCD
Diff: main.cpp
- 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 @@ } } } + +