@startuml ' skinparam linetype ortho ' skinparam nodesep 100 skinparam ranksep 80 skinparam state { BackgroundColor LightBlue } [*] --> Initialization state Initialization Initialization : Entry / Stop motor Initialization : Entry / Initialize internal parameters Initialization : Entry / Reset speed measurement Initialization : Do / Wait 2 seconds Initialization : Exit / Send Boot-up message state PreOperational PreOperational : Entry / Stop motor PreOperational : Do / Blink LED at 1 Hz PreOperational : Do / Accept Kp and Ti configuration PreOperational : Do / Select P or PI controller [c] PreOperational : Exit / LED off state Operational Operational : Entry / LED on Operational : Do / Run speed controller Operational : Exit / Stop motor and LED off state Stopped Stopped : Entry / Stop motor Stopped : Do / Blink LED at 2 Hz Stopped : Exit / LED off Initialization -r-> PreOperational : initialization\n complete ' Initialization -d-> Operational : initialization\n complete PreOperational -d-> Operational : set operational [o] PreOperational -l--> Initialization : reset [r] Operational -u-> PreOperational : set pre-operational [p] Operational -> Initialization : reset [r] Operational --> Stopped : fault detected Stopped -l-> Initialization : reset [r] Stopped -> Operational : set operational [o] Stopped -u-> PreOperational : set pre-operational [p] @enduml