Skip to content

Commit 1705caf

Browse files
committed
fix(rgb-led): Implement rgbLedWriteOrdered()
1 parent 347b7c7 commit 1705caf

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

Diff for: cores/esp32/esp32-hal-rgb-led.c

+9-5
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
#include "esp32-hal-rgb-led.h"
1818

19-
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {
19+
void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {
20+
rgbLedWriteOrdered(pin, RGB_BUILTIN_LED_COLOR_ORDER, red_val, green_val, blue_val);
21+
}
22+
23+
void rgbLedWriteOrdered(uint8_t pin, rgb_led_color_order_t order, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {
2024
#if SOC_RMT_SUPPORTED
2125
rmt_data_t led_data[24];
2226

@@ -32,9 +36,7 @@ void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue
3236
// default WS2812B color order is G, R, B
3337
const int color[3] = {green_val, red_val, blue_val};
3438

35-
#if defined RGB_BUILTIN_LED_COLOR_ORDER
36-
// the onboard RGB LED has a different color order
37-
switch (RGB_BUILTIN_LED_COLOR_ORDER) {
39+
switch (order) {
3840
case LED_COLOR_ORDER_RGB:
3941
color[0] = red_val;
4042
color[1] = green_val;
@@ -59,8 +61,10 @@ void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue
5961
color[0] = green_val;
6062
color[1] = blue_val;
6163
color[2] = red_val;
64+
break;
65+
default: // GRB
66+
break;
6267
}
63-
#endif
6468

6569
int i = 0;
6670
for (int col = 0; col < 3; col++) {

Diff for: cores/esp32/esp32-hal-rgb-led.h

+11-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ extern "C" {
1111
#define RGB_BRIGHTNESS 64
1212
#endif
1313

14-
#if defined RGB_BUILTIN_LED_COLOR_ORDER
14+
#ifndef RGB_BUILTIN_LED_COLOR_ORDER
15+
#define RGB_BUILTIN_LED_COLOR_ORDER LED_COLOR_ORDER_GRB // default WS2812B color order
16+
#endif
17+
1518
typedef enum {
1619
LED_COLOR_ORDER_RGB,
1720
LED_COLOR_ORDER_BGR,
@@ -20,9 +23,14 @@ typedef enum {
2023
LED_COLOR_ORDER_GBR,
2124
LED_COLOR_ORDER_GRB
2225
} rgb_led_color_order_t;
23-
#endif
2426

25-
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
27+
void rgbLedWriteOrdered(uint8_t pin, rgb_led_color_order_t order, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
28+
29+
// Will use RGB_BUILTIN_LED_COLOR_ORDER
30+
void rgbLedWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
31+
32+
// Backward compatibility
33+
#define neopixelWrite(p,r,g,b) rgbLedWrite(p,r,g,b)
2634

2735
#ifdef __cplusplus
2836
}

0 commit comments

Comments
 (0)