Commit Graph

73 Commits

Author SHA1 Message Date
Dave Jones
8958874a77 Add pin_factory param to all devices
And some docs ...
2017-07-14 10:44:24 +01:00
Dave Jones
ce6217c14f Fix #459 - properly support remote SPI with pigpio
Sorry! Dave's messing around with the pin implementations again.
Hopefully the last time. The pin_factory is now really a factory object
which can be asked to produce individual pins or pin-based interfaces
like SPI (which can be supported properly via pigpio).
2017-06-16 13:28:55 +01:00
Dave Jones
ab61fa9b6d Patch for #385
DistanceSensor currently doesn't work well in Python 2 due to large lags
in thread event primitives. The "full" fix will require enhancing the
pins API, so this is a temporary patch to provide a fix (at least under
RPi.GPIO) until then.
2016-08-30 23:31:33 +01:00
Dave Jones
6f67a973cf Fix all the stuff you broke last night...
In particular the `pi_revision` thing in PiGPIOPin, all the stuff @lurch
picked up in `pins/data.py` (thank goodness *someone's* watching!), and
make all those links pointing to "Notes" point somewhere useful like
"Pin Numbering"...
2016-08-30 15:43:57 +01:00
Andrew Scheller
74a0871353 Doc typos 2016-06-14 23:18:13 +01:00
Andrew Scheller
f5c2d3a889 Doc typo 2016-06-14 16:13:35 +01:00
Ben Nuttall
8f881bae1b Merge pull request #361 from lurch/patch-2
Doc tweak
2016-06-09 21:22:55 +01:00
Andrew Scheller
ee458214a0 Typo fix 2016-06-06 10:59:31 +01:00
Andrew Scheller
c1c9bcebee Document Button default values 2016-06-06 03:46:32 +01:00
Andrew Scheller
d3071a2780 Doc tweak
The default value should only be documented for the init-method, not on the property itself
2016-06-06 03:30:23 +01:00
Ben Nuttall
4db57cd0ac Use keyword args for echo & trigger in DistanceSensor example 2016-06-03 16:37:11 +01:00
Andrew Scheller
fea0e79bea DistanceSensor: make the max_distance setter more like __init__ 2016-05-26 20:14:51 +01:00
Andrew Scheller
87d00f9047 Replace Event.wait(0) with Event.is_set()
The functionality is identical, and IMHO the latter is much more readable
2016-05-10 15:03:28 +01:00
Dave Jones
39573a3093 Merge pull request #308 from SteveAmor/master
Corrected value of capacitor used in LightSensor
2016-05-08 11:40:13 +01:00
Steveis
191cda29c0 Another SI unit correction 2016-05-02 11:20:59 +01:00
Steveis
bdaa927279 Correct capacitance SI unit 2016-05-01 19:34:30 +01:00
Steveis
019347db26 Corrected value of capacitor used in LightSensor
CamJam kit has a 1uF capacitor in it. Plus I physically tested with the 1uF cap in my CamJam #2 kit.
2016-05-01 18:04:02 +01:00
Andrew Scheller
fddb95b84b Add more unit tests, fix a few small bugs 2016-04-30 16:47:29 +01:00
Andrew Scheller
53b78f1e32 Minor docs fix (#286)
* Minor docs fix

* Another doc fix
2016-04-19 16:14:31 +01:00
Dave Jones
ecc8df8041 Doc reorganization 2016-04-10 16:47:16 +01:00
Dave Jones
0838965796 Fix #115
Adds when_held event hook to Button (via extension of the EventsMixin
class). Also fixes some minor notes and activates codecov coverage
tracking.
2016-04-08 10:48:34 +01:00
Andrew Scheller
72ca075668 fix various bugs found by the 'prospector' static-analysis tool 2016-04-07 17:58:51 +01:00
Dave Jones
3acf8a0d3a More work on the tests... 2016-04-05 13:22:40 +01:00
Dave Jones
92d80d2ae6 Some more tests... 2016-04-05 02:22:38 +01:00
Dave Jones
69dd8a439a The source/values toolkit
Me and my big mouth. No sooner do I declare the base classes "relatively
stable" than I go and mess around with it all again. Anyway, this is the
long promised set of utilities to make source/values more interesting.
It includes a few interesting little utility functions, a whole bunch of
examples and introduces the notion of "pseudo" devices with no (obvious)
hardware representation like a time-of-day device.

This necessitated making the event system a little more generic (it's
not exclusive the GPIO devices after all; no reason we can't use it on
composite devices in future) and by this point the mixins have gotten
large enough to justify their own module.

The pseudo-devices are a bit spartan and basic at the moment but I'm
sure there'll be plenty of future ideas...
2016-04-04 23:59:05 +01:00
Dave Jones
7826e60c3d Fix #193
Changed pin.function so that it's always read-write, which in turn
permits InputDevice to force pin.function to "input" rather than
checking that it's not "input" first. This ensures internal state in
RPi.GPIO and RPIO reflects the reality of each pin's function (see
discussion under the ticket for more detail).
2016-04-03 15:45:28 +01:00
Dave Jones
23a63697b6 Fix #109
Document and test the LineSensor class properly. Multi-sensor devices
can wait for now.
2016-04-03 00:09:02 +01:00
Dave Jones
759a6a58e6 Fix #140, fix #69, fix #185
This PR adds a software SPI implementation. Firstly this removes the
absolute necessity for spidev (#140), which also means when it's not
present things still work (effectively fixes #185), and also enables any
four pins to be used for SPI devices (which don't require the hardware
implementation).

The software implementation is simplistic but still supports clock
polarity and phase, select-high, and variable bits per word. However it
doesn't allow precise speeds to be implemented because it just wibbles
the clock as fast as it can (which being pure Python isn't actually that
fast).

Finally, because this PR involves creating a framework for "shared"
devices (like SPI devices with multiple channels), it made sense to bung
Energenie (#69) in as wells as this is a really simple shared device.
2016-04-01 12:57:17 +01:00
Dave Jones
3efd522457 Merge pull request #184 from waveform80/ultrasonics
Fix #114
2016-02-12 19:32:24 +00:00
Dave Jones
83fb6ae8b4 Fix #114 - ultrasonic sensors
Implements support for the HC-SR04 ultrasonic sensor as an input device
class named DistanceSensor
2016-02-12 19:27:24 +00:00
Ben Nuttall
36cbcc3b98 Correct MCP3001 and MCP3201 differentials, re: #162 2016-02-11 22:02:34 +00:00
Ben Nuttall
3f9ea91560 Add additional ADC chips, close #162 2016-02-11 21:51:25 +00:00
Dave Jones
8e0c6e243b Refactor low level implementation
This commit is a fairly major piece of work that abstracts all pin
operations (function, state, edge detection, PWM, etc.) into a base
"Pin" class which is then used by input/output/composite devices to
perform all required configuration.

The idea is to pave the way for I2C based IO extenders which can present
additional GPIO ports with similar capabilities to the Pi's "native"
GPIO ports. As a bonus it also abstracts away the reliance on the
RPi.GPIO library to allow alternative pin implementations (e.g. using
RPIO to take advantage of DMA based PWM), or even pure Python
implementations.
2016-02-08 14:54:18 +00:00
Andrew Scheller
03e2f8779f Typo fix 2016-01-31 17:10:58 +00:00
Dave Jones
d5226d1fee Minor changes 2016-01-31 16:25:35 +00:00
Dave Jones
0bc62aee73 Generic docs need reST
Conversion of all docs to reST so that the generic docs can link easily
with the rest of the docs.
2016-01-30 23:40:12 +00:00
Dave Jones
075841249e Tidying up bits for #150 2016-01-30 21:58:00 +00:00
pcopa
38bc27b546 Have made a simpler structure for MCP3008/3004 and MCP3208/3204.
The code is running on my Pi and seems to be stable
 Have added MCP3301/3302/3304
 have implemented the "M" bit to allow Differential mode
 Have added an "absVal" for absolute values
 Have added a "relVal" for relative val from 0 to 1 (same as "value")
 left "value" for backwards compatabilety, but propse to delete it
 shifted Rx bits for MCP330x

 On branch master
 Your branch is up-to-date with 'origin/master'.

 Changes to be committed:
	modified:   gpiozero/__init__.py
	modified:   gpiozero/input_devices.py

 Untracked files:
	ZeroCombo11.py

 Date:      Mon Jan 18 20:25:36 2016 -0500
2016-01-29 22:03:13 -05:00
Dave Jones
59ba7154c5 Move exceptions to their own sub-module
This removes the circular dependency introduced in PR#137. This also
fixes up an issue in the base meta-class which meant it wasn't working
in Python 3 (only Python 2), and adds a bit to the meta-class to allow
docstrings to be inherited (taken from the rest-docs branch).
2016-01-07 11:01:49 +00:00
Ben Nuttall
f1d4ca0c05 Add LineSensor 2015-11-23 08:36:14 +00:00
Ben Nuttall
382d6e45fc Reverse order of MCP300X arguments, close #92 2015-11-15 13:51:49 +00:00
Ben Nuttall
492f311cc4 Remove incomplete TemperatureSensor for 1.0 release, close #93 2015-11-15 13:00:06 +00:00
Dave Jones
4615873b39 Change bouncetime to bounce_time
The parameter was already changed to bounce_time in the base
DigitalInputDevice class, but was overridden (incorrectly) in the
derived Button class.
2015-11-05 19:45:09 +00:00
Dave Jones
04c30d1ad2 Fix speling and grandma mistakes
Several in WaitableInputDevice's attribute docstrings.
2015-11-04 15:33:20 +00:00
Dave Jones
e6be9ab274 Fix #100
Permit built-in (C implemented) methods and functions to be used as
event callbacks. Given that prototype introspection is not available for
such routines, assume that they take no (mandatory) parameters.
2015-11-04 12:26:24 +00:00
Dave Jones
fa0a1b3cdd Fix #76, fix #79
This finishes off implementing values and source for all (current)
classes in gpiozero. I'm afraid things get rather complex in this
commit. For starters, we've now got quite a few "aggregate" classes
which necessarily don't descend from GPIODevice. To implement values and
source on these I could either repeat a helluva lot of code or ... turn
to mixin classes. Yeah, it's multiple inheritance time, baby!

Unfortunately multiple inheritance doesn't work with __slots__ but we
really ought to keep functionality that they provide us (raise
AttributeError when an unknown attribute is set). So I've implemented
this with ... erm ... metaclasses. Sorry!
2015-10-22 21:44:42 +01:00
Dave Jones
6583223299 Fix #74
Add more property aliases and do them properly (no more lambdas and
string lookups) which means we can remove `_alias`. This commit also
defines `__slots__` for all classes which should prevent assignation of
invalid attributes with an AttributeError (more friendly than silently
doing the wrong thing). Finally, it cleans up all the property defs to
use Ben's preferred decorator style.
2015-10-17 22:04:52 +01:00
Ben Nuttall
b7cce51497 Update docs for v0.8.0 2015-10-17 12:36:41 +01:00
Dave Jones
a347a2ca4e Fix #41
Add `AnalogInputDevice` base class and extend `MCP3008` (and `MCP3004`)
classes from it.
2015-10-15 10:18:28 +01:00
Dave Jones
53f3a3c69f Fix #64
Make MotionSensor more responsive by effectively removing the averaging
queue. Also add note on how to smooth out "jittery" PIR sensors by
increasing the queue length back up to 5.
2015-10-13 22:00:09 +01:00