2 Commits
Author SHA1 Message Date
helgie22 1d93605cc3 Merging main with Isak_part2 branch 2026-09-30 13:38:27 +00:00
helgie22 be4cf10d7e UML diagram changed 2026-09-30 13:29:43 +00:00
4 changed files with 26 additions and 52 deletions
+4 -8
View File
@@ -10,14 +10,12 @@ skinparam state {
[*] --> Initialization [*] --> Initialization
state Initialization state Initialization
Initialization : Entry / Stop motor Initialization : Entry / Stop motor
Initialization : Do / Initialize internal parameters Initialization : Entry / Initialize internal parameters
Initialization : Do / Reset speed measurement Initialization : Entry / Reset speed measurement
Initialization : Do / Wait 2 seconds Initialization : Do / Wait 2 seconds
Initialization : Exit / Send Boot-up message Initialization : Exit / Send Boot-up message
state Operational state Operational
Operational : Entry / LED on Operational : Entry / LED on
Operational : Do / Run speed controller Operational : Do / Run speed controller
@@ -28,9 +26,7 @@ state Stopped
Stopped : Do / Blink LED at 2 Hz Stopped : Do / Blink LED at 2 Hz
Stopped : Exit / LED off Stopped : Exit / LED off
Initialization --> Operational : initialization complete
Initialization --> Operational : initialization\n complete
Operational --> Initialization : reset Operational --> Initialization : reset
Operational --> Stopped : fault detected Operational --> Stopped : fault detected
+4 -11
View File
@@ -18,9 +18,9 @@ private:
State* current_state; State* current_state;
State& initialization_state; State* initialization_state;
State& operational_state; State* operational_state;
State& stopped_state; State* stopped_state;
RotaryEncoderDriver& encoder; RotaryEncoderDriver& encoder;
MotorDriver& motor; MotorDriver& motor;
@@ -38,17 +38,10 @@ public:
P_controller& controller, P_controller& controller,
State& initialization, State& initialization,
State& operational, State& operational,
State& stopped state& stopped
); );
// void set_states(
// State* initialization,
// State* operational,
// State* stopped
// );
void begin(); void begin();
void update(); void update();
+6 -7
View File
@@ -33,8 +33,7 @@ MotorController motor_controller(
motor, motor,
controller, controller,
initialization_state, initialization_state,
operational_state, operational_state
stopped_state
); );
@@ -54,11 +53,11 @@ int main()
sei(); sei();
// motor_controller.set_states( motor_controller.set_states(
// &initialization_state, &initialization_state,
// &operational_state, &operational_state,
// &stopped_state &stopped_state
// ); );
motor_controller.begin(); motor_controller.begin();
+12 -26
View File
@@ -9,8 +9,7 @@ MotorController::MotorController(
MotorDriver& motor, MotorDriver& motor,
P_controller& controller, P_controller& controller,
State& initialization, State& initialization,
State& operational, State& operational
State& stopped
) )
: current_state(nullptr), : current_state(nullptr),
initialization_state(initialization), initialization_state(initialization),
@@ -24,22 +23,9 @@ MotorController::MotorController(
{ {
initialization_state.set_context(this); initialization_state.set_context(this);
operational_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() void MotorController::begin()
{ {
led.init(); led.init();
@@ -120,6 +106,17 @@ void MotorController::reset_speed_measurement()
encoder.reset_speed_measurement(); encoder.reset_speed_measurement();
} }
void MotorController::led_on()
{
led.set_hi();
}
void MotorController::led_off()
{
led.set_lo();
}
void MotorController::to_stopped() void MotorController::to_stopped()
{ {
transition_to(stopped_state); transition_to(stopped_state);
@@ -129,14 +126,3 @@ bool MotorController::fault_active()
{ {
return motor.fault_active(); return motor.fault_active();
} }
void MotorController::led_on()
{
led.set_hi();
}
void MotorController::led_off()
{
led.set_lo();
}