Dave Jones b1913e5e39 Add events to all input devices
Fairly major tidy up of the hierarchy as well. There's now a trivial
base class: InputDevice which simply permits reading of state.
WaitableInputDevice descends from this and introduces waitable events
and callbacks, and provides a hook for calling them but needs further
machinery to activate that hook.

DigitalInputDevice (crap name?) descends from WaitableInputDevice and
uses the standard RPi.GPIO callback mechanisms to handle events. This is
intended for use with trivial on/off devices with predictably small
bounce times.

Next is SmoothedInputDevice (crap name?) which also descends from
WaitableInputDevice. This includes a background threaded queue which
constantly monitors the state of the device and provides a running mean
of its state. This is compared to a threshold for determining active /
inactive state. This is intended for use with on/off devices that
"jitter" a lot and for which a running average is therefore appropriate
or for devices which provide an effectively analog readout (like
charging capacitor timings).

MonitorSensor and LightSensor now descend from SmoothedInputDevice, and
Button descends from DigitalInputDevice. All "concrete" classes provide
event aliases appropriate to their function (e.g. when_dark,
when_pressed, etc.)
2015-09-22 12:48:09 +01:00
2015-09-22 12:48:09 +01:00
2015-09-22 12:48:09 +01:00
2015-09-15 08:43:13 +01:00
2015-09-15 17:57:14 +01:00
2015-09-21 08:33:03 +01:00
2015-09-21 11:20:21 +01:00

========
gpiozero
========

A simple interface to everyday GPIO components used with Raspberry Pi

*A work in progress*

Motivation
==========

The "hello world" program in Java is at least 5 lines long, and contains 11
jargon words which students are taught to ignore.

The "hello world" program in Python is one simple line. However, the "hello
world" of physical computing in Python (flashing an LED) is similar to the Java
program: 6 lines of code to flash an LED.

Young children and beginners shouldn't need to sit and copy out several lines
of text they're told to ignore. They should be able to read their code and
understand what it means.

Install
=======

Install with pip::

    sudo pip install gpiozero
    sudo pip-3.2 install gpiozero

Usage
=====

Example usage for flashing an LED::

    from gpiozero import LED
    from time import sleep

    led = LED(2)

    while True:
        led.on()
        sleep(1)
        led.off()
        sleep(1)

Development
===========

This project is being developed on `GitHub`_. Join in:

* Provide suggestions
* Help design the `API`_
* Contribute to the code

Alternatively, email suggestions and feedback to ben@raspberrypi.org


.. _`GitHub`: https://github.com/RPi-Distro/python-gpiozero
.. _`API`: https://github.com/RPi-Distro/python-gpiozero/issues/7
Description
A simple interface to GPIO devices with Raspberry Pi
Readme 7.3 MiB
Languages
Python 98.8%
Makefile 1.2%