Skip to main content

A Python interface for the Firmata procotol

Project description

pyFirmata is a Python interface for the Firmata protocol. It is fully compatible with Firmata 2.1, and has some functionality of version 2.2. It runs on Python 2.7, 3.3 and 3.4.

Test status:

https://travis-ci.org/tino/pyFirmata.png?branch=master

Installation

The preferred way to install is with pip:

pip install pyfirmata

You can also install from source with python setup.py install. You will need to have setuptools installed:

git clone https://github.com/tino/pyFirmata
cd pyFirmata
python setup.py install

Usage

Basic usage:

>>> from pyfirmata import Arduino, util
>>> board = Arduino('/dev/tty.usbserial-A6008rIF')
>>> board.digital[13].write(1)

To use analog ports, it is probably handy to start an iterator thread. Otherwise the board will keep sending data to your serial, until it overflows:

>>> it = util.Iterator(board)
>>> it.start()
>>> board.analog[0].enable_reporting()
>>> board.analog[0].read()
0.661440304938

If you use a pin more often, it can be worth it to use the get_pin method of the board. It let’s you specify what pin you need by a string, composed of ‘a’ or ‘d’ (depending on wether you need an analog or digital pin), the pin number, and the mode (‘i’ for input, ‘o’ for output, ‘p’ for pwm). All seperated by :. Eg. a:0:i for analog 0 as input or d:3:p for digital pin 3 as pwm.:

>>> analog_0 = board.get_pin('a:0:i')
>>> analog_0.read()
0.661440304938
>>> pin3 = board.get_pin('d:3:p')
>>> pin3.write(0.6)

Board layout

If you want to use a board with a different layout than the standard Arduino or the Arduino Mega (for which there exist the shortcut classes pyfirmata.Arduino and pyfirmata.ArduinoMega), instantiate the Board class with a dictionary as the layout argument. This is the layout dict for the Mega for example:

>>> mega = {
...         'digital' : tuple(x for x in range(54)),
...         'analog' : tuple(x for x in range(16)),
...         'pwm' : tuple(x for x in range(2,14)),
...         'use_ports' : True,
...         'disabled' : (0, 1, 14, 15) # Rx, Tx, Crystal
...         }

Todo

The next things on my list are to implement the new protocol changes in firmata:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyFirmata-1.0.2.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyFirmata-1.0.2-py2.py3-none-any.whl (15.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pyFirmata-1.0.2.tar.gz.

File metadata

  • Download URL: pyFirmata-1.0.2.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyFirmata-1.0.2.tar.gz
Algorithm Hash digest
SHA256 81bc2704109161cee7c4c0544578be044a4be31d86fcb157c7bc53484015b634
MD5 fddd3d9882cb0a672f15877c9e1c17a9
BLAKE2b-256 907691f85168b5b94d9c8353a1879d7fba4465138853062a8504e3f8a62ab0ad

See more details on using hashes here.

File details

Details for the file pyFirmata-1.0.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pyFirmata-1.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f97c7fc3839746a1dcc915dcec7306f9e410c184229e62743358449ec576ce15
MD5 fcbc3cad7dbcc45533a475018e7615e8
BLAKE2b-256 df988adfa67d8c7115c497e46a2f1a6ce1869f552eb5bf731d6a9a1e2fbe2f3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page