mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 17:50:37 +00:00
First stab at #451
This is almost a straight copy'n'paste of picamera's development chapter with a few minor changes to make it read sensibly for GPIO Zero; it needs plenty more work to fulfil the goals of #451 but hopefully this'll act as a reasonable base for people to work on.
This commit is contained in:
@@ -61,7 +61,7 @@ Release 1.2.0 (2016-04-10)
|
||||
* Added support for lots of ADC chips (MCP3xxx family) (`#162`_) - many thanks
|
||||
to pcopa and lurch!
|
||||
* Added support for pigpiod as a pin implementation with
|
||||
:class:`~gpiozero.pins.pigpiod.PiGPIOPin` (`#180`_)
|
||||
:class:`~gpiozero.pins.pigpio.PiGPIOPin` (`#180`_)
|
||||
* Many refinements to the base classes mean more consistency in composite
|
||||
devices and several bugs squashed (`#164`_, `#175`_, `#182`_, `#189`_,
|
||||
`#193`_, `#229`_)
|
||||
|
||||
130
docs/development.rst
Normal file
130
docs/development.rst
Normal file
@@ -0,0 +1,130 @@
|
||||
===========
|
||||
Development
|
||||
===========
|
||||
|
||||
.. currentmodule:: gpiozero
|
||||
|
||||
The main GitHub repository for the project can be found at:
|
||||
|
||||
https://github.com/RPi-Distro/python-gpiozero
|
||||
|
||||
For anybody wishing to hack on the project, we recommend starting off by
|
||||
getting to grips with some simple device classes. Pick something like
|
||||
:class:`LED` and follow its heritage backward to :class:`DigitalOutputDevice`.
|
||||
Follow that back to :class:`OutputDevice` and you should have a good
|
||||
understanding of simple output devices along with a grasp of how GPIO Zero
|
||||
relies fairly heavily upon inheritance to refine the functionality of devices.
|
||||
The same can be done for input devices, and eventually more complex devices
|
||||
(composites and SPI based).
|
||||
|
||||
|
||||
.. _dev_install:
|
||||
|
||||
Development installation
|
||||
========================
|
||||
|
||||
If you wish to develop GPIO Zero itself, we recommend obtaining the source by
|
||||
cloning the GitHub repository and then use the "develop" target of the Makefile
|
||||
which will install the package as a link to the cloned repository allowing
|
||||
in-place development (it also builds a tags file for use with vim/emacs with
|
||||
Exuberant’s ctags utility). The following example demonstrates this method
|
||||
within a virtual Python environment:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt-get install lsb-release build-essential git git-core \
|
||||
> exuberant-ctags virtualenvwrapper python-virtualenv python3-virtualenv \
|
||||
> python-dev python3-dev
|
||||
$ cd
|
||||
$ mkvirtualenv -p /usr/bin/python3 python-gpiozero
|
||||
$ workon python-gpiozero
|
||||
(python-gpiozero) $ git clone https://github.com/RPi-Distro/python-gpiozero.git
|
||||
(python-gpiozero) $ cd python-gpiozero
|
||||
(python-gpiozero) $ make develop
|
||||
|
||||
You will likely wish to install one or more pin implementations within the
|
||||
virtual environment (if you don't, GPIO Zero will use the "native" pin
|
||||
implementation which is largely experimental at this stage and not very
|
||||
useful):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
(python-gpiozero) $ pip install rpi.gpio pigpio
|
||||
|
||||
If you are working on SPI devices you may also wish to install the ``spidev``
|
||||
package to provide hardware SPI capabilities (again, GPIO Zero will work
|
||||
without this, but a big-banging software SPI implementation will be used
|
||||
instead):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
(python-gpiozero) $ pip install spidev
|
||||
|
||||
To pull the latest changes from git into your clone and update your
|
||||
installation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ workon python-gpiozero
|
||||
(python-gpiozero) $ cd ~/python-gpiozero
|
||||
(python-gpiozero) $ git pull
|
||||
(python-gpiozero) $ make develop
|
||||
|
||||
To remove your installation, destroy the sandbox and the clone:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
(python-gpiozero) $ deactivate
|
||||
$ rmvirtualenv python-gpiozero
|
||||
$ rm -fr ~/python-gpiozero
|
||||
|
||||
|
||||
Building the docs
|
||||
=================
|
||||
|
||||
If you wish to build the docs, you'll need a few more dependencies. Inkscape
|
||||
is used for conversion of SVGs to other formats, Graphviz is used for rendering
|
||||
certain charts, and TeX Live is required for building PDF output. The following
|
||||
command should install all required dependencies:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ sudo apt-get install texlive-latex-recommended texlive-latex-extra \
|
||||
texlive-fonts-recommended graphviz inkscape
|
||||
|
||||
Once these are installed, you can use the "doc" target to build the
|
||||
documentation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ workon python-gpiozero
|
||||
(python-gpiozero) $ cd ~/python-gpiozero
|
||||
(python-gpiozero) $ make doc
|
||||
|
||||
The HTML output is written to :file:`docs/_build/html` while the PDF output
|
||||
goes to :file:`docs/_build/latex`.
|
||||
|
||||
|
||||
Test suite
|
||||
==========
|
||||
|
||||
If you wish to run the GPIO Zero test suite, follow the instructions in
|
||||
:ref:`dev_install` above and then make the "test" target within the sandbox:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ workon python-gpiozero
|
||||
(python-gpiozero) $ cd ~/python-gpiozero
|
||||
(python-gpiozero) $ make test
|
||||
|
||||
The test suite expects pins 22 and 27 (by default) to be wired together in
|
||||
order to run the "real" pin tests. The pins used by the test suite can be
|
||||
overridden with the environment variables ``GPIOZERO_TEST_PIN`` (defaults to
|
||||
22) and ``GPIOZERO_TEST_INPUT_PIN`` (defaults to 27).
|
||||
|
||||
.. warning::
|
||||
|
||||
When wiring GPIOs together, ensure a load (like a 330Ω resistor) is placed
|
||||
between them. Failure to do so may lead to blown GPIO pins (your humble
|
||||
author has a fried GPIO27 as a result of such laziness, although it did
|
||||
take *many* runs of the test suite before this occurred!).
|
||||
@@ -8,7 +8,6 @@ Table of Contents
|
||||
|
||||
recipes
|
||||
notes
|
||||
contributing
|
||||
api_input
|
||||
api_output
|
||||
api_spi
|
||||
@@ -20,6 +19,8 @@ Table of Contents
|
||||
api_exc
|
||||
cli_tools
|
||||
source_values
|
||||
contributing
|
||||
development
|
||||
changelog
|
||||
license
|
||||
|
||||
|
||||
Reference in New Issue
Block a user