mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 17:50:37 +00:00
Update docstrings and add initial set of documentation
This commit is contained in:
23
README.rst
23
README.rst
@@ -4,7 +4,7 @@ gpiozero
|
|||||||
|
|
||||||
A simple interface to everyday GPIO components used with Raspberry Pi
|
A simple interface to everyday GPIO components used with Raspberry Pi
|
||||||
|
|
||||||
*A work in progress*
|
v0.6.0 Public beta
|
||||||
|
|
||||||
Motivation
|
Motivation
|
||||||
==========
|
==========
|
||||||
@@ -28,33 +28,38 @@ Install with pip::
|
|||||||
sudo pip install gpiozero
|
sudo pip install gpiozero
|
||||||
sudo pip-3.2 install gpiozero
|
sudo pip-3.2 install gpiozero
|
||||||
|
|
||||||
|
Both Python 3 and Python 2 are supported. Python 3 is recommended!
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
Example usage for flashing an LED::
|
Example usage for lighting up an LED::
|
||||||
|
|
||||||
from gpiozero import LED
|
from gpiozero import LED
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
led = LED(2)
|
led = LED(2)
|
||||||
|
|
||||||
while True:
|
|
||||||
led.on()
|
led.on()
|
||||||
sleep(1)
|
|
||||||
led.off()
|
Documentation
|
||||||
sleep(1)
|
=============
|
||||||
|
|
||||||
|
Comprehensive documentation is available at `pythonhosted.org/gpiozero`_.
|
||||||
|
|
||||||
Development
|
Development
|
||||||
===========
|
===========
|
||||||
|
|
||||||
This project is being developed on `GitHub`_. Join in:
|
This project is being developed on `GitHub`_. Join in:
|
||||||
|
|
||||||
* Provide suggestions
|
* Provide suggestions, report bugs and ask questions as `Issues`_
|
||||||
* Help design the `API`_
|
* Help design the `API`_
|
||||||
* Contribute to the code
|
* Contribute to the code
|
||||||
|
|
||||||
Alternatively, email suggestions and feedback to ben@raspberrypi.org
|
Alternatively, email suggestions and feedback to ben@raspberrypi.org or add to the `Google Doc`_.
|
||||||
|
|
||||||
|
|
||||||
|
.. _`pythonhosted.org/gpiozero`: http://pythonhosted.org/gpiozero
|
||||||
|
.. _`pythonhosted.org/gpiozero`: http://pythonhosted.org/gpiozero/issues
|
||||||
.. _`GitHub`: https://github.com/RPi-Distro/python-gpiozero
|
.. _`GitHub`: https://github.com/RPi-Distro/python-gpiozero
|
||||||
.. _`API`: https://github.com/RPi-Distro/python-gpiozero/issues/7
|
.. _`API`: https://github.com/RPi-Distro/python-gpiozero/issues/7
|
||||||
|
.. _`Google Doc`: https://docs.google.com/document/d/1EbbVjdgXbKVPFlgH_pEEtPZ0zOZVSPHT4sQNW88Am7w/edit?usp=sharing
|
||||||
|
|||||||
227
docs/boards.md
Normal file
227
docs/boards.md
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
# Add-on boards and accessories
|
||||||
|
|
||||||
|
These additional interfaces have been provided to group collections of components together for ease of use, and as examples. They are made up of components from the various [input devices](inputs.md) and [output devices](outputs.md) provided by `gpiozero`. See those pages for more information on using components individually.
|
||||||
|
|
||||||
|
*Note all GPIO pin numbers use BCM numbering. See the [notes](notes.md) page for more information.*
|
||||||
|
|
||||||
|
## LED Board
|
||||||
|
|
||||||
|
A Generic LED Board or collection of LEDs.
|
||||||
|
|
||||||
|
Ensure the `LEDBoard` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LEDBoard
|
||||||
|
```
|
||||||
|
|
||||||
|
Create an `LEDBoard` object by passing in a list of the LED pin numbers:
|
||||||
|
|
||||||
|
```python
|
||||||
|
leds = LEDBoard([2, 3, 4, 5, 6])
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all the LEDs on. | None |
|
||||||
|
| `off()` | Turn all the LEDs off. | None |
|
||||||
|
| `toggle()` | Toggle all the LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all the LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
|
||||||
|
## Traffic Lights
|
||||||
|
|
||||||
|
Generic Traffic Lights set.
|
||||||
|
|
||||||
|
Ensure the `TrafficLights` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import TrafficLights
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `TrafficLights` object by passing in the LED pin numbers by name:
|
||||||
|
|
||||||
|
```python
|
||||||
|
traffic = TrafficLights(red=2, amber=3, green=4)
|
||||||
|
```
|
||||||
|
|
||||||
|
or just in order (red, amber, green):
|
||||||
|
|
||||||
|
```python
|
||||||
|
traffic = TrafficLights(2, 3, 4)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all three LEDs on. | None |
|
||||||
|
| `off()` | Turn all three LEDs off. | None |
|
||||||
|
| `toggle()` | Toggle all three LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all three LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `red` | Direct access to the red light as a single `LED` object. | LED |
|
||||||
|
| `amber` | Direct access to the amber light as a single `LED` object. | LED |
|
||||||
|
| `green` | Direct access to the green light as a single `LED` object. | LED |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
|
||||||
|
## PiLITEr
|
||||||
|
|
||||||
|
Ciseco Pi-LITEr: strip of 8 very bright LEDs.
|
||||||
|
|
||||||
|
Ensure the `PiLiter` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import PiLiter
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `PiLiter` object:
|
||||||
|
|
||||||
|
```python
|
||||||
|
lite = PiLiter()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all eight LEDs on. | None |
|
||||||
|
| `off()` | Turn all eight LEDs off. | None |
|
||||||
|
| `toggle()` | Toggle all eight LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all eight LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
|
||||||
|
## PI-TRAFFIC
|
||||||
|
|
||||||
|
Low Voltage Labs PI-TRAFFIC: vertical traffic lights board on pins 9, 10 and 11.
|
||||||
|
|
||||||
|
Ensure the `PiTraffic` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import PiTraffic
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `PiTraffic` object:
|
||||||
|
|
||||||
|
```python
|
||||||
|
traffic = PiTraffic()
|
||||||
|
```
|
||||||
|
|
||||||
|
`PiTraffic` provides an identical interface to the generic `TrafficLights` interface, without the need to specify the pin numbers to be used.
|
||||||
|
|
||||||
|
To use the PI-TRAFFIC board on another set of pins, just use the generic `TrafficLights` interface.
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all three LEDs on. | None |
|
||||||
|
| `off()` | Turn all three LEDs off. | None |
|
||||||
|
| `toggle()` | Toggle all three LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all three LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `red` | Direct access to the red light as a single `LED` object. | LED |
|
||||||
|
| `amber` | Direct access to the amber light as a single `LED` object. | LED |
|
||||||
|
| `green` | Direct access to the green light as a single `LED` object. | LED |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
|
||||||
|
## Fish Dish
|
||||||
|
|
||||||
|
Pi Supply Fish Dish: traffic light LEDs, a button and a buzzer.
|
||||||
|
|
||||||
|
Ensure the `FishDish` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import FishDish
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `FishDish` object:
|
||||||
|
|
||||||
|
```python
|
||||||
|
fish = FishDish()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all the board's output components on. | None |
|
||||||
|
| `off()` | Turn all the board's output components off. | None |
|
||||||
|
| `toggle()` | Toggle all the board's output components. For each component, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all the board's output components turn on and off repeatedly. | `on_time=1`, `off_time=1`, `nx=1`, `background=True` |
|
||||||
|
| `lights_on()` | Turn all three LEDs on. | None |
|
||||||
|
| `lights_off()` | Turn all three LEDs off. | None |
|
||||||
|
| `toggle_lights()` | Toggle all the board's LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink_lights()` | Make all the board's LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `red` | Direct access to the red light as a single `LED` object. | LED |
|
||||||
|
| `amber` | Direct access to the amber light as a single `LED` object. | LED |
|
||||||
|
| `green` | Direct access to the green light as a single `LED` object. | LED |
|
||||||
|
| `buzzer` | Direct access to the buzzer as a single `Buzzer` object. | LED |
|
||||||
|
| `button` | Direct access to the button as a single `Button` object. | LED |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
| `all` | A collection of the board's output components to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
|
||||||
|
## Traffic HAT
|
||||||
|
|
||||||
|
Ryanteck Traffic HAT: traffic light LEDs, a button and a buzzer.
|
||||||
|
|
||||||
|
Ensure the `TrafficHat` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import TrafficHat
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `TrafficHat` object by passing in the LED pin numbers by name:
|
||||||
|
|
||||||
|
```python
|
||||||
|
traffic = TrafficHat()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn all the board's output components on. | None |
|
||||||
|
| `off()` | Turn all the board's output components off. | None |
|
||||||
|
| `toggle()` | Toggle all the board's output components. For each component, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make all the board's output components turn on and off repeatedly. | `on_time=1`, `off_time=1`, `nx=1`, `background=True` |
|
||||||
|
| `lights_on()` | Turn all three LEDs on. | None |
|
||||||
|
| `lights_off()` | Turn all three LEDs off. | None |
|
||||||
|
| `toggle_lights()` | Toggle all the board's LEDs. For each LED, if it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink_lights()` | Make all the board's LEDs turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `red` | Direct access to the red light as a single `LED` object. | LED |
|
||||||
|
| `amber` | Direct access to the amber light as a single `LED` object. | LED |
|
||||||
|
| `green` | Direct access to the green light as a single `LED` object. | LED |
|
||||||
|
| `buzzer` | Direct access to the buzzer as a single `Buzzer` object. | LED |
|
||||||
|
| `button` | Direct access to the button as a single `Button` object. | LED |
|
||||||
|
| `leds` | A collection of LEDs to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
|
| `all` | A collection of the board's output components to access each one individually, or to iterate over them in sequence. | Tuple |
|
||||||
196
docs/index.md
196
docs/index.md
@@ -1,8 +1,12 @@
|
|||||||
# gpio-zero
|
# GPIO Zero
|
||||||
|
|
||||||
A simple interface to everyday GPIO components used with Raspberry Pi
|
A simple interface to everyday GPIO components used with Raspberry Pi
|
||||||
|
|
||||||
## Why?
|
## Latest release
|
||||||
|
|
||||||
|
The latest release is **v0.6.0 public beta 1** released on 28th September 2015.
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
The "hello world" program in Java is at least 5 lines long, and contains 11
|
The "hello world" program in Java is at least 5 lines long, and contains 11
|
||||||
jargon words which are to be ignored. The "hello world" program in Python is
|
jargon words which are to be ignored. The "hello world" program in Python is
|
||||||
@@ -39,7 +43,30 @@ red.on()
|
|||||||
|
|
||||||
Any guesses how to turn it off?
|
Any guesses how to turn it off?
|
||||||
|
|
||||||
## Implemented Components
|
## Install
|
||||||
|
|
||||||
|
Install with pip::
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt-get install python-pip python3-pip
|
||||||
|
sudo pip install gpiozero
|
||||||
|
sudo pip-3.2 install gpiozero
|
||||||
|
```
|
||||||
|
|
||||||
|
Both Python 3 and Python 2 are supported. Python 3 is recommended!
|
||||||
|
|
||||||
|
### Upgrade
|
||||||
|
|
||||||
|
Upgrade to the latest version with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pip install gpiozero --upgrade
|
||||||
|
sudo pip-3.2 install gpiozero --upgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
## What's included?
|
||||||
|
|
||||||
|
Components:
|
||||||
|
|
||||||
- LED
|
- LED
|
||||||
- Buzzer
|
- Buzzer
|
||||||
@@ -49,160 +76,17 @@ Any guesses how to turn it off?
|
|||||||
- Temperature Sensor
|
- Temperature Sensor
|
||||||
- Motor
|
- Motor
|
||||||
|
|
||||||
## Usage
|
Boards & accessories:
|
||||||
|
|
||||||
### LED
|
- LED Board
|
||||||
|
- Traffic Lights
|
||||||
|
- PiLITEr
|
||||||
|
- PI-TRAFFIC
|
||||||
|
- Fish Dish
|
||||||
|
- Traffic HAT
|
||||||
|
|
||||||
Turn an LED on and off repeatedly:
|
## Getting started
|
||||||
|
|
||||||
```python
|
See the [input devices](inputs.md) and [output devices](outputs.md) to get started. Also see the [boards & accessories](boards.md) page for examples of using the included accessories.
|
||||||
from gpiozero import LED
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
red = LED(2)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
red.on()
|
|
||||||
sleep(1)
|
|
||||||
red.off()
|
|
||||||
sleep(1)
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import LED
|
|
||||||
|
|
||||||
red = LED(2)
|
|
||||||
red.blink(1, 1)
|
|
||||||
sleep(10)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Buzzer
|
|
||||||
|
|
||||||
Turn a buzzer on and off repeatedly:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import Buzzer
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
buzzer = Buzzer(3)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
buzzer.on()
|
|
||||||
sleep(1)
|
|
||||||
buzzer.off()
|
|
||||||
sleep(1)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Button
|
|
||||||
|
|
||||||
Check if a button is pressed:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import Button
|
|
||||||
|
|
||||||
button = Button(4)
|
|
||||||
|
|
||||||
if button.is_active:
|
|
||||||
print("Button is pressed")
|
|
||||||
else:
|
|
||||||
print("Button is not pressed")
|
|
||||||
```
|
|
||||||
|
|
||||||
Wait for a button to be pressed before continuing:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import Button
|
|
||||||
|
|
||||||
button = Button(4)
|
|
||||||
|
|
||||||
button.wait_for_press()
|
|
||||||
print("Button was pressed")
|
|
||||||
```
|
|
||||||
|
|
||||||
Run a function every time the button is pressed:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import Button
|
|
||||||
|
|
||||||
def warning():
|
|
||||||
print("Don't push the button!")
|
|
||||||
|
|
||||||
button = Button(4)
|
|
||||||
|
|
||||||
button.when_pressed = warning
|
|
||||||
```
|
|
||||||
|
|
||||||
### Motion Sensor
|
|
||||||
|
|
||||||
Detect motion and light an LED when it's detected:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import MotionSensor, LED
|
|
||||||
|
|
||||||
pir = MotionSensor(5)
|
|
||||||
led = LED(16)
|
|
||||||
|
|
||||||
pir.when_motion = led.on
|
|
||||||
pir.when_no_motion = led.off
|
|
||||||
```
|
|
||||||
|
|
||||||
### Light Sensor
|
|
||||||
|
|
||||||
Wait for light and dark:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import LightSensor
|
|
||||||
|
|
||||||
sensor = LightSensor(18)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
sensor.wait_for_light()
|
|
||||||
print("It's light! :)")
|
|
||||||
sensor.wait_for_dark()
|
|
||||||
print("It's dark :(")
|
|
||||||
```
|
|
||||||
|
|
||||||
Run a function when the light changes:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import LightSensor, LED
|
|
||||||
|
|
||||||
sensor = LightSensor(18)
|
|
||||||
led = LED(16)
|
|
||||||
|
|
||||||
sensor.when_dark = led.on
|
|
||||||
sensor.when_light = led.off
|
|
||||||
```
|
|
||||||
|
|
||||||
### Temperature Sensor
|
|
||||||
|
|
||||||
Retrieve light sensor value:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import TemperatureSensor
|
|
||||||
|
|
||||||
temperature = TemperatureSensor(6)
|
|
||||||
|
|
||||||
print(temperature.value)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Motor
|
|
||||||
|
|
||||||
Drive two motors forwards for 5 seconds:
|
|
||||||
|
|
||||||
```python
|
|
||||||
from gpiozero import Motor
|
|
||||||
from time import sleep
|
|
||||||
|
|
||||||
left_motor = Motor(7)
|
|
||||||
right_motor = Motor(8)
|
|
||||||
|
|
||||||
left_motor.on()
|
|
||||||
right_motor.on()
|
|
||||||
sleep(5)
|
|
||||||
left_motor.off()
|
|
||||||
right_motor.off()
|
|
||||||
```
|
|
||||||
|
|
||||||
|
For common programs using multiple components together, see the [recipes](recipes.md) page.
|
||||||
|
|||||||
142
docs/inputs.md
Normal file
142
docs/inputs.md
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
# Input Devices
|
||||||
|
|
||||||
|
These input device component interfaces have been provided for simple use of everyday components.
|
||||||
|
|
||||||
|
Components must be wired up correctly before used in code.
|
||||||
|
|
||||||
|
*Note all GPIO pin numbers use BCM numbering. See the [notes](notes.md) page for more information.*
|
||||||
|
|
||||||
|
## Button
|
||||||
|
|
||||||
|
A physical push button or switch.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `Button` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Button
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `Button` object by passing in the pin number the button is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
button = Button(2)
|
||||||
|
```
|
||||||
|
|
||||||
|
The default bahaviour is to set the *pull* state of the button to *up*. To change this behaviour, set the `pull_up` argument to `False` when creating your `Button` object.
|
||||||
|
|
||||||
|
```python
|
||||||
|
button = Button(pin=2, pull_up=False)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `wait_for_press()` | Halt the program until the button is pressed. | `timeout=None` |
|
||||||
|
| `wait_for_release()` | Halt the program until the button is released. | `timeout=None` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `pin` | The GPIO pin number the button is connected to. | Integer |
|
||||||
|
| `is_pressed` | The current state of the pin (`True` if pressed; otherwise `False`). | Boolean |
|
||||||
|
| `pull_up` | The pull state of the pin (`True` if pulled up; `False` if pulled down). | Boolean |
|
||||||
|
| `when_pressed` | A reference to the function to be called when the button is pressed. | None or Function |
|
||||||
|
| `when_released` | A reference to the function to be called when the button is released. | None or Function |
|
||||||
|
|
||||||
|
## Motion Sensor
|
||||||
|
|
||||||
|
A PIR (Passive Infra-Red) motion sensor.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `MotionSensor` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import MotionSensor
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `MotionSensor` object by passing in the pin number the sensor is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
pir = MotionSensor(3)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
## Light Sensor
|
||||||
|
|
||||||
|
An LDR (Light Dependent Resistor) Light Sensor.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `LightSensor` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LightSensor
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `LightSensor` object by passing in the pin number the sensor is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
light = LightSensor(4)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
## Temperature Sensor
|
||||||
|
|
||||||
|
Digital Temperature Sensor.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `TemperatureSensor` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import TemperatureSensor
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `TemperatureSensor` object:
|
||||||
|
|
||||||
|
```python
|
||||||
|
temp = TemperatureSensor()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
...
|
||||||
41
docs/notes.md
Normal file
41
docs/notes.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Notes
|
||||||
|
|
||||||
|
1. BCM pin numbering
|
||||||
|
|
||||||
|
This library uses BCM pin numbering for the GPIO pins, as opposed to BOARD. Unlike the `RPi.GPIO` library, it is not configurable.
|
||||||
|
|
||||||
|
Any pin marked `GPIO` can be used for generic components.
|
||||||
|
|
||||||
|
The BCM pin layout is as follows:
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|-----------:|:-----------|
|
||||||
|
| 3V3 | 5V |
|
||||||
|
| **GPIO2** | 5V |
|
||||||
|
| **GPIO3** | GND |
|
||||||
|
| **GPIO4** | **GPIO14** |
|
||||||
|
| GND | **GPIO15** |
|
||||||
|
| **GPIO17** | **GPIO18** |
|
||||||
|
| **GPIO27** | GND |
|
||||||
|
| **GPIO22** | **GPIO23** |
|
||||||
|
| 3V3 | **GPIO24** |
|
||||||
|
| **GPIO10** | GND |
|
||||||
|
| **GPIO9** | **GPIO25** |
|
||||||
|
| **GPIO11** | **GPIO8** |
|
||||||
|
| GND | **GPIO7** |
|
||||||
|
| DNC | DNC |
|
||||||
|
| **GPIO5** | GND |
|
||||||
|
| **GPIO6** | **GPIO12** |
|
||||||
|
| **GPIO13** | GND |
|
||||||
|
| **GPIO19** | **GPIO16** |
|
||||||
|
| **GPIO26** | **GPIO20** |
|
||||||
|
| GND | **GPIO21** |
|
||||||
|
|
||||||
|
- *GND = Ground*
|
||||||
|
- *3V3 = 3.3 Volts*
|
||||||
|
- *5V = 5 Volts*
|
||||||
|
- *DNC = Do not connect (special use pins)*
|
||||||
|
|
||||||
|
1. Wiring
|
||||||
|
|
||||||
|
All components must be wired up correctly before using with this library.
|
||||||
119
docs/outputs.md
Normal file
119
docs/outputs.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# Output Devices
|
||||||
|
|
||||||
|
These output device component interfaces have been provided for simple use of everyday components.
|
||||||
|
|
||||||
|
Components must be wired up correctly before used in code.
|
||||||
|
|
||||||
|
*Note all GPIO pin numbers use BCM numbering. See the [notes](notes.md) page for more information.*
|
||||||
|
|
||||||
|
## LED
|
||||||
|
|
||||||
|
An LED (Light emitting diode) component.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `LED` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LED
|
||||||
|
```
|
||||||
|
|
||||||
|
Create an `LED` object by passing in the pin number the LED is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
led = LED(2)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn the LED on. | None |
|
||||||
|
| `off()` | Turn the LED off. | None |
|
||||||
|
| `toggle()` | Toggle the LED. If it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make the LED turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `pin` | The GPIO pin number the LED is connected to. | Integer |
|
||||||
|
| `is_active` | The current state of the pin (`True` if on; `False` if off). | Boolean |
|
||||||
|
|
||||||
|
## Buzzer
|
||||||
|
|
||||||
|
A digital Buzzer component.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `Buzzer` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Buzzer
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `Buzzer` object by passing in the pin number the buzzer is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
buzzer = Buzzer(3)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn the buzzer on. | None |
|
||||||
|
| `off()` | Turn the buzzer off. | None |
|
||||||
|
| `toggle()` | Toggle the buzzer. If it's on, turn it off; if it's off, turn it on. | None |
|
||||||
|
| `blink()` | Make the buzzer turn on and off repeatedly. | `on_time=1`, `off_time=1`, `n=1`, `background=True` |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `pin` | The GPIO pin number the buzzer is connected to. | Integer |
|
||||||
|
| `is_active` | The current state of the pin (`True` if on; `False` if off). | Boolean |
|
||||||
|
|
||||||
|
## Motor
|
||||||
|
|
||||||
|
Generic single-direction motor.
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
### Code
|
||||||
|
|
||||||
|
Ensure the `Motor` class is imported at the top of the file:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Motor
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a `Motor` object by passing in the pin number the motor is connected to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
motor = Motor(4)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
| Method | Description | Arguments |
|
||||||
|
| ------ | ----------- | --------- |
|
||||||
|
| `on()` | Turn the motor on. | None |
|
||||||
|
| `off()` | Turn the motor off. | None |
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
| Property | Description | Type |
|
||||||
|
| -------- | ----------- | ---- |
|
||||||
|
| `pin` | The GPIO pin number the motor is connected to. | Integer |
|
||||||
|
| `is_active` | The current state of the pin (`True` if on; `False` if off). | Boolean |
|
||||||
156
docs/recipes.md
Normal file
156
docs/recipes.md
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
# Recipes
|
||||||
|
|
||||||
|
## LED
|
||||||
|
|
||||||
|
Turn an LED on and off repeatedly:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LED
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
red = LED(2)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
red.on()
|
||||||
|
sleep(1)
|
||||||
|
red.off()
|
||||||
|
sleep(1)
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LED
|
||||||
|
|
||||||
|
red = LED(2)
|
||||||
|
|
||||||
|
red.blink()
|
||||||
|
```
|
||||||
|
|
||||||
|
## Buzzer
|
||||||
|
|
||||||
|
Turn a buzzer on and off repeatedly:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Buzzer
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
buzzer = Buzzer(3)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
buzzer.on()
|
||||||
|
sleep(1)
|
||||||
|
buzzer.off()
|
||||||
|
sleep(1)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Button
|
||||||
|
|
||||||
|
Check if a button is pressed:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Button
|
||||||
|
|
||||||
|
button = Button(4)
|
||||||
|
|
||||||
|
if button.is_active:
|
||||||
|
print("Button is pressed")
|
||||||
|
else:
|
||||||
|
print("Button is not pressed")
|
||||||
|
```
|
||||||
|
|
||||||
|
Wait for a button to be pressed before continuing:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Button
|
||||||
|
|
||||||
|
button = Button(4)
|
||||||
|
|
||||||
|
button.wait_for_press()
|
||||||
|
print("Button was pressed")
|
||||||
|
```
|
||||||
|
|
||||||
|
Run a function every time the button is pressed:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Button
|
||||||
|
|
||||||
|
def warning():
|
||||||
|
print("Don't push the button!")
|
||||||
|
|
||||||
|
button = Button(4)
|
||||||
|
|
||||||
|
button.when_pressed = warning
|
||||||
|
```
|
||||||
|
|
||||||
|
## Motion Sensor
|
||||||
|
|
||||||
|
Detect motion and light an LED when it's detected:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import MotionSensor, LED
|
||||||
|
|
||||||
|
pir = MotionSensor(5)
|
||||||
|
led = LED(16)
|
||||||
|
|
||||||
|
pir.when_motion = led.on
|
||||||
|
pir.when_no_motion = led.off
|
||||||
|
```
|
||||||
|
|
||||||
|
## Light Sensor
|
||||||
|
|
||||||
|
Wait for light and dark:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LightSensor
|
||||||
|
|
||||||
|
sensor = LightSensor(18)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
sensor.wait_for_light()
|
||||||
|
print("It's light! :)")
|
||||||
|
sensor.wait_for_dark()
|
||||||
|
print("It's dark :(")
|
||||||
|
```
|
||||||
|
|
||||||
|
Run a function when the light changes:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import LightSensor, LED
|
||||||
|
|
||||||
|
sensor = LightSensor(18)
|
||||||
|
led = LED(16)
|
||||||
|
|
||||||
|
sensor.when_dark = led.on
|
||||||
|
sensor.when_light = led.off
|
||||||
|
```
|
||||||
|
|
||||||
|
## Temperature Sensor
|
||||||
|
|
||||||
|
Retrieve light sensor value:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import TemperatureSensor
|
||||||
|
|
||||||
|
temperature = TemperatureSensor(6)
|
||||||
|
|
||||||
|
print(temperature.value)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Motor
|
||||||
|
|
||||||
|
Drive two motors forwards for 5 seconds:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from gpiozero import Motor
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
left_motor = Motor(7)
|
||||||
|
right_motor = Motor(8)
|
||||||
|
|
||||||
|
left_motor.on()
|
||||||
|
right_motor.on()
|
||||||
|
sleep(5)
|
||||||
|
left_motor.off()
|
||||||
|
right_motor.off()
|
||||||
|
```
|
||||||
@@ -7,7 +7,7 @@ from time import sleep
|
|||||||
|
|
||||||
class LEDBoard(object):
|
class LEDBoard(object):
|
||||||
"""
|
"""
|
||||||
A Generic LED Board or collecfion of LEDs.
|
A Generic LED Board or collection of LEDs.
|
||||||
"""
|
"""
|
||||||
def __init__(self, leds):
|
def __init__(self, leds):
|
||||||
self._leds = tuple(LED(led) for led in leds)
|
self._leds = tuple(LED(led) for led in leds)
|
||||||
@@ -38,38 +38,27 @@ class LEDBoard(object):
|
|||||||
for led in self._leds:
|
for led in self._leds:
|
||||||
led.toggle()
|
led.toggle()
|
||||||
|
|
||||||
def blink(self, on_time=1, off_time=1):
|
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
||||||
"""
|
"""
|
||||||
Make all the LEDs turn on and off repeatedly in the background.
|
Make all the LEDs turn on and off repeatedly.
|
||||||
|
|
||||||
on_time: 1
|
on_time: 1
|
||||||
Number of seconds to be on
|
Number of seconds to be on
|
||||||
|
|
||||||
off_time: 1
|
off_time: 1
|
||||||
Number of seconds to be off
|
Number of seconds to be off
|
||||||
|
|
||||||
|
n: None
|
||||||
|
Number of times to blink; None means forever
|
||||||
|
|
||||||
|
background: True
|
||||||
|
If True, start a background thread to continue blinking and return
|
||||||
|
immediately. If False, only return when the blink is finished
|
||||||
|
(warning: the default value of n will result in this method never
|
||||||
|
returning).
|
||||||
"""
|
"""
|
||||||
for led in self._leds:
|
for led in self._leds:
|
||||||
led.blink(on_time, off_time)
|
led.blink(on_time, off_time, n, background)
|
||||||
|
|
||||||
def flash(self, on_time=1, off_time=1, n=1):
|
|
||||||
"""
|
|
||||||
Turn all the LEDs on and off a given number of times.
|
|
||||||
|
|
||||||
on_time: 1
|
|
||||||
Number of seconds on
|
|
||||||
|
|
||||||
off_time: 1
|
|
||||||
Number of seconds off
|
|
||||||
|
|
||||||
n: 1
|
|
||||||
Number of iterations
|
|
||||||
"""
|
|
||||||
for i in range(n):
|
|
||||||
self.on()
|
|
||||||
sleep(on_time)
|
|
||||||
self.off()
|
|
||||||
if i+1 < n: # don't sleep on final iteration
|
|
||||||
sleep(off_time)
|
|
||||||
|
|
||||||
|
|
||||||
class PiLiter(LEDBoard):
|
class PiLiter(LEDBoard):
|
||||||
@@ -116,7 +105,7 @@ class PiTraffic(TrafficLights):
|
|||||||
|
|
||||||
class FishDish(TrafficLights):
|
class FishDish(TrafficLights):
|
||||||
"""
|
"""
|
||||||
Pi Supply FishDish: horizontal traffic light LEDs, a button and a buzzer.
|
Pi Supply FishDish: traffic light LEDs, a button and a buzzer.
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
red, amber, green = (9, 22, 4)
|
red, amber, green = (9, 22, 4)
|
||||||
@@ -151,6 +140,28 @@ class FishDish(TrafficLights):
|
|||||||
for thing in self._all:
|
for thing in self._all:
|
||||||
thing.toggle()
|
thing.toggle()
|
||||||
|
|
||||||
|
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
||||||
|
"""
|
||||||
|
Make all the board's components turn on and off repeatedly.
|
||||||
|
|
||||||
|
on_time: 1
|
||||||
|
Number of seconds to be on
|
||||||
|
|
||||||
|
off_time: 1
|
||||||
|
Number of seconds to be off
|
||||||
|
|
||||||
|
n: None
|
||||||
|
Number of times to blink; None means forever
|
||||||
|
|
||||||
|
background: True
|
||||||
|
If True, start a background thread to continue blinking and return
|
||||||
|
immediately. If False, only return when the blink is finished
|
||||||
|
(warning: the default value of n will result in this method never
|
||||||
|
returning).
|
||||||
|
"""
|
||||||
|
for thing in self._all:
|
||||||
|
led.blink(on_time, off_time, n, background)
|
||||||
|
|
||||||
def lights_on(self):
|
def lights_on(self):
|
||||||
"""
|
"""
|
||||||
Turn all the board's LEDs on.
|
Turn all the board's LEDs on.
|
||||||
@@ -170,30 +181,31 @@ class FishDish(TrafficLights):
|
|||||||
"""
|
"""
|
||||||
super(FishDish, self).toggle()
|
super(FishDish, self).toggle()
|
||||||
|
|
||||||
def flash_lights(self, on_time=1, off_time=1, n=1):
|
def blink_lights(self, on_time=1, off_time=1, n=None, background=True):
|
||||||
"""
|
"""
|
||||||
Turn all the LEDs on and off a given number of times.
|
Make all the board's LEDs turn on and off repeatedly.
|
||||||
|
|
||||||
on_time: 1
|
on_time: 1
|
||||||
Number of seconds on
|
Number of seconds to be on
|
||||||
|
|
||||||
off_time: 1
|
off_time: 1
|
||||||
Number of seconds off
|
Number of seconds to be off
|
||||||
|
|
||||||
n: 1
|
n: None
|
||||||
Number of iterations
|
Number of times to blink; None means forever
|
||||||
|
|
||||||
|
background: True
|
||||||
|
If True, start a background thread to continue blinking and return
|
||||||
|
immediately. If False, only return when the blink is finished
|
||||||
|
(warning: the default value of n will result in this method never
|
||||||
|
returning).
|
||||||
"""
|
"""
|
||||||
for i in range(n):
|
super(FishDish, self).blink(on_time, off_time, n, background)
|
||||||
[led.on() for led in self.leds]
|
|
||||||
sleep(on_time)
|
|
||||||
[led.off() for led in self.leds]
|
|
||||||
if i+1 < n: # don't sleep on final iteration
|
|
||||||
sleep(off_time)
|
|
||||||
|
|
||||||
|
|
||||||
class TrafficHat(FishDish):
|
class TrafficHat(FishDish):
|
||||||
"""
|
"""
|
||||||
Ryanteck Traffic HAT: horizontal traffic light LEDs, a button and a buzzer.
|
Ryanteck Traffic HAT: traffic light LEDs, a button and a buzzer.
|
||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
red, amber, green = (22, 23, 24)
|
red, amber, green = (22, 23, 24)
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ from .devices import GPIODeviceError, GPIODevice, GPIOQueue
|
|||||||
def _alias(key):
|
def _alias(key):
|
||||||
return property(
|
return property(
|
||||||
lambda self: getattr(self, key),
|
lambda self: getattr(self, key),
|
||||||
lambda self, val: setattr(self, key, val))
|
lambda self, val: setattr(self, key, val)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class InputDeviceError(GPIODeviceError):
|
class InputDeviceError(GPIODeviceError):
|
||||||
@@ -28,12 +29,12 @@ class InputDevice(GPIODevice):
|
|||||||
def __init__(self, pin=None, pull_up=False):
|
def __init__(self, pin=None, pull_up=False):
|
||||||
super(InputDevice, self).__init__(pin)
|
super(InputDevice, self).__init__(pin)
|
||||||
self._pull_up = pull_up
|
self._pull_up = pull_up
|
||||||
self._active_edge = (GPIO.RISING, GPIO.FALLING)[pull_up]
|
self._active_edge = GPIO.FALLING if pull_up else GPIO.RISING
|
||||||
self._inactive_edge = (GPIO.FALLING, GPIO.RISING)[pull_up]
|
self._inactive_edge = GPIO.RISING if pull_up else GPIO.FALLING
|
||||||
if pull_up:
|
self._active_state = GPIO.LOW if pull_up else GPIO.HIGH
|
||||||
self._active_state = GPIO.LOW
|
self._inactive_state = GPIO.HIGH if pull_up else GPIO.LOW
|
||||||
self._inactive_state = GPIO.HIGH
|
pull = GPIO.PUD_UP if pull_up else GPIO.PUD_DOWN
|
||||||
GPIO.setup(pin, GPIO.IN, (GPIO.PUD_DOWN, GPIO.PUD_UP)[pull_up])
|
GPIO.setup(pin, GPIO.IN, pull)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pull_up(self):
|
def pull_up(self):
|
||||||
@@ -46,7 +47,7 @@ class InputDevice(GPIODevice):
|
|||||||
|
|
||||||
class WaitableInputDevice(InputDevice):
|
class WaitableInputDevice(InputDevice):
|
||||||
"""
|
"""
|
||||||
A time-dependent Generic Input Device.
|
An action-dependent Generic Input Device.
|
||||||
"""
|
"""
|
||||||
def __init__(self, pin=None, pull_up=False):
|
def __init__(self, pin=None, pull_up=False):
|
||||||
super(WaitableInputDevice, self).__init__(pin, pull_up)
|
super(WaitableInputDevice, self).__init__(pin, pull_up)
|
||||||
@@ -216,6 +217,8 @@ class Button(DigitalInputDevice):
|
|||||||
def __init__(self, pin=None, pull_up=True, bouncetime=None):
|
def __init__(self, pin=None, pull_up=True, bouncetime=None):
|
||||||
super(Button, self).__init__(pin, pull_up, bouncetime)
|
super(Button, self).__init__(pin, pull_up, bouncetime)
|
||||||
|
|
||||||
|
is_pressed = alias('is_active')
|
||||||
|
|
||||||
when_pressed = _alias('when_activated')
|
when_pressed = _alias('when_activated')
|
||||||
when_released = _alias('when_deactivated')
|
when_released = _alias('when_deactivated')
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class OutputDevice(GPIODevice):
|
|||||||
|
|
||||||
class DigitalOutputDevice(OutputDevice):
|
class DigitalOutputDevice(OutputDevice):
|
||||||
"""
|
"""
|
||||||
Generic Digital GPIO Output Device (on/off/blink/toggle/flash).
|
Generic Digital GPIO Output Device (on/off/toggle/blink).
|
||||||
"""
|
"""
|
||||||
def __init__(self, pin=None):
|
def __init__(self, pin=None):
|
||||||
super(DigitalOutputDevice, self).__init__(pin)
|
super(DigitalOutputDevice, self).__init__(pin)
|
||||||
@@ -55,9 +55,20 @@ class DigitalOutputDevice(OutputDevice):
|
|||||||
self._stop_blink()
|
self._stop_blink()
|
||||||
super(DigitalOutputDevice, self).off()
|
super(DigitalOutputDevice, self).off()
|
||||||
|
|
||||||
|
def toggle(self):
|
||||||
|
"""
|
||||||
|
Reverse the state of the device.
|
||||||
|
If it's on, turn it off; if it's off, turn it on.
|
||||||
|
"""
|
||||||
|
with self._lock:
|
||||||
|
if self.is_active:
|
||||||
|
self.off()
|
||||||
|
else:
|
||||||
|
self.on()
|
||||||
|
|
||||||
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
||||||
"""
|
"""
|
||||||
Make the device turn on and off repeatedly in the background.
|
Make the device turn on and off repeatedly.
|
||||||
|
|
||||||
on_time: 1
|
on_time: 1
|
||||||
Number of seconds on
|
Number of seconds on
|
||||||
@@ -83,17 +94,6 @@ class DigitalOutputDevice(OutputDevice):
|
|||||||
self._blink_thread.join()
|
self._blink_thread.join()
|
||||||
self._blink_thread = None
|
self._blink_thread = None
|
||||||
|
|
||||||
def toggle(self):
|
|
||||||
"""
|
|
||||||
Reverse the state of the device.
|
|
||||||
If it's on, turn it off; if it's off, turn it on.
|
|
||||||
"""
|
|
||||||
with self._lock:
|
|
||||||
if self.is_active:
|
|
||||||
self.off()
|
|
||||||
else:
|
|
||||||
self.on()
|
|
||||||
|
|
||||||
def _stop_blink(self):
|
def _stop_blink(self):
|
||||||
if self._blink_thread:
|
if self._blink_thread:
|
||||||
self._blink_thread.stop()
|
self._blink_thread.stop()
|
||||||
@@ -114,104 +114,21 @@ class LED(DigitalOutputDevice):
|
|||||||
"""
|
"""
|
||||||
An LED (Light Emmitting Diode) component.
|
An LED (Light Emmitting Diode) component.
|
||||||
"""
|
"""
|
||||||
def on(self):
|
pass
|
||||||
"""
|
|
||||||
Turn the LED on.
|
|
||||||
"""
|
|
||||||
super(LED, self).on()
|
|
||||||
|
|
||||||
def off(self):
|
|
||||||
"""
|
|
||||||
Turn the LED off.
|
|
||||||
"""
|
|
||||||
super(LED, self).off()
|
|
||||||
|
|
||||||
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
|
||||||
"""
|
|
||||||
Make the LED turn on and off repeatedly in the background.
|
|
||||||
|
|
||||||
on_time: 1
|
|
||||||
Number of seconds on
|
|
||||||
|
|
||||||
off_time: 1
|
|
||||||
Number of seconds off
|
|
||||||
|
|
||||||
n: None
|
|
||||||
Number of times to blink; None means forever
|
|
||||||
|
|
||||||
background: True
|
|
||||||
If True, start a background thread to continue blinking and return
|
|
||||||
immediately. If False, only return when the blink is finished
|
|
||||||
(warning: the default value of n will result in this method never
|
|
||||||
returning).
|
|
||||||
"""
|
|
||||||
super(LED, self).blink(on_time, off_time, n, background)
|
|
||||||
|
|
||||||
def toggle(self):
|
|
||||||
"""
|
|
||||||
Reverse the state of the LED.
|
|
||||||
If it's on, turn it off; if it's off, turn it on.
|
|
||||||
"""
|
|
||||||
super(LED, self).toggle()
|
|
||||||
|
|
||||||
|
|
||||||
class Buzzer(DigitalOutputDevice):
|
class Buzzer(DigitalOutputDevice):
|
||||||
"""
|
"""
|
||||||
A Buzzer component.
|
A digital Buzzer component.
|
||||||
"""
|
"""
|
||||||
def on(self):
|
pass
|
||||||
"""
|
|
||||||
Turn the Buzzer on.
|
|
||||||
"""
|
|
||||||
super(Buzzer, self).on()
|
|
||||||
|
|
||||||
def off(self):
|
|
||||||
"""
|
|
||||||
Turn the Buzzer off.
|
|
||||||
"""
|
|
||||||
super(Buzzer, self).off()
|
|
||||||
|
|
||||||
def blink(self, on_time=1, off_time=1, n=None, background=True):
|
|
||||||
"""
|
|
||||||
Make the Buzzer turn on and off repeatedly in the background.
|
|
||||||
|
|
||||||
on_time: 1
|
|
||||||
Number of seconds on
|
|
||||||
|
|
||||||
off_time: 1
|
|
||||||
Number of seconds off
|
|
||||||
|
|
||||||
n: None
|
|
||||||
Number of times to blink; None means forever
|
|
||||||
|
|
||||||
background: True
|
|
||||||
If True, start a background thread to continue blinking and return
|
|
||||||
immediately. If False, only return when the blink is finished
|
|
||||||
(warning: the default value of n will result in this method never
|
|
||||||
returning).
|
|
||||||
"""
|
|
||||||
super(Buzzer, self).blink(on_time, off_time, n, background)
|
|
||||||
|
|
||||||
def toggle(self):
|
|
||||||
"""
|
|
||||||
Reverse the state of the Buzzer.
|
|
||||||
If it's on, turn it off; if it's off, turn it on.
|
|
||||||
"""
|
|
||||||
super(Buzzer, self).toggle()
|
|
||||||
|
|
||||||
|
|
||||||
class Motor(OutputDevice):
|
class Motor(OutputDevice):
|
||||||
def on(self):
|
|
||||||
"""
|
"""
|
||||||
Turns the Motor on.
|
Generic single-direction motor.
|
||||||
"""
|
"""
|
||||||
super(Motor, self).toggle()
|
pass
|
||||||
|
|
||||||
def off(self):
|
|
||||||
"""
|
|
||||||
Turns the Motor off.
|
|
||||||
"""
|
|
||||||
super(Motor, self).toggle()
|
|
||||||
|
|
||||||
|
|
||||||
class Robot(object):
|
class Robot(object):
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
site_name: gpio-zero
|
site_name: GPIO Zero
|
||||||
theme: readthedocs
|
theme: readthedocs
|
||||||
site_url: http://pythonhosted.org/gpiozero
|
site_url: http://pythonhosted.org/gpiozero
|
||||||
repo_url: https://github.com/RPi-Distro/gpio-zero
|
repo_url: https://github.com/RPi-Distro/python-gpiozero
|
||||||
site_description: A simple interface to everyday GPIO components used with Raspberry Pi
|
site_description: A simple interface to everyday GPIO components used with Raspberry Pi
|
||||||
site_author: Ben Nuttall
|
site_author: Ben Nuttall
|
||||||
site_dir: pythonhosted
|
site_dir: pythonhosted
|
||||||
google_analytics: ['UA-46270871-6', 'pythonhosted.org/gpiozero']
|
google_analytics: ['UA-46270871-6', 'pythonhosted.org/gpiozero']
|
||||||
pages:
|
pages:
|
||||||
- 'Home': 'index.md'
|
- 'Home': 'index.md'
|
||||||
|
- 'Input Devices': 'inputs.md'
|
||||||
|
- 'Output Devices': 'outputs.md'
|
||||||
|
- 'Boards and Accessories': 'boards.md'
|
||||||
|
- 'Notes': 'notes.md'
|
||||||
|
- 'Recipes': 'recipes.md'
|
||||||
|
|||||||
5
setup.py
5
setup.py
@@ -8,7 +8,7 @@ def read(fname):
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="gpiozero",
|
name="gpiozero",
|
||||||
version="0.5.0",
|
version="0.6.0",
|
||||||
author="Ben Nuttall",
|
author="Ben Nuttall",
|
||||||
description="A simple interface to everyday GPIO components used with Raspberry Pi",
|
description="A simple interface to everyday GPIO components used with Raspberry Pi",
|
||||||
license="BSD",
|
license="BSD",
|
||||||
@@ -24,8 +24,9 @@ setup(
|
|||||||
],
|
],
|
||||||
long_description=read('README.rst'),
|
long_description=read('README.rst'),
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Development Status :: 3 - Alpha",
|
"Development Status :: 4 - Beta",
|
||||||
"Intended Audience :: Education",
|
"Intended Audience :: Education",
|
||||||
|
"Intended Audience :: Developers",
|
||||||
"Topic :: Education",
|
"Topic :: Education",
|
||||||
"Topic :: System :: Hardware",
|
"Topic :: System :: Hardware",
|
||||||
"License :: OSI Approved :: BSD License",
|
"License :: OSI Approved :: BSD License",
|
||||||
|
|||||||
Reference in New Issue
Block a user