In a highly recommended YouTube video and Instructable, entitled ‘Arduino Sample Code Mashups’, Becky Stern simply and beautifully breaks down how to think through the design of a hardware project and the software that you will need to create to run it.
While the video is geared to Arduino, almost everything is applicable to any microcontroller programming language. Here are the basic considerations that she outlines:
- Define your purpose – Write down the goals of your project, and what features are required and which ones are optional.
- Classify inputs and outputs – List out all of the inputs and outputs you plan on using.
- Write pseudocode – Explain in plain English the steps the program will walk through as it's executed.
- Test your hardware – Test out each subsystem of your design by using sample code known to work with each input and output component.
- Create your program – Paste in all of your now-verified code samples, and start building your program from there.
- Make incremental improvements – Once you get everything working, you can then fix or change any issues you encounter or changes you care to make.