Firmata 2.1 (version C)

I was having a lot of problems with Firmata. The major one being with improper versioning of the whole system.

I use Firmata with Max/Msp, Pure Data and Processing, but the different versions of Firmata either had different names, different baud rates or different proctocol versions (even the Firmata official website has documentation for version 2.1 but only distributes version 2.0).

I made the following zip to include my own version of the standard_firmata (based on version 2.1) for: - Arduino - Processing - Max/Msp

I corrected a [u]lot[/u] of bugs in all three versions, added servo and sysex support and unified the names (they are all called Firmata).

Get it here:

Seems to work ok. The only problem is that 2.1 in Arduino has a serial speed of 57600 Baud and this 2.1 version has a higher speed ( 115200 ).

Actually Firmata in Arduino can be any speed (the speed is determined with Firmata.begin() ).

It is specifically because of the problem that you note that I included my own version of the standard firmata.

If you go on, the version of Firmata for Processing and Max/Msp all expect a baud rate of 115200 NOT 57600 as in Firmata 2.1 presently included with Arduino.

The StandardFirmata in 0017 turned out to be kind of buggy, unfortunately. We have things mostly fixed in SVN, but would love to have more testing and bug reports! So here's a new release. I fixed all bugs that I knew about, including the one where analog pins sometimes acted like they had a log curve on them.

I tested this on a Diecimila, I hear there are troubles with the Arduino Pro and others, but I only have the older ones, so testing and bug reports on those are very helpful. Tof, could you make an official release of the Processing Firmata stuff? Its currently floating without a maintainer.


The Firmata trunk seems to be broken again. The most recent change (revision 37) to StandardFirmata.pde broke analog input. SVN comment was "fixed bug in setting pin to ANALOG mode, fixed by TOF"

This causes an infinite loop I think. setPinModeCallback(14, mode) will call reportAnalogCallback(0, mode) which will then call setPinModeCallback(14, mode)...

infinite loop? I don't quite understand why this change was made when things were already working -- the fix for the logarithmic potentiometer behavior was good. I was scratching my head when observing that logarithmic behavior. I thought my pot was broken...

I do not know about the svn version to which I have made no contributions myself. But my version (linked at the top of this thread) does not loop infinitely.

Thanks Michael Krumpus for spotting that bug, that one was my fault, not tof's. :-[ Here's an updated release:

Still not working for me with Duemilanove and Arduino 0017; same problems yet: I get either 0 or 1 values with the sensor, while without the serial communication -in the ARduino IDE Serial Monitor- I get the normal temperature values

How about posting your processing code, then? You might be making a simple mistake in the code. We could have a look, and maybe save some of your hair.

Although, hair’s overrated.