I first tried using FastLED version 3.7.7 with an original ESP32 chip in a DOIT ESP32 DEVKIT V1. The program compiled and loaded into to board without error. All I got was the ESP32 boot messages followed by my starting println(). I did not get any run time errors. I did not have a WS2812B to test that the board was generating the correct output but things looked good.
I next downgraded my FastLED library to version 3.6.0 and tried to compile the sketch. I got a large number of errors having to do with missing variables, etc. I tried FastLED version 3.6.0 with both the ESP32-S3 and the ESP32. Both gave similar error messages except that the ESP32-S3 had two additional blocks of error messages toward the end of error messages.
It is likely that I would need to downgrade a number of libraries and possibly the board definitions to get FastLED version 3.6.0 to compile.
I have attached the ESP32-S3 error messages for FastLED version 3.6.0 below. I can send the ESP32 error message if you would like.
Sincerely,
Ken West
---------------------------- FastLED Version 3.6.0 Compile Errors for ESP32-S3 -----------------------
In file included from C:\Users\kenw\Documents\Arduino\libraries\FastLED\src/FastLED.h:75,
from C:\Users\kenw\Documents\Arduino\ESP32S3\Sparkfun\Sparkfun Thing Plus - ESP32-S3\RGB_LED_ESP32S3\RGB_LED_ESP32S3.ino:23:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src/fastspi.h:157:23: note: ‘#pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output’
157 | # pragma message “No hardware SPI pins defined. All SPI access will default to bitbanged output”
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp: In function ‘void fill_raw_2dnoise8(uint8_t*, int, int, uint8_t, q44, fract8, int, uint16_t, int, uint16_t, int, uint16_t)’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:623:100: error: ambiguous overload for ‘operator*’ (operand types are ‘q44’ {aka ‘q<unsigned char, 4, 4>’} and ‘int’)
623 | fill_raw_2dnoise8(pData, width, height, octaves-1, freq44, amplitude, skip+1, xfreq44, freq44 * scalex, yfreq44, freq44 * scaley, time);
| ~~~~~~ ^ ~~~~~~
| | |
| | int
| q44 {aka q<unsigned char, 4, 4>}
In file included from C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\pixeltypes.h:7,
from C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\controller.h:9,
from C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\FastLED.h:57,
from C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:6:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:909:14: note: candidate: ‘uint32_t q<T, F, I>::operator*(uint32_t) [with T = unsigned char; int F = 4; int I = 4; uint32_t = long unsigned int]’
909 | uint32_t operator*(uint32_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:911:14: note: candidate: ‘uint16_t q<T, F, I>::operator*(uint16_t) [with T = unsigned char; int F = 4; int I = 4; uint16_t = short unsigned int]’
911 | uint16_t operator*(uint16_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:913:13: note: candidate: ‘int32_t q<T, F, I>::operator*(int32_t) [with T = unsigned char; int F = 4; int I = 4; int32_t = long int]’
913 | int32_t operator*(int32_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:915:13: note: candidate: ‘int16_t q<T, F, I>::operator*(int16_t) [with T = unsigned char; int F = 4; int I = 4; int16_t = short int]’
915 | int16_t operator*(int16_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:623:127: error: ambiguous overload for ‘operator*’ (operand types are ‘q44’ {aka ‘q<unsigned char, 4, 4>’} and ‘int’)
623 | fill_raw_2dnoise8(pData, width, height, octaves-1, freq44, amplitude, skip+1, xfreq44, freq44 * scalex, yfreq44, freq44 * scaley, time);
| ~~~~~~ ^ ~~~~~~
| | |
| | int
| q44 {aka q<unsigned char, 4, 4>}
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:909:14: note: candidate: ‘uint32_t q<T, F, I>::operator*(uint32_t) [with T = unsigned char; int F = 4; int I = 4; uint32_t = long unsigned int]’
909 | uint32_t operator*(uint32_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:911:14: note: candidate: ‘uint16_t q<T, F, I>::operator*(uint16_t) [with T = unsigned char; int F = 4; int I = 4; uint16_t = short unsigned int]’
911 | uint16_t operator*(uint16_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:913:13: note: candidate: ‘int32_t q<T, F, I>::operator*(int32_t) [with T = unsigned char; int F = 4; int I = 4; int32_t = long int]’
913 | int32_t operator*(int32_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:915:13: note: candidate: ‘int16_t q<T, F, I>::operator*(int16_t) [with T = unsigned char; int F = 4; int I = 4; int16_t = short int]’
915 | int16_t operator*(int16_t v) { return (vi) + ((vf)>>F); }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp: In function ‘void fill_raw_2dnoise16(uint16_t*, int, int, uint8_t, q88, fract16, int, uint32_t, int, uint32_t, int, uint32_t)’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:661:101: error: ambiguous overload for ‘operator*’ (operand types are ‘int’ and ‘q88’ {aka ‘q<short unsigned int, 8, 8>’})
661 | fill_raw_2dnoise16(pData, width, height, octaves-1, freq88, amplitude, skip, x freq88 , scalex freq88, y * freq88, scaley * freq88, time);
| ~~~~~~ ^~~~~~~
| | |
| int q88 {aka q<short unsigned int, 8, 8>}
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:922:49: note: candidate: 'uint32_t operator(uint32_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; uint32_t = long unsigned int]’
922 | template<class T, int F, int I> static uint32_t operator(uint32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:923:49: note: candidate: ‘uint16_t operator*(uint16_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; uint16_t = short unsigned int]’
923 | template<class T, int F, int I> static uint16_t operator*(uint16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:924:48: note: candidate: ‘int32_t operator*(int32_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; int32_t = long int]’
924 | template<class T, int F, int I> static int32_t operator*(int32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:925:48: note: candidate: ‘int16_t operator*(int16_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; int16_t = short int]’
925 | template<class T, int F, int I> static int16_t operator*(int16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:661:129: error: ambiguous overload for ‘operator*’ (operand types are ‘int’ and ‘q88’ {aka ‘q<short unsigned int, 8, 8>’})
661 | fill_raw_2dnoise16(pData, width, height, octaves-1, freq88, amplitude, skip, x freq88 , scalex freq88, y * freq88, scaley * freq88, time);
| ~~~~~~ ^ ~~~~~~
| | |
| int q88 {aka q<short unsigned int, 8, 8>}
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:922:49: note: candidate: 'uint32_t operator(uint32_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; uint32_t = long unsigned int]’
922 | template<class T, int F, int I> static uint32_t operator(uint32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:923:49: note: candidate: ‘uint16_t operator*(uint16_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; uint16_t = short unsigned int]’
923 | template<class T, int F, int I> static uint16_t operator*(uint16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:924:48: note: candidate: ‘int32_t operator*(int32_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; int32_t = long int]’
924 | template<class T, int F, int I> static int32_t operator*(int32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:925:48: note: candidate: ‘int16_t operator*(int16_t, q<T, F, I>&) [with T = short unsigned int; int F = 8; int I = 8; int16_t = short int]’
925 | template<class T, int F, int I> static int16_t operator*(int16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp: In function ‘void fill_raw_2dnoise16into8(uint8_t*, int, int, uint8_t, q44, fract8, int, uint32_t, int, uint32_t, int, uint32_t)’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:699:106: error: ambiguous overload for ‘operator*’ (operand types are ‘int’ and ‘q44’ {aka ‘q<unsigned char, 4, 4>’})
699 | fill_raw_2dnoise16into8(pData, width, height, octaves-1, freq44, amplitude, skip+1, xfreq44, scalex freq44, yfreq44, scaley * freq44, time);
| ~~~~~~ ^~~~~~~
| | |
| int q44 {aka q<unsigned char, 4, 4>}
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:922:49: note: candidate: 'uint32_t operator(uint32_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; uint32_t = long unsigned int]’
922 | template<class T, int F, int I> static uint32_t operator*(uint32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:923:49: note: candidate: ‘uint16_t operator*(uint16_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; uint16_t = short unsigned int]’
923 | template<class T, int F, int I> static uint16_t operator*(uint16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:924:48: note: candidate: ‘int32_t operator*(int32_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; int32_t = long int]’
924 | template<class T, int F, int I> static int32_t operator*(int32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:925:48: note: candidate: ‘int16_t operator*(int16_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; int16_t = short int]’
925 | template<class T, int F, int I> static int16_t operator*(int16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\noise.cpp:699:132: error: ambiguous overload for ‘operator*’ (operand types are ‘int’ and ‘q44’ {aka ‘q<unsigned char, 4, 4>’})
699 | fill_raw_2dnoise16into8(pData, width, height, octaves-1, freq44, amplitude, skip+1, xfreq44, scalex freq44, yfreq44, scaley * freq44, time);
| ~~~~~~ ^ ~~~~~~
| | |
| int q44 {aka q<unsigned char, 4, 4>}
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:922:49: note: candidate: 'uint32_t operator(uint32_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; uint32_t = long unsigned int]’
922 | template<class T, int F, int I> static uint32_t operator*(uint32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:923:49: note: candidate: ‘uint16_t operator*(uint16_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; uint16_t = short unsigned int]’
923 | template<class T, int F, int I> static uint16_t operator*(uint16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:924:48: note: candidate: ‘int32_t operator*(int32_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; int32_t = long int]’
924 | template<class T, int F, int I> static int32_t operator*(int32_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\lib8tion.h:925:48: note: candidate: ‘int16_t operator*(int16_t, q<T, F, I>&) [with T = unsigned char; int F = 4; int I = 4; int16_t = short int]’
925 | template<class T, int F, int I> static int16_t operator*(int16_t v, q<T,F,I> & q) { return q * v; }
| ^~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp: In member function ‘void ESP32RMTController::startOnChannel(int)’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:266:29: error: ‘RMTMEM’ was not declared in this scope
266 | mRMT_mem_start = & (RMTMEM.chan[mRMT_channel].data32[0].val);
| ^~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp: In member function ‘void ESP32RMTController::tx_start()’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:307:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘mem_rd_rst_n’
307 | RMT.chnconf0[mRMT_channel].mem_rd_rst_n = 1;
| ^~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:308:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘mem_rd_rst_n’
308 | RMT.chnconf0[mRMT_channel].mem_rd_rst_n = 0;
| ^~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:309:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘apb_mem_rst_n’
309 | RMT.chnconf0[mRMT_channel].apb_mem_rst_n = 1;
| ^~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:310:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘apb_mem_rst_n’
310 | RMT.chnconf0[mRMT_channel].apb_mem_rst_n = 0;
| ^~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:316:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘conf_update_n’
316 | RMT.chnconf0[mRMT_channel].conf_update_n = 1;
| ^~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:317:32: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘tx_start_n’
317 | RMT.chnconf0[mRMT_channel].tx_start_n = 1;
| ^~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp: In static member function ‘static void ESP32RMTController::doneOnChannel(rmt_channel_t, void*)’:
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:347:5: error: ‘gpio_matrix_out’ was not declared in this scope; did you mean ‘gpio_iomux_out’?
347 | gpio_matrix_out(pController->mPin, 0x100, 0, 0);
| ^~~~~~~~~~~~~~~
| gpio_iomux_out
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:368:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘tx_stop_n’
368 | RMT.chnconf0[channel].tx_stop_n = 1;
| ^~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:369:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘conf_update_n’
369 | RMT.chnconf0[channel].conf_update_n = 1;
| ^~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:371:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘mem_rd_rst_n’
371 | RMT.chnconf0[channel].mem_rd_rst_n = 1;
| ^~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:372:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘mem_rd_rst_n’
372 | RMT.chnconf0[channel].mem_rd_rst_n = 0;
| ^~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:373:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘apb_mem_rst_n’
373 | RMT.chnconf0[channel].apb_mem_rst_n = 1;
| ^~~~~~~~~~~~~
C:\Users\kenw\Documents\Arduino\libraries\FastLED\src\platforms\esp\32\clockless_rmt_esp32.cpp:374:27: error: ‘volatile union rmt_chnconf0_reg_t’ has no member named ‘apb_mem_rst_n’
374 | RMT.chnconf0[channel].apb_mem_rst_n = 0;
| ^~~~~~~~~~~~~
exit status 1
Compilation error: exit status 1