Source code for pi_weather.core.io.rgb_led

"""Logic to manage a RGB LED"""

from typing import Optional

from gpiozero.output_devices import RGBLED

from pi_weather.utils.logs import get_logger

logger = get_logger(__name__)


[docs] class LED: """ Class to manage one RGB LED """
[docs] def __init__(self, r_pin: int, g_pin: int, b_pin: int) -> None: """ C-tor function to define a RGB LED :param r_pin: Red pin :type r_pin: int :param g_pin: Green pin :type g_pin: int :param b_pin: Blue pin :type b_pin: int """ self._led: Optional[RGBLED] = None self._r_pin: int = r_pin self._g_pin: int = g_pin self._b_pin: int = b_pin self.setup_led()
[docs] def setup_led(self) -> None: """ Function to set up the LED object :return: Nothing :rtype: None """ self._led = RGBLED( red=self._r_pin, green=self._g_pin, blue=self._b_pin, active_high=True )
[docs] def turn_on(self) -> None: """ Function to turn the LED on :return: Nothing :rtype: None """ if self._led: self._led.on() logger.info("LED turned on")
[docs] def turn_off(self) -> None: """ Function to turn the LED off :return: Nothing :rtype: None """ if self._led: self._led.off() logger.info("LED turned off")
[docs] def set_color(self, r: float, g: float, b: float) -> None: """ Function to set the color of the LED :param r: Red value :type r: float :param g: Green value :type g: float :param b: Blue value :type b: float :return: Nothing :rtype: None """ logger.info(f"Setting LED color to: ({r}, {g}, {b})") if self._led: self._led.color = (r, g, b)
# led.color(r, g, b)
[docs] def close(self) -> None: """ Function to close the LED object interface :return: Nothing :rtype: None """ if self._led: logger.info("Closing buzzer...") self._led.close()
[docs] def __del__(self) -> None: """ D-tor function :return: Nothing :rtype: None """ self.close()