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); } }