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.60.1.tar.gz (130.9 kB view details)

Uploaded Source

Built Distributions

wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl (285.5 kB view details)

Uploaded CPython 3.7m

wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl (284.6 kB view details)

Uploaded CPython 3.6m

wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl (265.6 kB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: wiringpi-2.60.1.tar.gz
  • Upload date:
  • Size: 130.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

File hashes

Hashes for wiringpi-2.60.1.tar.gz
Algorithm Hash digest
SHA256 b0c65d5d7c65d0bbef25c56d90237ca4098b1edabc528fb48dc6b61d62cd4b7d
MD5 78beceab8a759be2e6ab6e6d507f180c
BLAKE2b-256 d39c08eb589c718cda9f2168649f1952aa9cb3711dc93d765991a6741cf6a8b7

See more details on using hashes here.

File details

Details for the file wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl.

File metadata

  • Download URL: wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl
  • Upload date:
  • Size: 285.5 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

File hashes

Hashes for wiringpi-2.60.1-cp37-cp37m-linux_armv7l.whl
Algorithm Hash digest
SHA256 7a54e5a879b828eb113228b835a5dbf13695aae06c206ec11940641346fabc24
MD5 9fcefe281904487724de8c9b10f7cda3
BLAKE2b-256 ac6d29381c226c296df5896c1e6855acbd59d40fa8b7ee6e82b289cb9dd940ef

See more details on using hashes here.

File details

Details for the file wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl.

File metadata

  • Download URL: wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl
  • Upload date:
  • Size: 284.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

File hashes

Hashes for wiringpi-2.60.1-cp36-cp36m-linux_armv7l.whl
Algorithm Hash digest
SHA256 daf0570b5928f8824c366afedfacd78f2948577b527b43c5e525265dd5e7ad60
MD5 381f4085d7cdb809eb3ba61a9b8e10d4
BLAKE2b-256 73155853dd8775985ab1c43baee0492d628125765eefaa49b1840fae6266c914

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl
  • Upload date:
  • Size: 265.6 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.6

File hashes

Hashes for wiringpi-2.60.1-cp35-cp35m-linux_armv7l.whl
Algorithm Hash digest
SHA256 267120d890fd67ef3e630e52e8b671f9bc1a52ef227fcb5fff44cfe124ec4a4e
MD5 cf4ec2fe93d30cc5d1a34dbc4dfa2b25
BLAKE2b-256 235532c3abb6516bc8a2b0624063df3a800b3565a52adf46dd8e6740c99854b5

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