I recently upgraded to Arduino 0017 which includes Firmata 2.1, and my projects that use Standard Firmata no longer work. I believe I have found the problem but wanted to see what people thought.

I'm using the Processing Arduino library to interface with Standard Firmata, and the first thing I had to do was change the serial speed from 115200 to 57600 since this is the new default speed in Firmata 2.1. Digital outputs began to work but digital and analog inputs still did not.

I finally found that the StandardFirmata.pde sketch now calls Firmata.begin(57600) instead of calling Firmata.begin(). This seems fine except that these two implementations of the begin method in Firmata.cpp are different. This difference is causing digital and analog input to not work on my Duemilanove.

Note that in the no-arg version of begin(), the call to Serial.begin(57600) precedes blinkVersion(). But in the begin method that takes a speed argument, blinkVersion() is called before the call to Serial.begin(speed). This causes my Arduino to never send any inputs over the Serial line. There must be a timing issue here. When I change the order so that blinkVersion() occurs after Serial.begin(speed), everything works fine.

Short story: this can be fixed by reordering the Firmata.begin methods to make them consistent or to have the examples call the no-arg version of Firmata.begin().

Has anyone else had issues with using Firmata 2.1 included in Arduino 0017? I would think that anyone using any of the examples like StandardFirmata would have found them not to work...

I use as3glue with Firmata 2.1 Changing the serialspeed ( in serproxy ) worked out good ( thanks for the tip ) and I have connection.

However I have also problems with the analog inputs. They don't give a range from 0-1023 anymore ( over a even range of 0-5V with a potmeter ). This is a software problem, because with Firmata 2.0 it works good.

Changing the firmata.cpp and firmata.h in the Arduino 17 library's folder didn't work either.

In the forum someone made his on changes :http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253735359/0

Those work, but the serialspeed is different.

Since I use it in an educational situation it would be good that a standard becomes kind of a standard. I hope Arduino 18 can come with a stable version.

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.

http://at.or.at/hans/pd/objects.html#pduino

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.

Unfortunately, the Arduino Mega support is spotty right now. There are some pins that work, and some that are mismapped (i.e. pin 13 is actually something like pin 20). My advice if you want to try to use Firmata on the Mega is try all the pins. For example:

turn on all analog pins and look to see which one your pot is hooked up to

Had the same problem with the 0017, Firmata 2.1 not working with the Arduino 328.

I went back to the Firmata 2 I was using before AND had to change the 57600 in serproxy.cfg and initial testing looks good.

My application needs to support both boards so I'll need to write a routine in to change the serproxy.cfg dynamically if the board is a 168 vs. 328 as the Arduino 168 don't work on 57600 in serproxy.cfg (I'm using as3glue with a flash app)

I would be curious to know why the same version of firmata only runs on the 168 board with serproxy.cfg at 115200 and at 57600 on the 328 board and if there is any way to fix that going forward?

On a side note, my app requires a reset of the board before running which I was doing with the command line on the 168 boards with this command