This is the first version of this code, pre threading

Dependencies:   mbed TextLCD

main.cpp

Committer:
JDickson
Date:
2019-02-05
Revision:
1:bc8670cca9f1
Parent:
0:fa46f9c77bd5

File content as of revision 1:bc8670cca9f1:

#include "mbed.h"
#include "TextLCD.h"
#include "SETUP.hpp"


//Switch toggling to bools for readability
InterruptIn button_up(PE_15);      // UP BUTTON
InterruptIn button_down(PE_14);    // These setup the button interupts
InterruptIn button_start(PE_12);   // START / STOP BUTTON
InterruptIn button_funct(PE_13);// Random pin  CHANGE FOR FUNCTION BUTTON
InterruptIn button_select(PE_11);// Random pin CHANGE FOR SELECT BUTTON

PwmOut Tendon_Power(PE_8); 
//VARIABLE DEFINITIONS
int No_Of_Rotations;
int Select;
int Function;
int Counter;
int Twist_Go;
int Anneal_Go;
//int Test_Go;

bool testing;
int Loop;
int Wait_Time;//IN SECONDS

int Duty_Cycle;
int Power_Time;
 
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 == -1){
                                                    Loop = Loop + 1;  //Increases Repetitions in Annealing
                                        } else if (Select == 1){
                                                    Wait_Time = Wait_Time + 1;  //Increases Wait time
                                        }
            }else if (Function == 2){  
                                    if (Select == -1){
                                                    if (Duty_Cycle < 100){
                                                    Duty_Cycle = Duty_Cycle + 10; //Increases Testing Duty Cycle
                                                    }
                                        } else if (Select == 1){
                                                    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;//
            }else if (Function == 1){
                                    if (Select == -1){
                                                    if (Loop > 0){
                                                    Loop = Loop - 1;
                                                    }
                                        } else if (Select == 1){
                                                    if (Wait_Time > 0){
                                                    Wait_Time = Wait_Time - 1;
                                                    }
                                        }
            }else if (Function == 2){  
                                    if (Select == -1){
                                                    if (Duty_Cycle > 0){
                                                    Duty_Cycle = Duty_Cycle - 10;     //Decreases duty
                                                    }
                                        } else if (Select == 1){
                                                    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 * -1;//toggle used for coiling and twisting
                                    //testing = !testing;
                     }
                    else if (Function == 1){ //Annealing selected 
                                    Anneal_Go = Anneal_Go * -1;//toggle
                     }
                    else if (Function == 2){ //Testing selected 
                                    Test_Go = Test_Go * -1;//toggle
                     }
}

void Function_Selection() { //Action if the Function button is pressed
                    if (Function < 2){
                                    Function = Function + 1;
                                    }
                    else {
                        Function == 0;
                        }
}
void Selection() { //Action if the Select button is pressed
                    Select = Select * -1;
}
 
int main() {
    //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
   
    No_Of_Rotations = 20;//Defaults at 20 as a starting value
    
    Twist_Go = -1;  //
    Anneal_Go = -1; // The Values for the start/ stop button on each select setting
    Test_Go = -1;   //
    
    Function = 0;   //These values are used to navigate the differing modes
    Select = -1;    //
    
    Loop = 8;       //Default loops
    Wait_Time = 6;  //Default wait time
    
    Duty_Cycle = 50; //Percent
    Power_Time = 6; //Seconds
    
    /*
    Function 0 = Turn code
    Function 1 = Anneleaing
    Function 2 = Test
    */
    while(1) {           // Main code
                if (Function == 0){       //Turning Code
                                    if (Twist_Go = 1){
                                    STEPPER_MOTOR_1.Rotate_Steps(No_Of_Rotations);
                                    }
                }
                else if (Function == 1){  //Annealing Code
                                        Counter = 0;
                                        if (Anneal_Go = 1){
                                        for ( ; counter < Loop; counter++) { //Loop value, check if works
                                        Tendon_Power.period(0.01); // set PWM period to 10 ms don't use pwm have this just to declare
                                        Tendon_Power=1; // set duty cycle to 100%
                                        wait(Wait_Time);//Variable
                                        Tendon_Power=0; // set duty cycle to 0%
                                        wait(6);//Fixed off time
                                        }
                                        }

                }
                else if (Function == 2){  //Testing Code
                                        if (Test_Go = 1){
                                        Tendon_Power.period(0.01); // set PWM period to 10 ms don't use pwm have this just to declare
                                        Tendon_Power= Duty_Cycle / 100; // set duty cycle to variable input from buttons between 0-1 (on lcd this is a percentage) also increment by values of 10
                                        wait(Power_Time);//Variable on time for power on
                                        Tendon_Power=0; // set duty cycle to 0% and power off
                                        }
                                        /*
            
                */
                }
    }
}