From a1ec9c67e5c2a9758de38198f1ed84275298c9fc Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Thu, 14 Apr 2016 23:57:11 +0100 Subject: [PATCH] Tweak the ADC classes to make the docs neater and more accurate --- docs/images/spi_device_hierarchy.dot | 16 ++- docs/images/spi_device_hierarchy.pdf | Bin 8970 -> 9316 bytes docs/images/spi_device_hierarchy.png | Bin 30371 -> 45362 bytes docs/images/spi_device_hierarchy.svg | 198 +++++++++++++++++---------- gpiozero/spi_devices.py | 81 ++++++++--- 5 files changed, 203 insertions(+), 92 deletions(-) diff --git a/docs/images/spi_device_hierarchy.dot b/docs/images/spi_device_hierarchy.dot index 430ecb7..aa0769a 100644 --- a/docs/images/spi_device_hierarchy.dot +++ b/docs/images/spi_device_hierarchy.dot @@ -9,6 +9,8 @@ digraph classes { SPIDevice; AnalogInputDevice; MCP3xxx; + MCP30xx; + MCP32xx; MCP33xx; /* Concrete classes */ @@ -16,11 +18,17 @@ digraph classes { SPIDevice->Device; AnalogInputDevice->SPIDevice; MCP3xxx->AnalogInputDevice; + MCP30xx->MCP3xxx; + MCP32xx->MCP3xxx; MCP33xx->MCP3xxx; - MCP3004->MCP3xxx; - MCP3008->MCP3xxx; - MCP3204->MCP3xxx; - MCP3208->MCP3xxx; + MCP3001->MCP30xx; + MCP3002->MCP30xx; + MCP3004->MCP30xx; + MCP3008->MCP30xx; + MCP3201->MCP32xx; + MCP3202->MCP32xx; + MCP3204->MCP32xx; + MCP3208->MCP32xx; MCP3301->MCP33xx; MCP3302->MCP33xx; MCP3304->MCP33xx; diff --git a/docs/images/spi_device_hierarchy.pdf b/docs/images/spi_device_hierarchy.pdf index 67b92df2740228540e1eed6bb48255cf80377e0e..9a751964a6081d715426a2985bac2245425d61a0 100644 GIT binary patch delta 7596 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 delta 7248 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 diff --git a/docs/images/spi_device_hierarchy.png b/docs/images/spi_device_hierarchy.png index 14d63b02d2474c85daef09799a01adbc190b35c0..c52cbf39c225a81a63d47b5bd308b1d0e63e7990 100644 GIT binary patch literal 45362 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 Ji|#%N_!spedME$@ literal 30371 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

{Yi1g2f%E0zYqeCfp$C!o&vAEPi0>hXO3)_w z+jb(B4Ze`5aMrkf6&pSRG7h;3zrY_u&LU=wu%GQahYLEn`n_JWDTz~NEm|Ay3H9VO zB@&X>v5NhSFOusmMbD0p9a^^2Sako{4^O&VSfCbWHhWoYhs8L_gVShchNM9XA#hz| zKL&XZlCAFiU(%QU+gAGDr$GJBdt^xbd633c6v5KT*zz>fYF8|}&U0~u_}GA$k5xKp zMfg7IlM#t+(h3_$PYYRGNqx%^SRE8(<94~Xv;X|I`QZU*lAyd1 - + classes - + Device - -Device + +Device SPIDevice - -SPIDevice + +SPIDevice SPIDevice->Device - - + + AnalogInputDevice - -AnalogInputDevice + +AnalogInputDevice AnalogInputDevice->SPIDevice - - + + MCP3xxx - -MCP3xxx + +MCP3xxx MCP3xxx->AnalogInputDevice - - + + + + +MCP30xx + +MCP30xx + + +MCP30xx->MCP3xxx + + + + +MCP32xx + +MCP32xx + + +MCP32xx->MCP3xxx + + -MCP33xx - -MCP33xx +MCP33xx + +MCP33xx -MCP33xx->MCP3xxx - - +MCP33xx->MCP3xxx + + + + +MCP3001 + +MCP3001 + + +MCP3001->MCP30xx + + + + +MCP3002 + +MCP3002 + + +MCP3002->MCP30xx + + -MCP3004 - -MCP3004 +MCP3004 + +MCP3004 - -MCP3004->MCP3xxx - - + +MCP3004->MCP30xx + + -MCP3008 - -MCP3008 +MCP3008 + +MCP3008 - -MCP3008->MCP3xxx - - + +MCP3008->MCP30xx + + + + +MCP3201 + +MCP3201 + + +MCP3201->MCP32xx + + + + +MCP3202 + +MCP3202 + + +MCP3202->MCP32xx + + -MCP3204 - -MCP3204 +MCP3204 + +MCP3204 - -MCP3204->MCP3xxx - - + +MCP3204->MCP32xx + + -MCP3208 - -MCP3208 +MCP3208 + +MCP3208 - -MCP3208->MCP3xxx - - + +MCP3208->MCP32xx + + -MCP3301 - -MCP3301 +MCP3301 + +MCP3301 -MCP3301->MCP33xx - - +MCP3301->MCP33xx + + -MCP3302 - -MCP3302 +MCP3302 + +MCP3302 -MCP3302->MCP33xx - - +MCP3302->MCP33xx + + -MCP3304 - -MCP3304 +MCP3304 + +MCP3304 -MCP3304->MCP33xx - - +MCP3304->MCP33xx + + diff --git a/gpiozero/spi_devices.py b/gpiozero/spi_devices.py index 78c2a5d..d866b0c 100644 --- a/gpiozero/spi_devices.py +++ b/gpiozero/spi_devices.py @@ -92,7 +92,7 @@ class AnalogInputDevice(SPIDevice): def value(self): """ The current value read from the device, scaled to a value between 0 and - 1 (or -1 to +1 for devices operating in differential mode). + 1. """ return self._read() / (2**self.bits - 1) @@ -119,8 +119,9 @@ class MCP3xxx(AnalogInputDevice): def channel(self): """ The channel to read data from. The MCP3008/3208/3304 have 8 channels - (0-7), while the MCP3004/3204/3302 have 4 channels (0-3), and the - MCP3301 only has 1 channel. + (0-7), while the MCP3004/3204/3302 have 4 channels (0-3), the + MCP3002/3202 have 2 channels (0-1), and the MCP3001/3201/3301 only + have 1 channel. """ return self._channel @@ -164,6 +165,26 @@ class MCP3xxx(AnalogInputDevice): return ((data[1] & 63) << (self.bits - 6)) | (data[2] >> (14 - self.bits)) +class MCP30xx(MCP3xxx): + """ + Extends :class:`MCP3xxx` to implement an interface for all ADC + chips with a protocol similar to the Microchip MCP30xx series of devices. + """ + + def __init__(self, channel=0, differential=False, **spi_args): + super(MCP30xx, self).__init__(channel, 10, differential, **spi_args) + + +class MCP32xx(MCP3xxx): + """ + Extends :class:`MCP3xxx` to implement an interface for all ADC + chips with a protocol similar to the Microchip MCP32xx series of devices. + """ + + def __init__(self, channel=0, differential=False, **spi_args): + super(MCP32xx, self).__init__(channel, 12, differential, **spi_args) + + class MCP33xx(MCP3xxx): """ Extends :class:`MCP3xxx` with functionality specific to the MCP33xx family @@ -213,18 +234,40 @@ class MCP33xx(MCP3xxx): def _send(self): return [16 + [8, 0][self.differential] + self.channel, 0, 0] + @property + def differential(self): + """ + If ``True``, the device is operated in differential mode. In this mode + one channel (specified by the channel attribute) is read relative to + the value of a second channel (implied by the chip's design). -class MCP3001(MCP3xxx): + Please refer to the device data-sheet to determine which channel is + used as the relative base value (for example, when using an + :class:`MCP3304` in differential mode, channel 0 is read relative to + channel 1). + """ + return super(MCP33xx, self).differential + + @property + def value(self): + """ + The current value read from the device, scaled to a value between 0 and + 1 (or -1 to +1 for devices operating in differential mode). + """ + return super(MCP33xx, self).value + + +class MCP3001(MCP30xx): """ The `MCP3001`_ is a 10-bit analog to digital converter with 1 channel .. _MCP3001: http://www.farnell.com/datasheets/630400.pdf """ def __init__(self, **spi_args): - super(MCP3001, self).__init__(0, 10, differential=True, **spi_args) + super(MCP3001, self).__init__(0, differential=True, **spi_args) -class MCP3002(MCP3xxx): +class MCP3002(MCP30xx): """ The `MCP3002`_ is a 10-bit analog to digital converter with 2 channels (0-1). @@ -234,10 +277,10 @@ class MCP3002(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 2: raise InputDeviceError('channel must be 0 or 1') - super(MCP3002, self).__init__(channel, 10, differential, **spi_args) + super(MCP3002, self).__init__(channel, differential, **spi_args) -class MCP3004(MCP3xxx): +class MCP3004(MCP30xx): """ The `MCP3004`_ is a 10-bit analog to digital converter with 4 channels (0-3). @@ -247,10 +290,10 @@ class MCP3004(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 4: raise InputDeviceError('channel must be between 0 and 3') - super(MCP3004, self).__init__(channel, 10, differential, **spi_args) + super(MCP3004, self).__init__(channel, differential, **spi_args) -class MCP3008(MCP3xxx): +class MCP3008(MCP30xx): """ The `MCP3008`_ is a 10-bit analog to digital converter with 8 channels (0-7). @@ -260,20 +303,20 @@ class MCP3008(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 8: raise InputDeviceError('channel must be between 0 and 7') - super(MCP3008, self).__init__(channel, 10, differential, **spi_args) + super(MCP3008, self).__init__(channel, differential, **spi_args) -class MCP3201(MCP3xxx): +class MCP3201(MCP32xx): """ The `MCP3201`_ is a 12-bit analog to digital converter with 1 channel .. _MCP3201: http://www.farnell.com/datasheets/1669366.pdf """ def __init__(self, **spi_args): - super(MCP3201, self).__init__(0, 12, differential=True, **spi_args) + super(MCP3201, self).__init__(0, differential=True, **spi_args) -class MCP3202(MCP3xxx): +class MCP3202(MCP32xx): """ The `MCP3202`_ is a 12-bit analog to digital converter with 2 channels (0-1). @@ -283,10 +326,10 @@ class MCP3202(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 2: raise InputDeviceError('channel must be 0 or 1') - super(MCP3202, self).__init__(channel, 12, differential, **spi_args) + super(MCP3202, self).__init__(channel, differential, **spi_args) -class MCP3204(MCP3xxx): +class MCP3204(MCP32xx): """ The `MCP3204`_ is a 12-bit analog to digital converter with 4 channels (0-3). @@ -296,10 +339,10 @@ class MCP3204(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 4: raise InputDeviceError('channel must be between 0 and 3') - super(MCP3204, self).__init__(channel, 12, differential, **spi_args) + super(MCP3204, self).__init__(channel, differential, **spi_args) -class MCP3208(MCP3xxx): +class MCP3208(MCP32xx): """ The `MCP3208`_ is a 12-bit analog to digital converter with 8 channels (0-7). @@ -309,7 +352,7 @@ class MCP3208(MCP3xxx): def __init__(self, channel=0, differential=False, **spi_args): if not 0 <= channel < 8: raise InputDeviceError('channel must be between 0 and 7') - super(MCP3208, self).__init__(channel, 12, differential, **spi_args) + super(MCP3208, self).__init__(channel, differential, **spi_args) class MCP3301(MCP33xx):