Arduino blog

Arduino blog

Arduino thinkering

This blog is about things I come by related to Arduino which I feel are inspiring/important/funny enough to write about.

Some support for ino files in the arduino eclipse plugin.

eclipse pluginPosted by Jan Wed, May 21, 2014 14:58:42
If you have upgraded to the latest version of the plugin (nightly builds only) you may have noticed that there is now some support for ino files.
I hear you say: ino files???????? I thought you didn't like those?

Well I never objected to ino files in the Arduino eclipse plugin but I never saw the need for it as well. I mean someone who can handle C/C++ should not need the functionality ino files offer. I fully support the ino file decision made by the Arduino team in the Arduino IDE, but if you step up to eclipse you should be able to do without ino file functionality. I even embraced this because this keeps the unexperienced away.
Next to that I never saw a clean way to implement ino file support.

So what has changed?
Using the Arduino eclipse plugin I learned to know some weak points that are related to ino files. These are:
1) I noticed that I still use the Arduino IDE to look at the sample programs. Each time I download a library it is simply easier to start the Arduino IDE to look at the samples.
2) The eclipse plugin is perfect to make Arduino libraries but due to lack of support for ino files there is a weak point in developing the sample programs for the library.
3) Due to the above I noticed I have lots ( read: to many for me to handle) projects in my workspace. This is cause by having sample programs for each and every library I make which I can not really delete or get rid of (as a project) due to the above. If the plugin had better support for ino files I could just drop the project in the examples folder of the library. As a result there is a clearer link between the "library and examples" and I have a cleaner workspace.
4) I found a nice way to have some support ino files.

Some support for ino files?
It are the first versions so not all functionality is there. If some functionality is to hard to implement I won't bother doing it (unless a sponsor whips out his wallet big time)
And do you have an extensive list of what Arduino IDE supports in the ino files (if so please send it to me)
What is at the time of writing the supported features:
1) joining all ino files in 1 big file.
2) inclusion of Arduino.h
3) All includes are repeated at the top af the big file (after #include "Arduino.h")
4) All function declarations are added at the top of the big file (after the includes).

And the bonus is:
For me the big advantage is that I also wrote some code to create a project based on multiple examples. In the import wizard after you have selected your Arduino you can select the examples. I opted for multiple because the granularity of a example is different from that of a real project.
While I did so I immediately also import the library containing the example. if you select 1 simple example (those who do not have library dependencies and do not depend on "special ino functionality") it should compile after the wizard has finished.

How it works?
As I sated in point 4: "I found a nice way to have some support ino files.".
I'll share that nice way so you understand what is going on in case something is not working.
First of all: the code is based on the cdt indexer and does not parse the source code like Arduino IDE does.
I query the cdt indexer and dump the info I need in a file called .ino.cpp. . files are ignored by the Arduino IDE so that makes the solution compatible.
Buy querying the CDT indexer I can do 2,3,4. After that I add a #include "xxx.ino" for each and every ino file in the project.
As a result all *.ino files are compiled as 1 big file and line numbers and references all still work.

Wait a minute... If the code of the ino file x.ino is included in .ino.cpp and x.ino the code exists 2 times; that will give conflicts.

yes and no. You have to flag *.ino (and add *.pde as well) as C++ source code in eclipse. If not, the indexer will not parse the code and the GUI will not represent the code in a nice way. These are CDT parts and they work file based so the code will exists only once for CDT.
The compilation is done by make based on a make file generated by my plugin.
So when I create the make file I exclude *.ino files from the build.

What are the currently know limitations?
1) all headers must contain #include guards
2) You can not use a define in the code before the include to modify the behavior of a header file (use the project properties to do so)

To avoid errors in the build in the generated function declaration part I need to first include the headers. As I do not want to touch your files I can not exclude the headers. therefore all headers are included 2 times.
For example the example toneKeyboard will give warnings

For the same reason as above a #define in front of your header will actually end up between the 2 includes. Due to the #include guard the second include will be ignored and as such your define is actually after the real include.

Bugs can be reported at <>


  • Comments(0)//

V2.1.0.4 beta has been released

eclipse pluginPosted by Jan Tue, July 02, 2013 01:08:23
I release V2.1.0.4 beta of my Arduino eclipse plugin.
To run with this version you need Arduino IDE 1.5.2 beta.

1) multiple configurations (within the same board.txt file; so no uno to due smiley)
2) Full Teensy support (that is inclusive Teensy3; extra installation needed)
3) bug fix for Due
4) turning on/off "all warnings" (per configuration)
5) Flag to set a "alternative size command" (the one used in V1 of the plugin) per configuration.
6) Fields to add commands to the C and C++ command line
7) More technically: Most of the data is now saved in the configuration (environment variables). This makes it possible for the end user to overwrite any configuration by modifying the environment settings of the configuration.

To run Teensy download and unzip (make sure the files have execute rights) this file
or better use this tar version
Peter has done a nice writeup here.

Best regards

PS Michael has provided improved icons smiley

  • Comments(0)//

I'm looking for V2.1 alfa testers

eclipse pluginPosted by Jan Fri, May 24, 2013 15:37:41
I nearly finished V2.1 and I'm looking for alfa testers to do testing beginning of June.
All the changes are really small so I expect no real issues.

What is new and what are alfa testers supposed to test
1) multiple configurations (within the same board.txt file; so no uno to due smiley)
2) Full Teensy support (that is inclusive Teensy3; extra installation needed)
3) bug fix for Due
4) turning on/off "all warnings" (per configuration)
5) Flag to set a "alternative size command" (the one used in V1 of the plugin) per configuration.
6) Fields to add commands to the C and C++ command line
7) More technically: Most of the data is now saved in the configuration (environment variables). This makes it possible for the end user to overwrite any configuration by modifying the environment settings of the configuration.

If you want to volunteer for testing: please send me an e-mail ( specifying the OS(es) you want to test in and the hardware you can/want to test with.
Previous experience with the plugin is recommended.

Best regards

PS There is still a indexing problem with Teensy3 Paul is looking at. This makes "serial+ctrl space" not to work. Having 2 configurations (one for Teensy2 and 1 for Teensy3) is a work around.

  • Comments(0)//

V2 Beta release is available now.

eclipse pluginPosted by Jan Sat, March 23, 2013 15:45:08
V2 beta of the Arduino eclipse plugin is available.
What does it bring?
1) It works exactly the same on Windows Linux and Mac.
2) Super simple to install and configure.
3) Has the Arduino buttons so you can easily find the Arduino commands
4) Has an Arduino menu for amongst others importing the libraries
5) Has the Serial monitor supporting 4 serial connections
6) Has improved indexer functionality
7) Has support for Arduino IDE 1.5.2 (that is inclusive due)
8) Has the Arduino project and your sketch in the same eclipse project

What is downside?

1) You need eclipse juno. Older versions are not supported and will never be supported.
2) The older Arduino IDE's are not supported "out of the box".
3) AVR eclipse is no longer part of the plugin so you you need this features you have to install avr eclipse next to the arduino eclipse plugin.
4) Workspaces from version 1.X of the plugin are not compatible with this plugin.
5) The possibilities to change the commands in the plugin have been removed. To change the build commands please modify the platform.txt file
6) The reporting on the memory usage is less convenient.

Because of the incompatibility of the workspace I decided to release the plugin on a different update site. This allows you to switch to the new version when you are ready.

How to install the plugin?
I strongly advice to make a completely separate eclipse installation to support the migration process. Workspaces are not compatible so do not try to open your current work spaces with this plugin without having taken the necessary measurements (such as backups).
you need Eclipse Juno and Arduino IDE 1.5.2. Older versions of eclipse will not work (believe me I tested it) and older version of Arduino IDE will not work out of the box.
To install the plugin goto the install new software in eclipse and set the following location:

Do not forget to configure (windows->preferences->arduino) or nothing will work. There is no error message in this case.

What do I mean with " older version of Arduino IDE will not work out of the box."?
Arduino IDE 1.5.x tries to be tool independent. Therefore all "instructions" are described in a text format in platform.txt. The plugin uses the platform.txt to execute the commands. As older versions do not have a platform.txt file the plugin does not know which actions to take. So to run older versions you need to create/copy a platform.txt and place it next to the boards.txt.
If you succeeded in doing so please share your success and findings.

Best regards

  • Comments(1)//

Alpha version of eclipse plugin released

eclipse pluginPosted by Jan Mon, March 04, 2013 18:26:48
I released the alpha version of the of the arduino eclipse plugin 2.0.
I tested on Linux and windows. Testers say it works fine on Mac.
I'll give it some more time before I release a beta or final version.

Best regards

  • Comments(0)//

Do I make progres or don't I make progres? That is the question.

eclipse pluginPosted by Jan Fri, March 01, 2013 23:54:34
As the loyal follower of the Arduino eclipse plugin knows; I have been working on the on making a new version of my Arduino Plugin compatible with Arduino IDE 1.5.2.
And I wanted to release a version end of Februari 2013 and I didn't make it.
Honestly... I tried hard but to many things came in the way. Not at least some health issues.

So where am I?
I have been able to compile and upload code for following boards: Uno, Due, Duemilenove, Mega, Mega ADK, Teensy2++ on Linux Redhat 6 enterprise edition.
I did not get the Micro and Leonardo working on Redhat so I could not test those.
I just made a installable package and installed the plugin in windows and ..... I did not even get past the configuration page.

So hold on, it is coming soon .........or not?

Best regards

  • Comments(0)//

A Project with the Arduino libraries and the Sketch code in the same folder

eclipse pluginPosted by Jan Sat, February 23, 2013 17:08:42
I'm currently working on making my Arduino eclipse plugin Arduino IDE 1.5.2 compatible.
It is a complete rewrite for several reasons. But technically the main reason is that I wanted to have the Arduino Libraries and the sketch in the same project.
I have been willing this since I started working on Teensy compatibility. However CDT -The core C++ functionalities in Eclipse- does not support it.
So I have been working hard to make this work. For people knowing about CDT: I had to build a makefile generator; 2 name providers; a dependency calculator and a language provider.
It has been a rough ride and plenty of long nights. It all works now on my system but there is a major drawback ...... It only works in Juno.
Another drawback of this new version is that it is not downwards compatible on the workspace and arduino IDE level.
The workspace level is quite understandable as the project setup in eclipse is completely different.
To get it running with pre 1.5.2 versions you will need to add a correct platform.txt file to the hardware folder. But .... it has not been tested yet.

If you are interested in doing alfa testing please contact me with your available hardware and OSses you can test.


  • Comments(0)//

Arduino IDE 1.5.2

eclipse pluginPosted by Jan Thu, February 14, 2013 16:13:18
Currently the Arduino IDE 1.5.2 is available for Beta testing. I have held of modifying my plugin because I need to keep focus on Marvin (my lawn mower project).
However beginning of this year I swapped to Red had enterprise 6 and my plugin failed to work. So I had to change the plugin. So I bit the bullet and started to work on the Arduino IDE 1.5.2 compatibility.
As things are now the new plugin will be incompatible with the previous versions from a workspace point of view. Which means that it will be best to create a new workspace when you switch to the new version.
What will have changed?
- support for multiple platform.txt and boards.txt files.
- Added support for teensy
- The Arduino code is now in the same project as your sketch
- The Plugin is no longer based on the win avr plugin.
- You can run the winavr plugin next to the arduino eclipse plugin
As this is a major rewrite of the code I'm looking for volunteers to test the alfa version somewhere end of February beginning of March.
Volunteers should have a decent eclipse knowledge, experience with the current version of the eclipse plugin, spare time and the drive to investigate.
As I do not own a Mac or a Mac image; Mac owners please volunteer.

If you want to volunteer to do alfa testing during please send a mail titled "I want to volunteer for alfa testing on [os list] with [board list]" to


  • Comments(0)//
« Previous