Skip to content

Pure Python native GPIO access. Edge-triggered interrupts included.

License

Notifications You must be signed in to change notification settings

derekstavis/python-sysfs-gpio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Linux SysFS GPIO access via Python

This package offer Python classes to work with GPIO on Linux.

System Requirements

As this package relies on modern techniques provided by Linux kernel, so your kernel version should support at least EPoll and SysFS interfaces.

Package Requirements

This package is based on Twisted main loop. To build the package you will also need setuptools.

How to use it

  1. Download this repository
    git clone https://github.com/derekstavis/python-sysfs-gpio.git
  1. Inside it, issue:
    sudo python setup.py install
  1. On your code:
    # Import Twisted mainloop
    
    from twisted.internet import reactor
    
    # Import this package objects
    
    from sysfs.gpio import Controller, OUTPUT, INPUT, RISING
    
    # Refer to your chip GPIO numbers and set them this way
    
    Controller.available_pins = [1, 2, 3, 4]
    
    # Allocate a pin as Output signal
    
    pin = Controller.alloc_pin(1, OUTPUT)
    pin.set()   # Sets pin to high logic level
    pin.reset() # Sets pin to low logic level
    pin.read()  # Reads pin logic level
    
    # Allocate a pin as simple Input signal
    
    pin = Controller.alloc_pin(1, INPUT)
    pin.read()  # Reads pin logic level
    
    # Allocate a pin as level triggered Input signal
    
    def pin_changed(number, state):
        print("Pin '%d' changed to %d state" % (number, state))
    
    pin = Controller.alloc_pin(1, INPUT, pin_changed, RISING)
    pin.read()  # Reads pin logic level
  1. Don't forget to start reactor loop!
    reactor.run()

Contributing

If you think that there's work that can be done to make this module better (and that's the only certainty), fork this repo, make some changes and create a pull request. I will be glad to accept it! :)

About

Pure Python native GPIO access. Edge-triggered interrupts included.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages