Skip to main content

A python interface to WiringPi 2.0 library which allows for easily interfacing with the GPIO pins of the Raspberry Pi. Also supports i2c and SPI.

Project description

This is an unofficial port of Gordon’s WiringPi library. Please do not email Gordon if you have issues, he will not be able to help.

For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG

WiringPi for Python

WiringPi: An implementation of most of the Arduino Wiring functions for the Raspberry Pi.

WiringPi implements new functions for managing IO expanders.

Quick Install

PyPI version badge

The library is packaged on PyPI and can be installed with pip:

pip install wiringpi

Usage

import wiringpi

# One of the following MUST be called before using IO functions:
wiringpi.wiringPiSetup()      # For sequential pin numbering
# OR
wiringpi.wiringPiSetupSys()   # For /sys/class/gpio with GPIO pin numbering
# OR
wiringpi.wiringPiSetupGpio()  # For GPIO pin numbering

General IO:

wiringpi.pinMode(6, 1)       # Set pin 6 to 1 ( OUTPUT )
wiringpi.digitalWrite(6, 1)  # Write 1 ( HIGH ) to pin 6
wiringpi.digitalRead(6)      # Read pin 6

Setting up a peripheral:

WiringPi supports expanding your range of available “pins” by setting up a port expander. The implementation details of your port expander will be handled transparently, and you can write to the additional pins (starting from PIN_OFFSET >= 64) as if they were normal pins on the Pi.

wiringpi.mcp23017Setup(PIN_OFFSET, I2C_ADDR)

This example was tested on a quick2wire board with one digital IO expansion board connected via I2C:

wiringpi.mcp23017Setup(65, 0x20)
wiringpi.pinMode(65, 1)
wiringpi.digitalWrite(65, 1)

Soft Tone:

Hook a speaker up to your Pi and generate music with softTone. Also useful for generating frequencies for other uses such as modulating A/C.

wiringpi.softToneCreate(PIN)
wiringpi.softToneWrite(PIN, FREQUENCY)

Bit shifting:

wiringpi.shiftOut(1, 2, 0, 123)  # Shift out 123 (b1110110, byte 0-255) to data pin 1, clock pin 2

Serial:

serial = wiringpi.serialOpen('/dev/ttyAMA0', 9600)  # Requires device/baud and returns an ID
wiringpi.serialPuts(serial, "hello")
wiringpi.serialClose(serial)  # Pass in ID

SPI:

The wiringPiSPIDataRW() function needs to be passed a bytes object in Python 3. In Python 2, it takes a string. The following should work in either Python 2 or 3:

wiringpi.wiringPiSPISetup(channel, speed)
buf = bytes([your data here])
retlen, retdata = wiringpi.wiringPiSPIDataRW(0, buf)

Now, retlen will contain the number of bytes received/read by the call. retdata will contain the data itself, and in Python 3, buf will have been modified to contain it as well (that won’t happen in Python 2, because then buf is a string, and strings are immutable).

Full details of the API at: http://www.wiringpi.com

Manual Build

Get/setup repo

git clone --recursive https://github.com/WiringPi/WiringPi-Python.git
cd WiringPi-Python

Don’t forget the --recursive; it is required to also pull in the WiringPi C code from its own repository.

Prerequisites

To rebuild the bindings you must first have installed swig, python-dev, and python-setuptools (or their python3- equivalents). WiringPi should also be installed system-wide for access to the gpio tool.

sudo apt-get install python-dev python-setuptools swig wiringpi

Build & install with

sudo python setup.py install

Or Python 3:

sudo python3 setup.py install

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

wiringpi-2.46.0.tar.gz (133.6 kB view details)

Uploaded Source

Built Distributions

wiringpi-2.46.0-cp35-cp35m-linux_armv7l.whl (262.5 kB view details)

Uploaded CPython 3.5m

wiringpi-2.46.0-cp34-cp34m-linux_armv7l.whl (262.2 kB view details)

Uploaded CPython 3.4m

wiringpi-2.46.0-cp27-cp27mu-linux_armv7l.whl (262.4 kB view details)

Uploaded CPython 2.7mu

File details

Details for the file wiringpi-2.46.0.tar.gz.

File metadata

  • Download URL: wiringpi-2.46.0.tar.gz
  • Upload date:
  • Size: 133.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for wiringpi-2.46.0.tar.gz
Algorithm Hash digest
SHA256 1be697c3a97274effcf09d6bf978a795734aaa0080f9d09b080c6a263f1ac31d
MD5 487872972c666634fca0cd3c52c1ee14
BLAKE2b-256 1b9b02f4a84697f53ab1dc2783398956dd252cae71638976553f224a753a15ef

See more details on using hashes here.

File details

Details for the file wiringpi-2.46.0-cp35-cp35m-linux_armv7l.whl.

File metadata

File hashes

Hashes for wiringpi-2.46.0-cp35-cp35m-linux_armv7l.whl
Algorithm Hash digest
SHA256 e93566b21e96125f787754c2e2fd090e462cb005ea07f4cc150ac2fc390edb6d
MD5 793b5e2294b9277c6bf1072a83cd96d8
BLAKE2b-256 ce1f74901a3c842daeb22447c07c48826d2c6aeb0d988370792e2aa2221f7a36

See more details on using hashes here.

File details

Details for the file wiringpi-2.46.0-cp34-cp34m-linux_armv7l.whl.

File metadata

File hashes

Hashes for wiringpi-2.46.0-cp34-cp34m-linux_armv7l.whl
Algorithm Hash digest
SHA256 302b971bb6dd645f9baf197eec4556ef32ff429971445ed1f2029e5d0d207248
MD5 db8f58c9e0455e4bfa2442d43e6ae194
BLAKE2b-256 887f5b8e6150adee22c1f378cc3eae246dac9fe4f6647f1e56e8910063f81267

See more details on using hashes here.

File details

Details for the file wiringpi-2.46.0-cp27-cp27mu-linux_armv7l.whl.

File metadata

File hashes

Hashes for wiringpi-2.46.0-cp27-cp27mu-linux_armv7l.whl
Algorithm Hash digest
SHA256 93201cdfd9454e4bed79ce34e8dac7803c6bdbf167e37e66391921e651024789
MD5 1bbf2dbef2aa6671d58f5abfce4ef506
BLAKE2b-256 04a55eb7b2f0804eddbe0f8be4334ab8de9c61bdac58d44dc8a0b870a57c55fe

See more details on using hashes here.

Supported by

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