From cf18fb971ed40b5ff4798c19910ed78a505762ef Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sun, 31 Jan 2016 13:31:59 +0000 Subject: [PATCH] Fix #121 Change parent of PWMOutputDevice to OutputDevice and implement blink to maintain compatibility. The version of blink implemented here is slightly extended to include functionality like Explorer HAT's "pulse". The parameter defaults behave identically to OutputDevice's blink but can be adjusted to have the device smoothly fade in and out. --- docs/images/gpio_device_hierarchy.dot | 2 +- docs/images/gpio_device_hierarchy.pdf | Bin 9615 -> 9619 bytes docs/images/gpio_device_hierarchy.png | Bin 39203 -> 38220 bytes docs/images/gpio_device_hierarchy.svg | 110 +++++++++++++------------- gpiozero/output_devices.py | 94 +++++++++++++++++++--- 5 files changed, 141 insertions(+), 65 deletions(-) diff --git a/docs/images/gpio_device_hierarchy.dot b/docs/images/gpio_device_hierarchy.dot index 8dbe9d3..2461094 100644 --- a/docs/images/gpio_device_hierarchy.dot +++ b/docs/images/gpio_device_hierarchy.dot @@ -17,7 +17,7 @@ digraph classes { DigitalOutputDevice->OutputDevice; LED->DigitalOutputDevice; Buzzer->DigitalOutputDevice; - PWMOutputDevice->DigitalOutputDevice; + PWMOutputDevice->OutputDevice; PWMLED->PWMOutputDevice; } diff --git a/docs/images/gpio_device_hierarchy.pdf b/docs/images/gpio_device_hierarchy.pdf index 3299c2dc0964b36ef0060dc0fb73b7cac6619356..ff427f421d54354638f3f46022ab32b66cf8c712 100644 GIT binary patch delta 1466 zcmZXNc{~#e0LOETkYkkNZOj=j$7h?3@ucjDnES|>xss4GQqS>5FSnSslqmPJT-D}k z(%~3kdOb(3)by-jm2(@5-sinP`Th0#e1E^s?^lE&VTk^OhMm1gfR+M~%TSch$v!j+ z(1U@>@wtI7>XW%oUXO%o-&DvONNe01jBxYFM<%Wu@tUyTrcx2z}4=Cf*j9^pCj*NsCRD*c)ey#i$yPuv9OZHJ9^%r0dn2_2;gB{G9y?U}ZG=O~?)6PeMBL1V@sBPaH9 ztLXO*Hht+4Zp7wpoJz0iL{7cILI}DLU|0=G?ye|2kD_-@`=@r}Cw$UU7YZLd`zqID zi?Lo};U2p@>u)=v@}v*==K558T1aZ(s?(Q=hg0Qahp_`dKITeEz5{|zJ$pIbIn{SgV%&q0Fb+3#<*cPF@8B+)Me)~bqb<|_hpz`e8kWE*u)BUL&Z4uT~ z<);8Q?FH2_)n$XOkn?{ZO%fsd=N~-=IIAVa(C3LDtMq1YNKB<$x;=lDv|vQczq4a9 ztibI56h?avQ3&l5`Neoagw;3_V}DEey2g)+T=lZ=-3AIpY&aaOOKit%qn!6np4!6n)c01DFO}%8fnuTZVhgUtz0Vub*;7^G0t z<9@XVsnlOn$C=>CNl4q`C^35aG3rjS@0-vJoDd!@y0!DzlVHUTXpe3OSc;N@A*ST& zmbx!e1=hklPUsXHRsz;SNa(kMLyW%;3TONpEV0%)9TW;`BL*xfrBA#RKJeUoRPS8LVX+ z*#+^tucHx6$nsmVLTB~0TFph2V%+5lqy`fr(sI!rLEUE(uGI<9L2j18DkJJiy7>bi zUij<|`HV+wi$xN#n^hiTSp|i)?Ra&3UuL``^4efPX9X~FW))3wnmI`u;t~DcBfSN$ z+vaOJ!q2VA%#!OIVg#&-(jr#*u3)K&y^>(va>A`qc)QBAD^Q^~>_$G1Vp*SPNQcOy z*MeG)vq;;tkG0W?YzH%6!ZY$+d#XaHgyIt_XLFqGe=pSibD|N?Bf^(!$2a0_s4xSW zKg3L~07wu3L=*udod!@vOlcbcZ;fN-n$Z8G8KWuvzk$L`k!B>k?s02V)BO<&iG=TG zFoYTM05dbUAidI6x^Q6J90iB&Z=>Ky)Io-V?PnHH^8@b|a43{yq30}xG?muVJL766 F{Vx=AqTm1k delta 1512 zcmZXSdpOez7{^J%YAR7mSR%4yV{0bSkd$1SM#;vE+8E6ydE9=Q6{6W`b=*ZuryjYh z)>KEw=C&-PVw;j8ayzxTbf(j(^K||=djEO9&*y!g@B97Z<$C3Mae{%JDJgfDYcjRt zNm*J#H?{Z7OZi|)wXo*3e{|cfxkH;NEY4KHtcHven)fS1jL~#B z?l6r>@tEFyiY)*EscAu6*|gC?07RfuLMn|k2)!D~Ux z7Pi!?fHe~g$;=1Uhnl*^1sT3i!}`r05pH+)sRNiRow=*V!I~6|x-qxP1X)NG>scOq zZtds_>c@M&imXx}1RGhPiVrlKYim)kNykj+(COGEBwJ;uFg7+cy7Z=B=X1{mUM3e;yj^tv126N z40I=<>kx8PZ4$sZ{m^jlhMo|&VX(lnPvF>%GuJyv8H=3g-ok@wwS!S_oL6*5Jh@0t z*ovZWtgs+vZw3{0N7DA(+SxHB%mLKfr1G;+ExdM-o}rP`CaG>x%0t^Ba~vTFueKtWOXgC;So8^#6-t1)wKtv?0U(Yukk$tj%9(Y zr~}~Qv@4BWhes#F8F0#TTkh|`(>Wv4b@dew&Rry;pD&*CQ#7rzA;Vm-MX#fML_$8D zt`XT{ExHCiq)JaKH}xMsZ`|_djlT80_0+U)&l^-$F({wLByXPWU@8@=h4I_CDaHvl z;~Y+Qf&yGGv?|A7+m}z(Nog6{4R@}j5h30zvP#4JjRFR|+@$yH6<+lsK*nj@@}!)i z`{iU7-8M$QQ{D=TOVJMZu*N=1%d=ga}fO`M5= zJp}f>ATbcozXArgN7`|T=G(08&`U=SNQA>u21o3IbL-640m!8j6bk*5Im!XPYw4bY o9r9b^|A%m}L!p*3G;G&T*U@nF4?nJ(#eN+G8f0Oy&({O=4>72&-~a#s diff --git a/docs/images/gpio_device_hierarchy.png b/docs/images/gpio_device_hierarchy.png index 5d61a8b6ebc72451c2e4a8f9a578fcba71f71f36..b66c47f22362ef6233bce84caba63a3e1dd1c2a3 100644 GIT binary patch literal 38220 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

EJ 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 - + classes - + InputDevice - -InputDevice + +InputDevice GPIODevice - -GPIODevice + +GPIODevice InputDevice->GPIODevice - - + + WaitableInputDevice - -WaitableInputDevice + +WaitableInputDevice WaitableInputDevice->InputDevice - - + + DigitalInputDevice - -DigitalInputDevice + +DigitalInputDevice DigitalInputDevice->WaitableInputDevice - - + + SmoothedInputDevice - -SmoothedInputDevice + +SmoothedInputDevice SmoothedInputDevice->WaitableInputDevice - - + + Button - -Button + +Button Button->DigitalInputDevice - - + + MotionSensor - -MotionSensor + +MotionSensor MotionSensor->SmoothedInputDevice - - + + LightSensor - -LightSensor + +LightSensor LightSensor->SmoothedInputDevice - - + + OutputDevice - -OutputDevice + +OutputDevice OutputDevice->GPIODevice - - + + DigitalOutputDevice - -DigitalOutputDevice + +DigitalOutputDevice DigitalOutputDevice->OutputDevice - - + + LED @@ -111,8 +111,8 @@ LED->DigitalOutputDevice - - + + Buzzer @@ -121,28 +121,28 @@ Buzzer->DigitalOutputDevice - - + + PWMOutputDevice - -PWMOutputDevice + +PWMOutputDevice - -PWMOutputDevice->DigitalOutputDevice - - + +PWMOutputDevice->OutputDevice + + PWMLED - -PWMLED + +PWMLED PWMLED->PWMOutputDevice - - + + diff --git a/gpiozero/output_devices.py b/gpiozero/output_devices.py index 6e5590c..4ccb151 100644 --- a/gpiozero/output_devices.py +++ b/gpiozero/output_devices.py @@ -8,7 +8,7 @@ from __future__ import ( import warnings from time import sleep from threading import Lock -from itertools import repeat +from itertools import repeat, cycle, chain from RPi import GPIO @@ -136,19 +136,19 @@ class DigitalOutputDevice(OutputDevice): Make the device turn on and off repeatedly. :param float on_time: - Number of seconds on + Number of seconds on. Defaults to 1 second. :param float off_time: - Number of seconds off + Number of seconds off. Defaults to 1 second. :param int n: - Number of times to blink; ``None`` means forever + Number of times to blink; ``None`` (the default) means forever. :param bool background: - 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). + If ``True`` (the default), 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). """ self._stop_blink() self._blink_thread = GPIOThread( @@ -233,7 +233,7 @@ class Buzzer(DigitalOutputDevice): Buzzer.beep = Buzzer.blink -class PWMOutputDevice(DigitalOutputDevice): +class PWMOutputDevice(OutputDevice): """ Generic output device configured for pulse-width modulation (PWM). @@ -247,6 +247,7 @@ class PWMOutputDevice(DigitalOutputDevice): """ def __init__(self, pin=None, frequency=100): self._pwm = None + self._blink_thread = None super(PWMOutputDevice, self).__init__(pin) try: self._pwm = GPIO.PWM(self.pin, frequency) @@ -295,6 +296,14 @@ class PWMOutputDevice(DigitalOutputDevice): self._stop_blink() self._write(value) + def on(self): + self._stop_blink() + self._write(self._active_state) + + def off(self): + self._stop_blink() + self._write(self._inactive_state) + def toggle(self): """ Toggle the state of the device. If the device is currently off @@ -302,6 +311,7 @@ class PWMOutputDevice(DigitalOutputDevice): 1.0). If the device has a duty cycle (:attr:`value`) of 0.1, this will toggle it to 0.9, and so on. """ + self._stop_blink() self.value = 1.0 - self.value @property @@ -325,6 +335,72 @@ class PWMOutputDevice(DigitalOutputDevice): self._pwm.ChangeFrequency(value) self._frequency = value + def blink( + self, on_time=1, off_time=1, fade_in_time=0, fade_out_time=0, + n=None, background=True): + """ + Make the device turn on and off repeatedly. + + :param float on_time: + Number of seconds on. Defaults to 1 second. + + :param float off_time: + Number of seconds off. Defaults to 1 second. + + :param float fade_in_time: + Number of seconds to spend fading in. Defaults to 0. + + :param float fade_out_time: + Number of seconds to spend fading out. Defaults to 0. + + :param int n: + Number of times to blink; ``None`` (the default) means forever. + + :param bool background: + If ``True`` (the default), 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). + """ + self._stop_blink() + self._blink_thread = GPIOThread( + target=self._blink_led, + args=(on_time, off_time, fade_in_time, fade_out_time, n) + ) + self._blink_thread.start() + if not background: + self._blink_thread.join() + self._blink_thread = None + + def _stop_blink(self): + if self._blink_thread: + self._blink_thread.stop() + self._blink_thread = None + + def _blink_led( + self, on_time, off_time, fade_in_time, fade_out_time, n, fps=50): + sequence = [] + if fade_in_time > 0.0: + sequence += [ + (i * (1 / fps) / fade_in_time, 1 / fps) + for i in range(int(50 * fade_in_time)) + ] + sequence.append((1.0, on_time)) + if fade_out_time > 0.0: + sequence += [ + (1 - (i * (1 / fps) / fade_out_time), 1 / fps) + for i in range(int(50 * fade_out_time)) + ] + sequence.append((0.0, off_time)) + sequence = ( + cycle(sequence) if n is None else + chain.from_iterable(repeat(sequence, n)) + ) + for value, delay in sequence: + self._write(value) + if self._blink_thread.stopping.wait(delay): + break + class PWMLED(PWMOutputDevice): """