From ee756f7e231300cdf8e110441e0699a8de1abdfa Mon Sep 17 00:00:00 2001 From: Edvin Date: Tue, 23 Sep 2025 16:25:37 +0200 Subject: First commit --- CMakeLists.txt | 3 +++ include/rgb_led.h | 25 +++++++++++++++++++++++++ rgb_led.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 include/rgb_led.h create mode 100644 rgb_led.c diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..80b94c9 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,3 @@ +idf_component_register(SRCS "rgb_led.c" + INCLUDE_DIRS "include" + REQUIRES "driver") diff --git a/include/rgb_led.h b/include/rgb_led.h new file mode 100644 index 0000000..66eaddc --- /dev/null +++ b/include/rgb_led.h @@ -0,0 +1,25 @@ +typedef struct { + bool R; + bool G; + bool B; +} rgb_color; + +#define rgb_white (rgb_color){ .R = 0, .G = 0, .B = 0 } +#define rgb_yellow (rgb_color){ .R = 0, .G = 0, .B = 1 } +#define rgb_purple (rgb_color){ .R = 0, .G = 1, .B = 0 } +#define rgb_red (rgb_color){ .R = 0, .G = 1, .B = 1 } +#define rgb_cyan (rgb_color){ .R = 1, .G = 0, .B = 0 } +#define rgb_green (rgb_color){ .R = 1, .G = 0, .B = 1 } +#define rgb_blue (rgb_color){ .R = 1, .G = 1, .B = 0 } +#define rgb_black (rgb_color){ .R = 1, .G = 1, .B = 1 } + +typedef struct { + rgb_color color; + int R_pin; + int G_pin; + int B_pin; +} rgb_led; + +void rgb_init_LED(rgb_led *LED, int R_pin, int G_pin, int B_pin); + +void rgb_set_color(rgb_led *LED, rgb_color color); diff --git a/rgb_led.c b/rgb_led.c new file mode 100644 index 0000000..63d88e5 --- /dev/null +++ b/rgb_led.c @@ -0,0 +1,31 @@ +#include "driver/gpio.h" +#include "rgb_led.h" + +void rgb_init_LED(rgb_led *LED, int R_pin, int G_pin, int B_pin) +{ + LED->R_pin = R_pin; + LED->G_pin = G_pin; + LED->B_pin = B_pin; + LED->color = rgb_black; + + // Clear previous pin configuration. + gpio_reset_pin(LED->R_pin); + gpio_set_direction(LED->R_pin, GPIO_MODE_OUTPUT); + gpio_reset_pin(LED->G_pin); + gpio_set_direction(LED->G_pin, GPIO_MODE_OUTPUT); + gpio_reset_pin(LED->B_pin); + gpio_set_direction(LED->B_pin, GPIO_MODE_OUTPUT); + + gpio_set_level(LED->R_pin, LED->color.R); + gpio_set_level(LED->G_pin, LED->color.G); + gpio_set_level(LED->B_pin, LED->color.B); +} + +void rgb_set_color(rgb_led *LED, rgb_color color) +{ + LED->color = color; + + gpio_set_level(LED->R_pin, LED->color.R); + gpio_set_level(LED->G_pin, LED->color.G); + gpio_set_level(LED->B_pin, LED->color.B); +} -- cgit v1.2.3