From a0cd4eb479979ceef4a8cd3a08b7b2a812946e44 Mon Sep 17 00:00:00 2001 From: Balthasar Reuter Date: Fri, 20 Jul 2018 17:27:39 +0200 Subject: [PATCH] RGB LED added, untested! --- photobooth/defaults.cfg | 7 ++++++ photobooth/gpio/__init__.py | 47 ++++++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/photobooth/defaults.cfg b/photobooth/defaults.cfg index 43cd035..940af2d 100644 --- a/photobooth/defaults.cfg +++ b/photobooth/defaults.cfg @@ -26,6 +26,13 @@ exit_pin = 24 trigger_pin = 23 # BOARD pin 7 (BCM pin 4) switches the lamp on and off lamp_pin = 4 +# BOARD pin (BCM pin 17) switches the blue channel +chan_b_pin = 17 +# BOARD pin (BCM pin 27) switches the red channel +chan_r_pin = 27 +# BOARD pin (BCM pin 22) switches the green channel +chan_g_pin = 22 + [Printer] # Enable printing (True/False) diff --git a/photobooth/gpio/__init__.py b/photobooth/gpio/__init__.py index 49f5387..76131f6 100644 --- a/photobooth/gpio/__init__.py +++ b/photobooth/gpio/__init__.py @@ -46,12 +46,18 @@ class Gpio: trigger_pin = config.getInt('Gpio', 'trigger_pin') exit_pin = config.getInt('Gpio', 'exit_pin') + rgb_pin = (config.getInt('Gpio', 'chan_r_pin'), + config.getInt('Gpio', 'chan_g_pin'), + config.getInt('Gpio', 'chan_b_pin')) + logging.info(('GPIO enabled (lamp_pin=%d, trigger_pin=%d, ' - 'exit_pin=%d)'), lamp_pin, trigger_pin, exit_pin) + 'exit_pin=%d, rgb_pins=(%d, %d, %d))'), + lamp_pin, trigger_pin, exit_pin, *rgb_pin) self._gpio.setButton(trigger_pin, self.trigger) self._gpio.setButton(exit_pin, self.exit) self._lamp = self._gpio.setLamp(lamp_pin) + self._rgb = self._gpio.setRgb(rgb_pin) else: logging.info('GPIO disabled') @@ -97,6 +103,21 @@ class Gpio: self._is_trigger = False self._gpio.lampOff(self._lamp) + def setRgbColor(self, r, g, b): + + if self._is_enabled: + self._gpio.rgbColor(self._rgb, (r, g, b)) + + def rgbOn(self): + + if self._is_enabled: + self._gpio.rgbOn(self._rgb) + + def rgbOff(self): + + if self._is_enabled: + self._gpio.rgbOff(self._rgb) + def trigger(self): if self._is_trigger: @@ -123,11 +144,12 @@ class Gpio: def showCapture(self): - pass + self.rgbOn() + self.setRgbColor(1, 1, 1) def showAssemble(self): - pass + self.rgbOff() def showReview(self): @@ -146,10 +168,12 @@ class Entities: import gpiozero self.LED = gpiozero.LED + self.RGBLED = gpiozero.RGBLED self.Button = gpiozero.Button self._buttons = [] self._lamps = [] + self._rgb = [] def setButton(self, bcm_pin, handler): @@ -161,6 +185,11 @@ class Entities: self._lamps.append(self.LED(bcm_pin)) return len(self._lamps) - 1 + def setRgb(self, bcm_pins): + + self._rgb.append(self.RGBLED(*bcm_pins)) + return len(self._lamps) - 1 + def lampOn(self, index): self._lamps[index].on() @@ -172,3 +201,15 @@ class Entities: def lampToggle(self, index): self._lamps[index].toggle() + + def rgbOn(self, index): + + self._rgb[index].on() + + def rgbOff(self, index): + + self._rgb[index].off() + + def rgbColor(self, index, color): + + self._rgb[index].color = color