← Back to ratslair.com
aboutsummaryrefslogtreecommitdiff
path: root/rgb_led.c
diff options
context:
space:
mode:
Diffstat (limited to 'rgb_led.c')
-rw-r--r--rgb_led.c31
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);
+}