Quellcode für fusion_hat.modules.rgb_led

from ..pwm import PWM
from typing import Union, List, Tuple, Optional


[Doku] class RGB_LED(): """Simple 3 pin RGB LED""" ANODE = 1 """Common anode""" CATHODE = 0 """Common cathode""" def __init__(self, r_pin: PWM, g_pin: PWM, b_pin: PWM, common: int = 1): """ Initialize RGB LED :param r_pin: PWM object for red :type r_pin: fusion_hat.PWM :param g_pin: PWM object for green :type g_pin: fusion_hat.PWM :param b_pin: PWM object for blue :type b_pin: fusion_hat.PWM :param common: RGB_LED.ANODE or RGB_LED.CATHODE, default is ANODE :type common: int :raise ValueError: if common is not ANODE or CATHODE :raise TypeError: if r_pin, g_pin or b_pin is not PWM object """ if not isinstance(r_pin, PWM): raise TypeError("r_pin must be fusion_hat.PWM object") if not isinstance(g_pin, PWM): raise TypeError("g_pin must be fusion_hat.PWM object") if not isinstance(b_pin, PWM): raise TypeError("b_pin must be fusion_hat.PWM object") if common not in (self.ANODE, self.CATHODE): raise ValueError("common must be RGB_LED.ANODE or RGB_LED.CATHODE") self.r_pin = r_pin self.g_pin = g_pin self.b_pin = b_pin self.common = common
[Doku] def color(self, color: Union[str, Tuple[int, int, int], List[int], int]): """ Write color to RGB LED :param color: color to write, hex string starts with "#", 24-bit int or tuple of (red, green, blue) :type color: str/int/tuple/list """ if not isinstance(color, (str, int, tuple, list)): raise TypeError("color must be str, int, tuple or list") if isinstance(color, str): color = color.strip("#") color = int(color, 16) if isinstance(color, (tuple, list)): r, g, b = color if isinstance(color, int): r = (color & 0xff0000) >> 16 g = (color & 0x00ff00) >> 8 b = (color & 0x0000ff) >> 0 if self.common == self.ANODE: r = 255-r g = 255-g b = 255-b r = r / 255.0 * 100.0 g = g / 255.0 * 100.0 b = b / 255.0 * 100.0 self.r_pin.pulse_width_percent(r) self.g_pin.pulse_width_percent(g) self.b_pin.pulse_width_percent(b)