Search wiring.org.co:

This example is for Wiring version 1.0 build 0100+. If you have a previous version, use the examples included with your software. If you see any errors or have comments, please let us know.

EchoString
This sketch accepts strings and raw sysex messages and echos them back. This example code is in the public domain.

    #include <Firmata.h>

    byte analogPin;

    void stringCallback(char *myString)
    {
        Firmata.sendString(myString);
    }

    void sysexCallback(byte command, byte argc, byte*argv)
    {
        Serial.print(START_SYSEX, BYTE);
        Serial.print(command, BYTE);
        for (byte i=0; i<argc; i++) {
            Serial.print(argv[i], BYTE);
        }
        Serial.print(END_SYSEX, BYTE);
    }

    void setup()
    {
        Firmata.setFirmwareVersion(0, 1);
        Firmata.attach(STRING_DATA, stringCallback);
        Firmata.attach(START_SYSEX, sysexCallback);
        Firmata.begin(57600);
    }

    void loop()
    {
        while(Firmata.available()) {
            Firmata.processInput();
        }
    }