Rick Boldt, MathWorks
In this video, we use Stateflow® to graphically design state machine and timing logic that would be difficult to implement textually for a Lamp App created with MATLAB® App Designer.
You can create a standalone State Chart from MATLAB that is stored as a .sfx file and can be instantiated as MATLAB Object for use in applications.
This Lamp Logic State Chart is part of an app created with App Designer.
Notice the animation of the off state indicating it is active. The off state contains the MATLAB code to directly turn off the lamp and disable the mode and blink speed widgets in the GUI.
When we switch the lamp on in the GUI, the on event is sent to the Stateflow chart causing the state machine to leave the off state and enter the on state. This state has the MATLAB code to enable the mode and blink speed widgets in the GUI. We can also see the sub-state “solid” is active and contains the code to turn the lamp on.
Here, we can see the code written in App Designer to generate the on and off events that are used in the Stateflow chart.
The lamp has two modes of operation: solid, which it is in now, and blinking. Selecting the blinking mode causes the lamp to start to blink. Notice transitions between the on and off states that are inside the blinking state keep occurring. The MATLAB code in these states turns the lamp in the GUI on and off.
By changing the blink speed, we can slow down or speed up the time between the transitions. These transitions occur based on a MATLAB timer that is automatically generated because the after keyword has been used.
This example shows how a Stateflow chart can be used as part of an App. However, Stateflow charts can be used to represent complex logic and state machines in any MATLAB program without writing deeply nested if-else or switch-case statements.