Channels ▼

Al Williams

Dr. Dobb's Bloggers

Arduino IDEs

February 04, 2012

Last time I mentioned the Arduino and how popular it is, in part, because it has a Java-based IDE. Truthfully, to call it an IDE is almost overstating things. It has a very simple editor with some custom menus to do simple tasks including launching a build and downloading code to the hardware. It doesn't, however, support any on-target debugging that I am aware of.

If you want a more powerful IDE, though, there is an answer. It turns out the Arduino bootloader protocol is exactly the AVRISP protocol. So "full" Atmel IDEs like Atmel's own offering or the Eclipse plug-in (see Figure below) can program an Arduino just as they would any other Atmel chip. At that point, of course, it really isn't an Arduino anymore. You still don't get debugging unless you add some cheap hardware like a Dragon (I talked about that in March of last year).

[Click image to view at full size]

On the other hand, for the Arduino's intended market, Eclipse is probably a bit much. Sure, it's powerful, but you have to admit there's a lot of nooks and crannies to learn. Microchip's MPLAB X is based on NetBeans, which is superficially similar to Eclipse.

I've mentioned before that I only participate in one ideology war and that is the vi versus emacs debate, which I consider to be roughly equivalent to New Yorkers' fanatical loyalty to either the Mets or the Yankees. I still do a lot of development in emacs. But I have to admit that a well-done IDE with nice trouble-free code completion and integrated debugging can win me over (although don't pass over and

The problem is — even with my beloved emacs — is that I often spend as much time fiddling with the IDE or emacs plug-ins as I do coding. Not a good thing. I recently noticed that Qt is available to target Android, and so I fired up Eclipse and updated all the Qt-related things.

The first problem was that autocomplete didn't show anything but class names. After jigging a few options, the autocomplete started working, although I'm not entirely sure which one did the trick. Then I tried to debug. The debugger hangs (I haven't even started targeting the Android yet, this is just a normal Qt program on desktop Linux). I finally gave up and downloaded Qtcreator. This is a very simple IDE (see Figure below), but it is surprisingly functional and worked with no fuss. Granted, I can't change perspectives and write COBOL in it (yes, I'm being sarcastic, but I'm also not kidding).

[Click image to view at full size]
Figure 1. The design view for MainPage.xaml.

What really surprises me is that doing a Google search told me that I was not alone with my autocomplete and debugging problems (and I didn't find any answers to the debugging problem). While I get the value of having one tool to rule them all, I also get the value of having a preconfigured solution that lets me concentrate on the work instead of the tool. Sure, I want to be able to poke into it when I want, but I don't want to be forced to poke into it. MPLAB is based on Netbeans, but since it all works, I don't really care. Qtcreator is probably not based on anything, but it also just worked and so I didn't mind that either.

Then again, I always wind up going back to emacs anyway.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.