State machine

Dependencies:   mbed Adafruit_GFX BioroboticsMotorControl MODSERIAL BioroboticsEMGFilter

main.cpp

Committer:
brass_phoenix
Date:
2018-10-30
Revision:
1:cfa5abca6d43
Parent:
0:7d25c2ade6c5
Child:
2:141cfcafe72b

File content as of revision 1:cfa5abca6d43:

#include "mbed.h"

#include "Button.h"


enum States {waiting, calib_motor, calib_bicep1, calib_bicep2, homing, operation, failure}; // The possible states of the state machine

// Global variables
const double PI = 3.14159265359;
// Main loop wait time per cycle. This does not influence the motor PID or EMG reading frequencies.
const double main_loop_wait_time = 0.01;


States current_state;   // Defining the state we are currently in
Ticker loop_ticker;     // Ticker for the loop function

// Order of buttons: up_down, left_right, panic
// D2, D3, D8
Button ud_button(PTA4);
Button lr_button(PTC6);
Button p_button(D8);

DigitalOut led_red(LED_RED);
DigitalOut led_green(LED_GREEN);

void main_loop()
{
    ud_button.update();
    lr_button.update();
    p_button.update();
    

    led_red = !ud_button.has_just_been_pressed();
    
    led_green = lr_button.is_pressed();
    
    switch (current_state) {
        case waiting:
            //do_state_waiting():
            break;
        case calib_motor:
            //do_state_calib_motor():
            break;
        case calib_bicep1:
            //do_state_calib_bicep1():
            break;
        case calib_bicep2:
            //do_state_calib_bicep2():
            break;
        case homing:
            //do_state_homing():
            break;
        case operation:
            //do_state_operation():
            break;
        case failure:
            //do_state_failure():
            break;
    }
    
}

int main()
{
    led_red = 1;
    current_state = waiting;
    while (true) {
        main_loop();
        wait(main_loop_wait_time);
    }
}