88
99#include " BacklightRGB.h"
1010
11+ #if defined(ESP_ARDUINO_VERSION)
12+ #define USING_ARDUINO_ESP32
13+ #if (ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(3, 0, 0))
14+ #define ESP32_NEW_PWM
15+ #endif
16+ #endif
1117
1218BacklightRGB::BacklightRGB (uint8_t redPin, uint8_t greenPin, uint8_t bluePin) {
1319 _redPin = redPin; _greenPin = greenPin; _bluePin = bluePin;
@@ -24,28 +30,29 @@ BacklightRGB::BacklightRGB(uint8_t redPin, uint8_t greenPin, uint8_t bluePin, bo
2430}
2531
2632void BacklightRGB::begin () {
27- #ifdef ESP32
28- // Updated from 2.x
29- // ledcSetup(0, 5000, 8); ///< Channel 0, 5 kHz frequency, 8-bit resolution
30- // ledcSetup(1, 5000, 8); ///< Channel 1, 5 kHz frequency, 8-bit resolution
31- // ledcSetup(2, 5000, 8); ///< Channel 2, 5 kHz frequency, 8-bit resolution
32-
33- // ledcAttachPin(_redPin, 0); ///< Attach red pin to channel 0
34- // ledcAttachPin(_greenPin, 1); ///< Attach green pin to channel 1
35- // ledcAttachPin(_bluePin, 2); ///< Attach blue pin to channel 2
36-
37- // to 3.x
38- ledcAttach (_redPin, 5000 , 8 ); // /< red pin, 5 kHz frequency, 8-bit resolution
39- ledcAttach (_greenPin, 5000 , 8 ); // /< green pin, 5 kHz frequency, 8-bit resolution
40- ledcAttach (_bluePin, 5000 , 8 ); // /< blue pin, 5 kHz frequency, 8-bit resolution
33+ #ifdef USING_ARDUINO_ESP32
34+ #ifdef ESP32_NEW_PWM
35+ // ESP32 Arduino core 3.x+
36+ ledcAttach (_redPin, 5000 , 8 );
37+ ledcAttach (_greenPin, 5000 , 8 );
38+ ledcAttach (_bluePin, 5000 , 8 );
39+ #else
40+ // ESP32 Arduino core 2.x
41+ ledcSetup (0 , 5000 , 8 ); // /< Channel 0, 5 kHz frequency, 8-bit resolution
42+ ledcSetup (1 , 5000 , 8 ); // /< Channel 1, 5 kHz frequency, 8-bit resolution
43+ ledcSetup (2 , 5000 , 8 ); // /< Channel 2, 5 kHz frequency, 8-bit resolution
44+ ledcAttachPin (_redPin, 0 ); // /< Attach red pin to channel 0
45+ ledcAttachPin (_greenPin, 1 ); // /< Attach green pin to channel 1
46+ ledcAttachPin (_bluePin, 2 ); // /< Attach blue pin to channel 2
47+ #endif
4148 #else
42- // Default setup for non-ESP32 boards
4349 pinMode (_redPin, OUTPUT);
4450 pinMode (_greenPin, OUTPUT);
4551 pinMode (_bluePin, OUTPUT);
4652 #endif
4753}
4854
55+
4956void BacklightRGB::setBrightness (uint8_t brightness) {
5057 _brightness = constrain (brightness, 0 , 255 );
5158 showRGB (_currentColor[0 ], _currentColor[1 ], _currentColor[2 ]);
@@ -104,26 +111,27 @@ uint8_t BacklightRGB::setColor(uint8_t color) {
104111}
105112
106113void BacklightRGB::showRGB (uint8_t red, uint8_t green, uint8_t blue) {
107- _currentColor[0 ] = red;
108- _currentColor[1 ] = green;
109- _currentColor[2 ] = blue;
110-
111- #ifdef ESP32
112- // Updated from 2.x
113- // ledcWrite(0, setColor(red)); ///< Write red value to channel 0
114- // ledcWrite(1, setColor(green)); ///< Write green value to channel 1
115- // ledcWrite(2, setColor(blue)); ///< Write blue value to channel 2
116-
117- // to 3.x
118- ledcWrite (_redPin, setColor (red));
119- ledcWrite (_greenPin, setColor (green));
120- ledcWrite (_bluePin, setColor (blue));
114+ _currentColor[0 ] = red;
115+ _currentColor[1 ] = green;
116+ _currentColor[2 ] = blue;
117+
118+ #ifdef USING_ARDUINO_ESP32
119+ #ifdef ESP32_NEW_PWM
120+ // Arduino 3.x+
121+ ledcWrite (_redPin, setColor (red));
122+ ledcWrite (_greenPin, setColor (green));
123+ ledcWrite (_bluePin, setColor (blue));
121124 #else
122- // Use analogWrite for non-ESP32 boards
123- analogWrite (_redPin , setColor (red));
124- analogWrite (_greenPin , setColor (green));
125- analogWrite (_bluePin , setColor (blue));
125+ // Arduino 2.x
126+ ledcWrite ( 0 , setColor (red));
127+ ledcWrite ( 1 , setColor (green));
128+ ledcWrite ( 2 , setColor (blue));
126129 #endif
130+ #else
131+ analogWrite (_redPin, setColor (red));
132+ analogWrite (_greenPin, setColor (green));
133+ analogWrite (_bluePin, setColor (blue));
134+ #endif
127135}
128136
129137const uint8_t * BacklightRGB::getRGB () const {
0 commit comments