The Arduino IDE
The upcoming version 2 IDE for Arduino C development had me writing some notes on this new desktop tool for my Arduino C book support web pages. I made the effort as it was always possible that there would be a key change that might have made life difficult for new users working through the book. In fact, the changes are largely improvements to the user interface including a nice “intellisense” addition when entering code. The most significant addition seemed to relate to debugging running code on an Arduino board.
A little
investigation revealed that the new “debug” facility only applied to a limited
range of recent boards and that almost all of those would require the inclusion
of some additional third-party test hardware. Only the new Arduino Zero has the
capacity to natively support interactive debugging from the IDE. That capacity
is probably a sign of things to come but while the Zero has that “Uno” format
and thus heritage appeal the overall package leaves me wondering about the “use
case”. Apart from the potential for interactive debugging, my venerable Arduino
Due knocks spots of the new board for processor speed and memory size.
While
“debugging” was on my mind I did add some notes to the book support pages to
illustrate how you could interactively debug running C code using Visual Studio
or Visual Studio Code. Of course, that would not help in debugging key issues
relating to the interaction of code and Arduino hardware but would be a way of
resolving a wide range of C or C++ code issues. A previous blog post of mine here on developing a sudoku solving program running on an Arduino included the
fact that I had debugged a key issue using Microsoft’s Visual Studio.
You can download the free Microsoft Visual Studio community edition. During the set-up you can specify C/C++ as your target project type (along with any others on the list that take your fancy). Visual Studio is a great tool for managing large complex projects but can be a bit daunting if you just want to knock up a short program to get something done quickly.
Because
that had worked well for me in the past, I had a stab at trying out my
preferred desktop IDE for general code development (Visual Studio Code) to
develop and test a C program. The next illustration shows a ridiculously simple
C program running and paused at a breakpoint to allow the inspection of a
variable. Setting up Visual Studio Code to write, compile and run C/C++ code
was a tad more complex than setting up Visual Studio to do the same thing but
was worth the effort I thought.
VS Code for C/C++ development
Not required for Arduino projects but quite possibly of interest; you can read how to set up VS Code for C/C++ code development at https://code.visualstudio.com/docs/languages/cpp although there are a couple of points I should add to help get you up and running.
If you are using a Windows PC you will need a C++ compiler – despite maybe having one built into an Arduino IDE installation. Download the MinGW installer and follow the installation steps. The VS Code web page mentions a key step 7 – but in fact this is step 6 on the referenced MSYS2 web page. You need to copy the “pacman -S mingw-w64-x86_64-gcc” line into the MSYS2 terminal window that is displayed when the installation is complete. Execute the “pacman” command and the required toolset will be installed.
VS Code extension for Arduino development.
Use the VS Code extensions dialogue to install the Arduino extension supplied by Microsoft.
Then use the settings dialogue (filtered by Arduino) to set
the path to your Arduino installation. I decided to use the original V1 IDE
installation which was a good choice as V2 is not yet supported (but a review of
the project github shows this is likely to be available when the new IDE release
version ships).
It takes a little clicking around and a few “mouse hovers” to locate all of the tools and settings but once your target board and port are set it is quite straight forward to compile and upload an Arduino program from VS Code.
The VS Code “dark mode” looks good as does the code colour highlighting. For my money, the intellisense is slicker in VS Code but, to be fair, the new IDE is still in early days. The “PROBLEMS” tab quickly shows up syntax errors and omissions – acting as a “linter”.
Downsides? Well, an obvious one is that the VS Code version of the Serial Monitor is one way only. It collects output but you can’t interact with the code running on a board. I hit this testing the second program from the first chapter in my book (see image above). Fortunately, the solution was simple – fire up that brilliant communications multi-tool putty. In its simplest mode, any key pressed is sent straight to the connected port – no button required. [Don’t forget to close the VS Code Serial Monitor, if it is open, before attempting to connect putty to the same port.]
Putty is a great tool to have available in any case and it can be downloaded from https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
It is worth noting that the VS Code extension for Arduino development appears to offer debugging support although (obviously) with the same limitations and caveats as the version 2 Arduino IDE.
What am I going to choose between the new Arduino IDE and
Visual Studio Code? I suspect that I will switch back and forth for a while to
see which one sticks.
Comments
Post a Comment