class pyfirmata.pyfirmata.Board(port, layout=None, baudrate=57600, name=None, timeout=None)

The Base class for any board.

add_cmd_handler(cmd, func)

Adds a command handler for a command.


Automatic setup based on Firmata’s “Capability Query”


Call this to exit cleanly.


Returns a version tuple (major, minor) for the firmata firmware on the board.


Returns the activated pin given by the pin definition. May raise an InvalidPinDefError or a PinAlreadyTakenError.

Parameters:pin_def – Pin definition as described below, but without the arduino name. So for example a:1:i.

‘a’ analog pin Pin number ‘i’ for input ‘d’ digital pin Pin number ‘o’ for output

‘p’ for pwm (Pulse-width modulation)

All seperated by :.


Reads and handles data from the microcontroller over the serial port. This method should be called in a main loop or in an Iterator instance to keep this boards pin values up to date.


Non-blocking time-out for t seconds.

send_sysex(sysex_cmd, data)

Sends a SysEx msg.

Parameters:sysex_cmd – A sysex command byte

: arg data: a bytearray of 7-bit bytes of arbitrary data

servo_config(pin, min_pulse=544, max_pulse=2400, angle=0)

Configure a pin as servo with min_pulse, max_pulse and first angle. min_pulse and max_pulse default to the arduino defaults.


Setup the Pin instances based on the given board layout.

class pyfirmata.pyfirmata.Pin(board, pin_number, type=2, port=None)

A Pin representation


Disable the reporting of an input pin.


Set an input pin to report values.


Mode of operation for the pin. Can be one of the pin modes: INPUT, OUTPUT, ANALOG, PWM. or SERVO (or UNAVAILABLE).


Returns the output value of the pin. This value is updated by the boards Board.iterate() method. Value is always in the range from 0.0 to 1.0.


Output a voltage from the pin

Parameters:value – Uses value as a boolean if the pin is in output mode, or expects a float from 0 to 1 if the pin is in PWM mode. If the pin is in SERVO the value should be in degrees.
class pyfirmata.pyfirmata.Port(board, port_number, num_pins=8)

An 8-bit port on the board.


Disable the reporting of the port.


Enable reporting of values for the whole port.


Set the output pins of the port to the correct state.