Better ways to debug the internals of the Arduino board
As a side project during my residency at Instructables, I decided to improve on the debugging capabilities of the Arduino platform. This was in line with working with internal complexity which can be hard to comprehend as the code grows. The program enables you to visualize realtime data on the Arduino board. You are usually stuck with the standard serial output. As the complexity of your Arduino code grows, this makes it impossible to comprehend what is actually going on inside the board.
To solve the problem of visualizing realtime data on the Arduino board, I created a library that enables you to create your own custom GUI for your Arduino projects. Watch this video to get a demonstration of a basic hello world with a potmeter and a diode:
The following are a few key features of the tool:
Custom design your interface from the Arduino board: You define which sliders, graphs and buttons you need for your interface. You do this in your Arduino sketch which means that the GUI program acts as a slave to the sketch. All information is stored in your board.
Visualize and manipulate realtime data: Whether you are making an RGB light controller or a robot arm, getting a graphical feedback is crucial to understand what is going on inside the board. This enables you to understand whether it is your hardware or the code that is causing problem. Further, the sliders and buttons enable you to tweak the individual parameters in realtime. This way you can see what effect different thresholds have on the interaction.
Use the same app for all your Arduino projects: I have made tons of small apps for different projects. My problem is always to find them again a year later. Because we save everything in the Arduino, I only need to keep one app around the Arduino and it will automatically configure the app for the current project.
Prototype the interface before you turn on the soldering iron: Because you can design the GUI as you like it (within reasonable limits), you can prototype the interface before you have made a physical interface. This also enables you to divide the tasks between multiple people, e.g. one person is working on the hardware and another person is working on the code. When you have made the physical interface the Guino will integrate seamlessly.
You can find the instructables for the Guino interface here.
All parts in this blog series:
- Artist-in-residence at Instructables: a field report by Mads Hobye
- Making Noise Machines: Non-trivial Internal Complexity as Facilitator for Curiosity
- Better ways to debug the internals of the Arduino board