-
Notifications
You must be signed in to change notification settings - Fork 18
Usage
4ntoine edited this page Dec 12, 2011
·
6 revisions
Now it is implemented in object-oriented style, so use message object to perform command.
See name.antonsmirnov.firmata.message
package for the message types.
// ... (serial init)
Firmata firmata = new Firmata(serial);
// implement all messages from the board listener
firmata.setListener(new Firmata.Listener() {
public void onAnalogMessageReceived(AnalogMessage message) {}
public void onDigitalMessageReceived(DigitalMessage message) {}
public void onFirmwareVersionMessageReceived(FirmwareVersionMessage message) {}
public void onProtocolVersionMessageReceived(ProtocolVersionMessage message) {}
public void onSysexMessageReceived(SysexMessage message) {}
public void onStringSysexMessageReceived(StringSysexMessage message) {}
public void onUnknownByteReceived(int byteValue) {}
});
// .. or extend Stub to override few methods only
firmata.setListener(new Firmata.StubListener() {
public void onSysexMessageReceived(SysexMessage message) {
// do something
}
});
// send commands to the board
firmata.send(new SetPinModeMessage(pin, SetPinModeMessage.PIN_MODE.PWM.getMode()));
firmata.send(new AnalogMessage(pin, value));
Use concrete name.antonsmirnov.firmata.message.factory.MessageFactory
inheriters to build commands with validating against concrete Arduino board:
MessageFactory board = new Duemilanove(); // Arduino Duemilanove board
final int invalid_pin = 1;
firmata.send(board.pinMode(invalid_pin, SetPinModeMessage.PIN_MODE.PWM.getMode()));
In case of invalid arguments (pins, values, inaccording pin mode and operation) you'll get MessageValidationException:
name.antonsmirnov.firmata.message.factory.MessageValidationException: Allowed analog out (PWM) pins are [3, 5, 6, 9, 10, 11]
See tests as usage examples.