Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 96180dc

Browse files
committedAug 7, 2024·
change(esp32): Added neopixelWriteOrdered() function
1 parent a64ffd0 commit 96180dc

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed
 

‎cores/esp32/esp32-hal-rgb-led.c

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
#include "esp32-hal-rgb-led.h"
44

5-
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {
5+
void neopixelWrite(uint8_t pin, uint8_t green_val, uint8_t red_val, uint8_t blue_val) {
6+
neopixelWriteOrdered(pin, GRB, red_val, green_val, blue_val);
7+
}
8+
9+
void neopixelWriteOrdered(uint8_t pin, color_order_t color_order, uint8_t red_val, uint8_t green_val, uint8_t blue_val) {
610
#if SOC_RMT_SUPPORTED
711
rmt_data_t led_data[24];
812

@@ -15,7 +19,39 @@ void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue
1519
return;
1620
}
1721

18-
int color[] = {red_val, green_val, blue_val};
22+
int color[3];
23+
switch (color_order) {
24+
case RGB:
25+
color[0] = red_val;
26+
color[1] = green_val;
27+
color[2] = blue_val;
28+
break;
29+
case BGR:
30+
color[0] = blue_val;
31+
color[1] = green_val;
32+
color[2] = red_val;
33+
break;
34+
case BRG:
35+
color[0] = blue_val;
36+
color[1] = red_val;
37+
color[2] = green_val;
38+
break;
39+
case RBG:
40+
color[0] = red_val;
41+
color[1] = blue_val;
42+
color[2] = green_val;
43+
break;
44+
case GBR:
45+
color[0] = green_val;
46+
color[1] = blue_val;
47+
color[2] = red_val;
48+
break;
49+
default:
50+
color[0] = green_val;
51+
color[1] = red_val;
52+
color[2] = blue_val;
53+
break;
54+
}
1955
int i = 0;
2056
for (int col = 0; col < 3; col++) {
2157
for (int bit = 0; bit < 8; bit++) {

‎cores/esp32/esp32-hal-rgb-led.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,18 @@ extern "C" {
1111
#define RGB_BRIGHTNESS 64
1212
#endif
1313

14-
void neopixelWrite(uint8_t pin, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
14+
typedef enum {
15+
RGB,
16+
BGR,
17+
BRG,
18+
RBG,
19+
GBR,
20+
GRB
21+
} color_order_t;
22+
23+
void neopixelWrite(uint8_t pin, uint8_t green_val, uint8_t red_val, uint8_t blue_val);
24+
25+
void neopixelWriteOrdered(uint8_t pin, color_order_t color_order, uint8_t red_val, uint8_t green_val, uint8_t blue_val);
1526

1627
#ifdef __cplusplus
1728
}

0 commit comments

Comments
 (0)
Please sign in to comment.