Arduino Programming
Part 7: Flow charts and
Top-down design
EAS 199B, Winter 2010
Gerald Recktenwald
Portland State University
[email protected]
Goals
Introduce flow charts
❖ A tool for developing algorithms
❖ A tool for documenting algorithms
❖ A visual method of communicating about any sequential or
iterative process
❖ Great for visual learners!
Top-down design
❖ One technique for creating a plan for large, multi-step problems
❖ Not tied to flow charts, but can be used effectively with flow
charts
Arduino Programming Part 7: EAS 199B 2
Flow chart symbols
Terminator Start or stop a sequence.
May contain module name.
Process A step in the process or
computational algorithm
Data input Information from outside of
the algorithm or process
Decision Choose a flow path for continuing
the algorithm or process
Flow indicators Connect other elements
Connector or Junction Optional joint where flow
indicators merge
Arduino Programming Part 7: EAS 199B 3
Exercise 1
Draw the flow chart to read and display the salinity
value on the LCD monitor
Keep it simple
❖ 5 or so symbols (not counting arrows)
❖ Describe only the high level actions
Arduino Programming Part 7: EAS 199B 4
Exercise 1
Your answer goes here.
Arduino Programming Part 7: EAS 199B 5
Exercise 1
Read and display salinity
Specify constants
Initialize LCD
Read salinity
Display value to LCD
Arduino Programming Part 7: EAS 199B 6
Exercise 2
Expand the “Read salinity” step in another flow chart
❖ Keep it simple
❖ “analog data” is an external input
Read and display salinity
analog
input
Specify constants
Initialize LCD
Read salinity
Display value to LCD
Arduino Programming Part 7: EAS 199B 7
Exercise 2
Your answer goes here.
Arduino Programming Part 7: EAS 199B 8
Exercise 2
Read salinity
output pin,
input pin
Turn on power
Wait
analog
Read analog input
value
Turn off power
Stop
Arduino Programming Part 7: EAS 199B 9
Exercise 3
Expand the “Read analog input” step in another flow chart
❖ Compute the average of n readings
❖ “analog data” is an external input Read salinity
output pin,
input pin
Turn on power
Wait
analog
Read analog input
value
Turn off power
Stop
Arduino Programming Part 7: EAS 199B 10
Exercise 3
Your answer goes here.
Arduino Programming Part 7: EAS 199B 11
Exercise 3
Read average analog input
n readings,
input pin
Initialize: sum=0, counter=0
analog
Read analog input
value
Add to sum, increment counter
yes
Counter<n?
no
Average = sum/n
Stop
Arduino Programming Part 7: EAS 199B 12
Top-down design
1. Start with a general statement of the solution
a. List the main steps
b. Don’t worry yet about details
2. Pick one of the steps
a. Break this step into a manageable number of sub-steps
b. Don’t worry about too many of the details
c. Apply step 2 to one of steps just generated
Arduino Programming Part 7: EAS 199B 13
Top-down design
Recursive refinement: from general to specific
Read and display salinity
Read salinity
Specify constants output pin, Read average analog input
input pin
n readings,
Initialize LCD Turn on power input pin
Initialize: sum=0, counter=0
Read salinity Wait
analog
Display value to LCD Read analog input
value
analog
Read analog input
value
Turn off power
Add to sum, increment counter
Stop
yes
Counter<n?
Repeat refinement until individual no
steps can be translated in to
Average = sum/n
concrete actions or lines of code Stop
Arduino Programming Part 7: EAS 199B 14