diff options
Diffstat (limited to 'rgb_led.c')
| -rw-r--r-- | rgb_led.c | 31 |
1 files changed, 31 insertions, 0 deletions
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); +} |
