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

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

Uploaded Source

Built Distributions

wiringpi-2.44.5-cp35-cp35m-linux_armv7l.whl (259.9 kB view details)

Uploaded CPython 3.5m

wiringpi-2.44.5-cp34-cp34m-linux_armv7l.whl (240.7 kB view details)

Uploaded CPython 3.4m

wiringpi-2.44.5-cp27-cp27mu-linux_armv7l.whl (259.9 kB view details)

Uploaded CPython 2.7mu

File details

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

File metadata

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

File hashes

Hashes for wiringpi-2.44.5.tar.gz
Algorithm Hash digest
SHA256 0031568b312ff321967ff274df06784fc336750f42b2bb6fbbf9b48a51ba5633
MD5 451032caf38d880c46265e3f122822cb
BLAKE2b-256 eacaff6540e6b28142c094fd80286f65cdbc737f8b6f8b119f5a0ce51c12ec0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wiringpi-2.44.5-cp35-cp35m-linux_armv7l.whl
Algorithm Hash digest
SHA256 7e3d3b94c2f77d89181f6e2fca70316a5b0936d3cbf3ef12cc2367f4248e819e
MD5 32ec7162aeff0df76dff0b79a6de9baf
BLAKE2b-256 e4df7aebafb6c737869dec70cd0e307a3313479fd9db98852e7d64dbd455def6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wiringpi-2.44.5-cp34-cp34m-linux_armv7l.whl
Algorithm Hash digest
SHA256 4d580c127a8034b933dd27cb3a9311c47b8f33890aa65e83f50518828b8cc76e
MD5 660677769810fef9dc62b22dcd5edd79
BLAKE2b-256 f6efb2235bd92e4a1bcc67985658d146a14feadbb2622768da19c2e3a629d099

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wiringpi-2.44.5-cp27-cp27mu-linux_armv7l.whl
Algorithm Hash digest
SHA256 de0281751360167098d5d7b7ad0bd334786a2c8d149cf87fd1a6bb9d6e2f8de9
MD5 29b18de12997e9e2fe5f88bdaca528aa
BLAKE2b-256 02f854f3f1745f9d799814a510c747789b2461eb67ae8c0f6df6c8834abd6ad0

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