Firmat doesn't work on IDE0022 and Duemilanove

I have done many labs on my Arduino Duemilanove. Now I want to evaluate Firmata. I use the following configuation.

Arduino IDE 0022 (quite old)
Arduino 2009
StandardFirmata2.2 from Arduino 0022 examples.
Serial :COM16 57600bps

Built and upload to board.

I used terminal program from www.firmata.org (http://www.pjrc.com/teensy/firmata_test/firmata_test.exe) to test the program. After selecting COM to COM16, I got nothing return. Then I use many third party programs to test it.

Nothing works!

Then I download a serial test pde to Arduino to test serial port. It works.

Finally I use a terminal program to send 0xF0 0x79 0xF7 to query firmware version. Nothing returns.

Is there any issue in Firmata library? Is there any plug and play demo available for Arduino Duemilanove?

I use the following configuation.

Arduino IDE 0022 (quite old)

Why?

Because I thought 0022 is quite mature.

Actually I have tested it with Arduino 0022 as well as v1.0.5/v1.5.1. Still I can not get any response from Arduino (StandardFirmata.ino). Since I don't have much experiences on debug Arduino debugging.

So I would like to ask if anyone has met same issue? Or just me alone? I suppose StandardFirmata should be tested by a lot of people.

UPDATE

I have to change the StandardFirmata example by myself to check out what's wrong with the libraries.

In setup() of StandardFirmata.pde, I add some printf() like following:

void setup() 
{
  Serial.begin(57600); // breakpoint 1
  Serial.println("setup_1, 57600bps");
  Firmata.setFirmwareVersion(FIRMATA_MAJOR_VERSION, FIRMATA_MINOR_VERSION);

  Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
  Firmata.attach(DIGITAL_MESSAGE, digitalWriteCallback);
  Firmata.attach(REPORT_ANALOG, reportAnalogCallback);
  Firmata.attach(REPORT_DIGITAL, reportDigitalCallback);
  Firmata.attach(SET_PIN_MODE, setPinModeCallback);
  Firmata.attach(START_SYSEX, sysexCallback);
  Firmata.attach(SYSTEM_RESET, systemResetCallback);
  

  
Firmata.begin(57600);  // breakpoint 2
  Serial.println("setup_2, 57600bps");
  systemResetCallback();  // reset to default config
}

Then I change the Firmata.cpp source file as following:

void FirmataClass::begin(long speed)
{
  Serial.begin(speed);
  Serial.println("begin__,57600");
  FirmataSerial = Serial;  
  
  blinkVersion();
  printVersion();
  printFirmwareVersion();
}

Guess what happens?
Arduino only prints out single "setup_1, 57600bps" once. Is there any restrictions for Serial port?

By using printf() in different positions of Firmata libraries, it behavior differently.

I doubt if 168P is not enough for running Firmata? It should run in 328P?

It should run in 328P?

On the few occasions I’ve uploaded the standard Firmata sketch to my Duemilanove (with 328), I’ve had no problems. The 168 may not have enough memory.

Thanks PaulS,

I have tested all the Firmata examples with my board on Arduino 1.0.5 on Duemilanove 168P and official firmata_test.exe from Firmata.org. Here is the test result.

Lab:

AllInputsFirmata
Filename identified, too many bytes
AnalogFirmata
Filename identified, too many bytes
EchoString
Filename identified, Only echo filename (Rx42)
I2CFirmata
Filename identified, Only echo filename (Rx36)
OldStandardFirmata
No filename identified, No response (Rx0)
ServoFirmata
Filename identified, Only echo filename (Rx40)
SimpleAnalogFirmata
Filename identified, too many bytes
SimpleDigitalFirmata
Filename identified, too many bytes
StandardFirmata
Filename no identified, Tx3 Rx0

Basically only StandardFirmata doesn’t work, the OldStandardFirmata may out of date. However since demo client software only works with StandardFirmata.ino. So I have to check other options for host software like Python ones.