#ifndef MOTOR_CONTROLLER_H #define MOTOR_CONTROLLER_H #include "rotary_encoder_driver.h" #include "motor_driver.h" #include "p_controller.h" class State; class MotorController { private: State* current_state; State* initialization_state; State* operational_state; RotaryEncoderDriver& encoder; MotorDriver& motor; P_controller& controller; double reference_rpm; public: MotorController( RotaryEncoderDriver& encoder, MotorDriver& motor, P_controller& controller ); void set_states( State* initialization, State* operational ); void begin(); void update(); void command(char c); void transition_to(State* new_state); void to_initialization(); void to_operational(); void run_speed_controller(); void stop_motor(); void reset_speed_measurement(); }; #endif