2 Commits
4 changed files with 52 additions and 26 deletions
+7 -3
View File
@@ -11,11 +11,13 @@ skinparam state {
state Initialization
Initialization : Entry / Stop motor
Initialization : Entry / Initialize internal parameters
Initialization : Entry / Reset speed measurement
Initialization : Do / Initialize internal parameters
Initialization : Do / Reset speed measurement
Initialization : Do / Wait 2 seconds
Initialization : Exit / Send Boot-up message
state Operational
Operational : Entry / LED on
Operational : Do / Run speed controller
@@ -26,7 +28,9 @@ state Stopped
Stopped : Do / Blink LED at 2 Hz
Stopped : Exit / LED off
Initialization --> Operational : initialization complete
Initialization --> Operational : initialization\n complete
Operational --> Initialization : reset
Operational --> Stopped : fault detected
+11 -4
View File
@@ -18,9 +18,9 @@ private:
State* current_state;
State* initialization_state;
State* operational_state;
State* stopped_state;
State& initialization_state;
State& operational_state;
State& stopped_state;
RotaryEncoderDriver& encoder;
MotorDriver& motor;
@@ -38,10 +38,17 @@ public:
P_controller& controller,
State& initialization,
State& operational,
state& stopped
State& stopped
);
// void set_states(
// State* initialization,
// State* operational,
// State* stopped
// );
void begin();
void update();
+7 -6
View File
@@ -33,7 +33,8 @@ MotorController motor_controller(
motor,
controller,
initialization_state,
operational_state
operational_state,
stopped_state
);
@@ -53,11 +54,11 @@ int main()
sei();
motor_controller.set_states(
&initialization_state,
&operational_state,
&stopped_state
);
// motor_controller.set_states(
// &initialization_state,
// &operational_state,
// &stopped_state
// );
motor_controller.begin();
+24 -10
View File
@@ -9,7 +9,8 @@ MotorController::MotorController(
MotorDriver& motor,
P_controller& controller,
State& initialization,
State& operational
State& operational,
State& stopped
)
: current_state(nullptr),
initialization_state(initialization),
@@ -23,9 +24,22 @@ MotorController::MotorController(
{
initialization_state.set_context(this);
operational_state.set_context(this);
stopped_state.set_context(this);
}
// void MotorController::set_states(
// State* initialization,
// State* operational,
// State* stopped
// )
// initialization_state = initialization;
// operational_state = operational;
// stopped_state = stopped;
void MotorController::begin()
{
led.init();
@@ -106,6 +120,15 @@ void MotorController::reset_speed_measurement()
encoder.reset_speed_measurement();
}
void MotorController::to_stopped()
{
transition_to(stopped_state);
}
bool MotorController::fault_active()
{
return motor.fault_active();
}
void MotorController::led_on()
{
@@ -117,12 +140,3 @@ void MotorController::led_off()
{
led.set_lo();
}
void MotorController::to_stopped()
{
transition_to(stopped_state);
}
bool MotorController::fault_active()
{
return motor.fault_active();
}