mirror of
				https://github.com/KevinMidboe/python-gpiozero.git
				synced 2025-10-29 17:50:37 +00:00 
			
		
		
		
	Fix #565
Add mock pins docs and tidy up some other bits of the pins docs
This commit is contained in:
		@@ -135,36 +135,22 @@ Like the ``GPIOZERO_PIN_FACTORY`` value, these can be exported from your
 | 
				
			|||||||
    Sensible uses of multiple pin factories are given in :doc:`remote_gpio`.
 | 
					    Sensible uses of multiple pin factories are given in :doc:`remote_gpio`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RPi.GPIO
 | 
					Mock pins
 | 
				
			||||||
========
 | 
					=========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autoclass:: gpiozero.pins.rpigpio.RPiGPIOFactory
 | 
					There's also a :class:`gpiozero.pins.mock.MockFactory` which generates entirely
 | 
				
			||||||
 | 
					fake pins. This was originally intended for GPIO Zero developers who wish to
 | 
				
			||||||
 | 
					write tests for devices without having to have the physical device wired in to
 | 
				
			||||||
 | 
					their Pi. However, they have also proven relatively useful in developing GPIO
 | 
				
			||||||
 | 
					Zero scripts without having a Pi to hand. This pin factory will never be loaded
 | 
				
			||||||
 | 
					by default; it must be explicitly specified. For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autoclass:: gpiozero.pins.rpigpio.RPiGPIOPin
 | 
					.. literalinclude:: examples/mock_demo.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Several sub-classes of mock pins exist for emulating various other things
 | 
				
			||||||
RPIO
 | 
					(pins that do/don't support PWM, pins that are connected together, pins that
 | 
				
			||||||
====
 | 
					drive high after a delay, etc). Interested users are invited to read the GPIO
 | 
				
			||||||
 | 
					Zero test suite for further examples of usage.
 | 
				
			||||||
.. autoclass:: gpiozero.pins.rpio.RPIOFactory
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. autoclass:: gpiozero.pins.rpio.RPIOPin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PiGPIO
 | 
					 | 
				
			||||||
======
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. autoclass:: gpiozero.pins.pigpio.PiGPIOFactory
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. autoclass:: gpiozero.pins.pigpio.PiGPIOPin
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Native
 | 
					 | 
				
			||||||
======
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. autoclass:: gpiozero.pins.native.NativeFactory
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. autoclass:: gpiozero.pins.native.NativePin
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Base classes
 | 
					Base classes
 | 
				
			||||||
@@ -196,22 +182,62 @@ Base classes
 | 
				
			|||||||
    :members:
 | 
					    :members:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Utilities
 | 
					RPi.GPIO
 | 
				
			||||||
=========
 | 
					========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The pins module also contains a database of information about the various
 | 
					.. currentmodule:: gpiozero.pins.rpigpio
 | 
				
			||||||
revisions of Raspberry Pi. This is used internally to raise warnings when
 | 
					 | 
				
			||||||
non-physical pins are used, or to raise exceptions when pull-downs are
 | 
					 | 
				
			||||||
requested on pins with physical pull-up resistors attached. The following
 | 
					 | 
				
			||||||
functions and classes can be used to query this database:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. currentmodule:: gpiozero
 | 
					.. autoclass:: gpiozero.pins.rpigpio.RPiGPIOFactory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autofunction:: pi_info
 | 
					.. autoclass:: gpiozero.pins.rpigpio.RPiGPIOPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autoclass:: PiBoardInfo
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autoclass:: HeaderInfo
 | 
					RPIO
 | 
				
			||||||
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. autoclass:: PinInfo
 | 
					.. currentmodule:: gpiozero.pins.rpio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.rpio.RPIOFactory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.rpio.RPIOPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PiGPIO
 | 
				
			||||||
 | 
					======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. currentmodule:: gpiozero.pins.pigpio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.pigpio.PiGPIOFactory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.pigpio.PiGPIOPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Native
 | 
				
			||||||
 | 
					======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. currentmodule:: gpiozero.pins.native
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.native.NativeFactory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.native.NativePin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mock
 | 
				
			||||||
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. currentmodule:: gpiozero.pins.mock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockFactory
 | 
				
			||||||
 | 
					    :members:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockPin
 | 
				
			||||||
 | 
					    :members:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockPWMPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockConnectedPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockChargingPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: gpiozero.pins.mock.MockTriggerPin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								docs/api_utils.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								docs/api_utils.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					=========
 | 
				
			||||||
 | 
					Utilities
 | 
				
			||||||
 | 
					=========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. currentmodule:: gpiozero
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The GPIO Zero library also contains a database of information about the various
 | 
				
			||||||
 | 
					revisions of Raspberry Pi. This is used internally to raise warnings when
 | 
				
			||||||
 | 
					non-physical pins are used, or to raise exceptions when pull-downs are
 | 
				
			||||||
 | 
					requested on pins with physical pull-up resistors attached. The following
 | 
				
			||||||
 | 
					functions and classes can be used to query this database:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autofunction:: pi_info
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: PiBoardInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: HeaderInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. autoclass:: PinInfo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										28
									
								
								docs/examples/mock_demo.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/examples/mock_demo.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					from gpiozero.pins.mock import MockFactory
 | 
				
			||||||
 | 
					from gpiozero import Device, Button, LED
 | 
				
			||||||
 | 
					from time import sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set the default pin factory to a mock factory
 | 
				
			||||||
 | 
					Device.pin_factory = MockFactory()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Construct a couple of devices attached to mock pins 16 and 17, and link the
 | 
				
			||||||
 | 
					# devices
 | 
				
			||||||
 | 
					led = LED(17)
 | 
				
			||||||
 | 
					btn = Button(16)
 | 
				
			||||||
 | 
					led.source = btn.values
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Here the button isn't "pushed" so the LED's value should be False
 | 
				
			||||||
 | 
					print(led.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get a reference to mock pin 16 (used by the button)
 | 
				
			||||||
 | 
					btn_pin = Device.pin_factory.pin(16)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Drive the pin low (this is what would happen eletrically when the button is
 | 
				
			||||||
 | 
					# pushed)
 | 
				
			||||||
 | 
					btn_pin.drive_low()
 | 
				
			||||||
 | 
					sleep(0.1) # give source some time to re-read the button state
 | 
				
			||||||
 | 
					print(led.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					btn_pin.drive_high()
 | 
				
			||||||
 | 
					sleep(0.1)
 | 
				
			||||||
 | 
					print(led.value)
 | 
				
			||||||
@@ -17,6 +17,7 @@ Table of Contents
 | 
				
			|||||||
    api_generic
 | 
					    api_generic
 | 
				
			||||||
    api_tools
 | 
					    api_tools
 | 
				
			||||||
    api_pins
 | 
					    api_pins
 | 
				
			||||||
 | 
					    api_utils
 | 
				
			||||||
    api_exc
 | 
					    api_exc
 | 
				
			||||||
    cli_tools
 | 
					    cli_tools
 | 
				
			||||||
    source_values
 | 
					    source_values
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,15 +30,9 @@ from ..exc import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Factory(object):
 | 
					class Factory(object):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Generates pins, SPI, and I2C interfaces for devices. This is an abstract
 | 
					    Generates pins and SPI interfaces for devices. This is an abstract
 | 
				
			||||||
    base class for pin factories. Descendents *must* override the following
 | 
					    base class for pin factories. Descendents *may* override the following
 | 
				
			||||||
    methods:
 | 
					    methods, if applicable:
 | 
				
			||||||
 | 
					 | 
				
			||||||
    * :meth:`_get_address`
 | 
					 | 
				
			||||||
    * :meth:`pin_address`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Descendents *may* additionally override the following methods, if
 | 
					 | 
				
			||||||
    applicable:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * :meth:`close`
 | 
					    * :meth:`close`
 | 
				
			||||||
    * :meth:`reserve_pins`
 | 
					    * :meth:`reserve_pins`
 | 
				
			||||||
@@ -129,9 +123,6 @@ class Factory(object):
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        raise PinSPIUnsupported('SPI not supported by this pin factory')
 | 
					        raise PinSPIUnsupported('SPI not supported by this pin factory')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _get_address(self):
 | 
					 | 
				
			||||||
        raise NotImplementedError
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    def _get_pi_info(self):
 | 
					    def _get_pi_info(self):
 | 
				
			||||||
        return None
 | 
					        return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -216,7 +216,7 @@ class MockChargingPin(MockPin):
 | 
				
			|||||||
class MockTriggerPin(MockPin):
 | 
					class MockTriggerPin(MockPin):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    This derivative of :class:`MockPin` is intended to be used with another
 | 
					    This derivative of :class:`MockPin` is intended to be used with another
 | 
				
			||||||
    :class:`MockPin` to emulate a distance sensor. Set :attr:`echo_pin` to the
 | 
					    :class:`MockPin` to emulate a distance sensor. Set *echo_pin* to the
 | 
				
			||||||
    corresponding pin instance. When this pin is driven high it will trigger
 | 
					    corresponding pin instance. When this pin is driven high it will trigger
 | 
				
			||||||
    the echo pin to drive high for the echo time.
 | 
					    the echo pin to drive high for the echo time.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@@ -410,6 +410,14 @@ class MockSPIDevice(object):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MockFactory(LocalPiFactory):
 | 
					class MockFactory(LocalPiFactory):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Factory for generating mock pins. The *revision* parameter specifies what
 | 
				
			||||||
 | 
					    revision of Pi the mock factory pretends to be (this affects the result of
 | 
				
			||||||
 | 
					    the :attr:`pi_info` attribute as well as where pull-ups are assumed to be).
 | 
				
			||||||
 | 
					    The *pin_class* attribute specifies which mock pin class will be generated
 | 
				
			||||||
 | 
					    by the :meth:`pin` method by default. This can be changed after
 | 
				
			||||||
 | 
					    construction by modifying the :attr:`pin_class` attribute.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    def __init__(
 | 
					    def __init__(
 | 
				
			||||||
            self, revision=os.getenv('GPIOZERO_MOCK_REVISION', 'a02082'),
 | 
					            self, revision=os.getenv('GPIOZERO_MOCK_REVISION', 'a02082'),
 | 
				
			||||||
            pin_class=os.getenv('GPIOZERO_MOCK_PIN_CLASS', MockPin)):
 | 
					            pin_class=os.getenv('GPIOZERO_MOCK_PIN_CLASS', MockPin)):
 | 
				
			||||||
@@ -427,10 +435,22 @@ class MockFactory(LocalPiFactory):
 | 
				
			|||||||
        return self._revision
 | 
					        return self._revision
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def reset(self):
 | 
					    def reset(self):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Clears the pins and reservations sets. This is primarily useful in
 | 
				
			||||||
 | 
					        test suites to ensure the pin factory is back in a "clean" state before
 | 
				
			||||||
 | 
					        the next set of tests are run.
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
        self.pins.clear()
 | 
					        self.pins.clear()
 | 
				
			||||||
        self._reservations.clear()
 | 
					        self._reservations.clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def pin(self, spec, pin_class=None, **kwargs):
 | 
					    def pin(self, spec, pin_class=None, **kwargs):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        The pin method for :class:`MockFactory` additionally takes a *pin_class*
 | 
				
			||||||
 | 
					        attribute which can be used to override the class' :attr:`pin_class`
 | 
				
			||||||
 | 
					        attribute. Any additional keyword arguments will be passed along to the
 | 
				
			||||||
 | 
					        pin constructor (useful with things like :class:`MockConnectedPin` which
 | 
				
			||||||
 | 
					        expect to be constructed with another pin).
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
        if pin_class is None:
 | 
					        if pin_class is None:
 | 
				
			||||||
            pin_class = self.pin_class
 | 
					            pin_class = self.pin_class
 | 
				
			||||||
        n = self._to_gpio(spec)
 | 
					        n = self._to_gpio(spec)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -178,6 +178,9 @@ class NativeFactory(LocalPiFactory):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NativePin(LocalPiPin):
 | 
					class NativePin(LocalPiPin):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Native pin implementation. See :class:`NativeFactory` for more information.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    GPIO_FUNCTIONS = {
 | 
					    GPIO_FUNCTIONS = {
 | 
				
			||||||
        'input':   0b000,
 | 
					        'input':   0b000,
 | 
				
			||||||
        'output':  0b001,
 | 
					        'output':  0b001,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -133,6 +133,12 @@ class PiGPIOFactory(PiFactory):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PiGPIOPin(PiPin):
 | 
					class PiGPIOPin(PiPin):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Pin implementation for the `pigpio`_ library. See :class:`PiGPIOFactory`
 | 
				
			||||||
 | 
					    for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. _pigpio: http://abyz.co.uk/rpi/pigpio/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    _CONNECTIONS = {} # maps (host, port) to (connection, pi_info)
 | 
					    _CONNECTIONS = {} # maps (host, port) to (connection, pi_info)
 | 
				
			||||||
    GPIO_FUNCTIONS = {
 | 
					    GPIO_FUNCTIONS = {
 | 
				
			||||||
        'input':   pigpio.INPUT,
 | 
					        'input':   pigpio.INPUT,
 | 
				
			||||||
@@ -290,6 +296,12 @@ class PiGPIOPin(PiPin):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PiGPIOHardwareSPI(SPI, Device):
 | 
					class PiGPIOHardwareSPI(SPI, Device):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Hardware SPI implementation for the `pigpio`_ library. Uses the ``spi_*``
 | 
				
			||||||
 | 
					    functions from the pigpio API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. _pigpio: http://abyz.co.uk/rpi/pigpio/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    def __init__(self, factory, port, device):
 | 
					    def __init__(self, factory, port, device):
 | 
				
			||||||
        self._port = port
 | 
					        self._port = port
 | 
				
			||||||
        self._device = device
 | 
					        self._device = device
 | 
				
			||||||
@@ -386,6 +398,12 @@ class PiGPIOHardwareSPI(SPI, Device):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PiGPIOSoftwareSPI(SPI, Device):
 | 
					class PiGPIOSoftwareSPI(SPI, Device):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Software SPI implementation for the `pigpio`_ library. Uses the ``bb_spi_*``
 | 
				
			||||||
 | 
					    functions from the pigpio API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. _pigpio: http://abyz.co.uk/rpi/pigpio/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    def __init__(self, factory, clock_pin, mosi_pin, miso_pin, select_pin):
 | 
					    def __init__(self, factory, clock_pin, mosi_pin, miso_pin, select_pin):
 | 
				
			||||||
        self._closed = True
 | 
					        self._closed = True
 | 
				
			||||||
        self._select_pin = select_pin
 | 
					        self._select_pin = select_pin
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -58,6 +58,12 @@ class RPiGPIOFactory(LocalPiFactory):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RPiGPIOPin(LocalPiPin):
 | 
					class RPiGPIOPin(LocalPiPin):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Pin implementation for the `RPi.GPIO`_ library. See :class:`RPiGPIOFactory`
 | 
				
			||||||
 | 
					    for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. _RPi.GPIO: https://pypi.python.org/pypi/RPi.GPIO
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    GPIO_FUNCTIONS = {
 | 
					    GPIO_FUNCTIONS = {
 | 
				
			||||||
        'input':   GPIO.IN,
 | 
					        'input':   GPIO.IN,
 | 
				
			||||||
        'output':  GPIO.OUT,
 | 
					        'output':  GPIO.OUT,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,6 +64,12 @@ class RPIOFactory(LocalPiFactory):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RPIOPin(LocalPiPin):
 | 
					class RPIOPin(LocalPiPin):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Pin implementation for the `RPIO`_ library. See :class:`RPIOFactory` for
 | 
				
			||||||
 | 
					    more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    .. _RPIO: https://pythonhosted.org/RPIO/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    GPIO_FUNCTIONS = {
 | 
					    GPIO_FUNCTIONS = {
 | 
				
			||||||
        'input':   RPIO.IN,
 | 
					        'input':   RPIO.IN,
 | 
				
			||||||
        'output':  RPIO.OUT,
 | 
					        'output':  RPIO.OUT,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user