diff --git a/docs/outputs.md b/docs/outputs.md index f21d762..b133512 100644 --- a/docs/outputs.md +++ b/docs/outputs.md @@ -130,14 +130,14 @@ led = RGBLED(2, 3, 4) | Property | Description | Type | | -------- | ----------- | ---- | -| `red` | The brightness value of the red LED (0 to 100). | Integer | -| `green` | The brightness value of the green LED (0 to 100). | Integer | -| `blue` | The brightness value of the blue LED (0 to 100). | Integer | -| `rgb` | The brightness values of the three LEDs (0 to 100). | Tuple | +| `red` | The brightness value of the red LED (0 to 255). | Integer | +| `green` | The brightness value of the green LED (0 to 255). | Integer | +| `blue` | The brightness value of the blue LED (0 to 255). | Integer | +| `rgb` | The brightness values of the three LEDs (0 to 255). | Tuple | ## Motor -Generic single-direction motor. +Generic bi-directional motor. ### Wiring diff --git a/docs/recipes.md b/docs/recipes.md index e88f9c1..bb53a1d 100644 --- a/docs/recipes.md +++ b/docs/recipes.md @@ -266,20 +266,20 @@ from time import sleep led = RGBLED(red=9, green=10, blue=11) -led.red = 100 # full red -led.red = 50 # half red +led.red = 255 # full red +led.red = 128 # half red -led.rgb = (0, 100, 0) # full green +led.rgb = (0, 255, 0) # full green -led.rgb = (100, 0, 100) # magenta -led.rgb = (100, 100, 0) # yellow -led.rgb = (0, 100, 100) # cyan -led.rgb = (100, 100, 100) # white +led.rgb = (255, 0, 255) # magenta +led.rgb = (255, 255, 0) # yellow +led.rgb = (0, 255, 100) # cyan +led.rgb = (255, 255, 255) # white led.rgb = (0, 0, 0) # off # slowly increase intensity of blue -for n in range(100): +for n in range(256): led.blue += 1 sleep(0.1) ``` @@ -365,7 +365,7 @@ from gpiozero import RGBLED, MCP3008 def read_pot(channel): with MCP3008(channel=channel) as pot: - return 100 * pot.read() / 1023 + return 255 * pot.read() / 1023 led = RGBLED(red=2, green=3, blue=4) diff --git a/gpiozero/output_devices.py b/gpiozero/output_devices.py index 8a6c2f8..966c7ed 100644 --- a/gpiozero/output_devices.py +++ b/gpiozero/output_devices.py @@ -238,7 +238,7 @@ class RGBLED(object): @red.setter def red(self, value): - self._red.value = value + self._red.value = self._validate(value) @property def green(self): @@ -246,7 +246,7 @@ class RGBLED(object): @green.setter def green(self, value): - self._green.value = value + self._green.value = self._validate(value) @property def blue(self): @@ -254,21 +254,31 @@ class RGBLED(object): @blue.setter def blue(self, value): - self._blue.value = value + self._blue.value = self._validate(value) @property def rgb(self): - r = self._red.value - g = self._green.value - b = self._blue.value + r = self.red + g = self.green + b = self.blue return (r, g, b) @rgb.setter def rgb(self, values): r, g, b = values - self._red.value = r - self._green.value = g - self._blue.value = b + self.red = r + self.green = g + self.blue = b + + def _validate(self, value): + _min = self._min_value + _max = self._max_value + if _min >= value >= _max: + return value + else: + raise GPIODeviceError( + "Colour value must be between %s and %s" % (_min, _max) + ) class Motor(object):