A module to control Raspberry Pi GPIO channels
Project description
This package provides a class to control the GPIO on a Raspberry Pi.
Note that this module is unsuitable for real-time or timing critical applications. This is because you can not predict when Python will be busy garbage collecting. It also runs under the Linux kernel which is not suitable for real time applications - it is multitasking O/S and another process may be given priority over the CPU, causing jitter in your program. If you are after true real-time performance and predictability, buy yourself an Arduino http://www.arduino.cc !
Note that the current release does not support SPI, I2C, PWM or serial functionality on the RPi yet. This is planned for the near future - watch this space! One-wire functionality is also planned.
Example Usage :
import RPi.GPIO as GPIO # to use Raspberry Pi board pin numbers GPIO.setmode(GPIO.BOARD) # set up GPIO output channel GPIO.setup(12, GPIO.OUT) # set RPi board pin 12 high GPIO.output(12, GPIO.HIGH) # set up GPIO output channel with an initial state GPIO.setup(26, GPIO.OUT, initial=GPIO.LOW) # set up GPIO input with pull-up control # (pull_up_down be PUD_OFF, PUD_UP or PUD_DOWN, default PUD_OFF) GPIO.setup(11, GPIO.IN, pull_up_down=GPIO.PUD_UP) # input from RPi board pin 11 input_value = GPIO.input(11) # set up rising edge detection (EXPERIMENTAL) set_rising_event(11) # check for an event (EXPERIMENTAL) if GPIO.event_detected(11): print('Rising edge detected!') # set up falling edge detection (EXPERIMENTAL) GPIO.set_rising_event(11, enable=False) # disable rising edge detection (as set above) GPIO.set_falling_event(11) # set up high detection (EXPERIMENTAL) GPIO.set_falling_event(11, enable=False) # disable falling edge detection (as set above) GPIO.set_high_event(11) # set up low detection (EXPERIMENTAL) GPIO.set_high_event(11, enable=False) # disable high detection (as set above) GPIO.set_low_event(11) # to change to BCM GPIO numbering GPIO.setmode(GPIO.BCM) # to reset every channel that has been set up by this program to INPUT with no pullup/pulldown and no event detection. GPIO.cleanup()
Change Log
0.4.2a
Fix for installing on Arch Linux (Python 3.3) (issue 20)
Initial value when setting a channel as an output (issue 19)
0.4.1a
Added VERSION
Permit input() of channels set as outputs (Eric Ptak <trouch@trouch.com>)
0.4.0a
Added support for Revision 2 boards
Added RPI_REVISION
Added cleanup() function and removed automatic reset functionality on program exit
Added get_function() to read existing GPIO channel functionality (suggestion from Eric Ptak <trouch@trouch.com>)
Added set_rising_event()
Added set_falling_event()
Added set_high_event()
Added set_low_event()
Added event_detected()
Added test/test.py
Converted debian to armhf
Fixed C function short_wait() (thanks to Thibault Porteboeuf <thibaultporteboeuf@gmail.com>)
0.3.1a
Fixed critical bug with swapped high/low state on outputs
Added pull-up / pull-down setup functionality for inputs
0.3.0a
Rewritten as a C extension
Now uses /dev/mem and SoC registers instead of /sys/class/gpio
Faster!
Make call to GPIO.setmode() mandatory
Added GPIO.HIGH and GPIO.LOW constants
0.2.0
Changed status from alpha to beta
Added setmode() to be able to use BCM GPIO 00.nn channel numbers
Renamed InvalidPinException to InvalidChannelException
0.1.0
Fixed direction bug
Added MANIFEST.in (to include missing file)
Changed GPIO channel number to pin number
Tested and working!
0.0.3a
Added GPIO table
Refactored
Fixed a few critical bugs
Still completely untested!
0.0.2a
Internal refactoring. Still completely untested!
0.0.1a
First version. Completely untested until I can get hold of a Raspberry Pi!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.