State Machines Part 3 - Dish Washer Example
State Machines
In class Lab - Dishwashing Machine

In class Lab - Dishwashing Machine
- We are going to build a simple dish washing machine with three cycles
- Economy
- Deluxe
- Super Deluxe
- Each cycle will wash and dry the dishes in some manner
- The washer has a knob to change cycle (pot), a light to show the current state (RGB), and it starts automatically when the door is closed (magnetic switch)
Cycles and States
| Cycles | States |
|---|---|
| Economy | Idle (white) |
| Deluxe | HotWash (red) |
| SuperDeluxe | ColdWash (blue) |
| RegularDry (orange) | |
| ExtraDry (yellow) |
Transitions
- The potentiometer position determine the state by divide the potentiometer into 3 ranges
- The first state will start when the / switch is closed, and the next states will happen automatically on a
millistimer
Transitions
| Economy | Deluxe | SuperDeluxe |
|---|---|---|
| Idle if until button pressed | Idle if until button pressed | Idle if until button pressed |
| ColdWash (2 min) | HotWash (2 min) | HotWash (2 min) |
| RegularDry (2 min) | RegularDry (2 min) | ExtraDry (4 min) |
| Idle | Idle | Idle |
In class Lab - Dishwashing Machine
- Download starting code
- Go to https://tinyurl.com/ProjectZipGH
- Paste the following link into the top right
https://github.com/reparke/TAC348-Making-Smart-Devices/tree/main/_exercises/week07/washer_start
- Wire device as shown below
Wiring Diagram

Components
- 1 RGB
- 1 potentiometer
- 1 magnetic switch (pushbutton will work too)
Wiring Pin Guide
| LED | Photon 2 Pins |
|---|---|
| Magnetic Switch | D5 |
| RGB Red LED | A2 |
| RGB Green LED | A5 |
| RGB Blue LED | D15 (MO) |
| Potentiometer | A1 |
General Approach
- We will need to create a way to represent the states and cycles using
enum - We will need to track state transitions with variables for state
-
We will need to control timing with
millis() - What does
loop()do- calculate new state
- update the timing of the new state
- update the RGB light for the new state
State Transition Diagram
- State transitions can often be represented with circle for the state
- Arrows represent the flow from one state to another
- Next to each arrow are the conditions that start the transition
Diagram
Credits
- Bill Siever for the lab idea
- Photo by Nathan Dumlao on Unsplash
- Photo by Laurie Parke