diff options
| author | Edvin <[email protected]> | 2025-09-23 16:25:37 +0200 |
|---|---|---|
| committer | Edvin <[email protected]> | 2025-09-23 16:25:37 +0200 |
| commit | ee756f7e231300cdf8e110441e0699a8de1abdfa (patch) | |
| tree | 156020048073e38f98394f31abb0549c4db52c4f | |
First commit
| -rw-r--r-- | CMakeLists.txt | 3 | ||||
| -rw-r--r-- | include/rgb_led.h | 25 | ||||
| -rw-r--r-- | rgb_led.c | 31 |
3 files changed, 59 insertions, 0 deletions
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); +} |
