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()