Hi there,
It might be best to explain to you what the project consists of in case you have any suggestions.
I'm a drummer in two music bands and I play with a metronome in both. My idea is to create a device that I can take to concerts, where I can select the song we're going to play, have a headphone jack to connect headphones and listen to the metronome, and at the same time, program a sequence of lights that accompany the song. These lights will be WS2812 LED strips that will go inside the bass drum and on the stage.
The idea I have for developing the project in question is that this screen ("https://www.aliexpress.com/item/1005004 ... 1802Wyh4tr"), with the integrated ESP32-S3, will be responsible for showing the specific interface or menu. Once the corresponding option is chosen, it will send the command to another ESP32-S3 which will take care of executing the sequence of lights.
Therefore, I'm currently trying to establish the connection between two ESP32s while waiting for the screen to arrive (which is supposed to be next week) and attempting to improve the code for the light sequence. Up until now, I've been using the FastLED library (although it doesn't work as well as I'd like, as trying to make a blink with an interval less than 350ms fails), but I recently started working with ESP-IDF and I can't get this library to work in this environment.
Can you recommend any library for handling the LED strip in ESP-IDF or provide an example of its use?
Thank you very much.
Questions in my project involving WS2812 LED strip, ESP32-S3, and ESP-IDF
Re: Questions in my project involving WS2812 LED strip, ESP32-S3, and ESP-IDF
Check out the great work by UncleRus, Trombik and others at esp-idf-lib.
You can either use the framebuffer way of addressing the individual leds (my personal preference) or push colors directly into the leds.
Many of the FastLED functions are included in the library, no need to reinvent color blending etc.
ps: I am not sure if your display is the same make/model, but perhaps this is of some help.
You can either use the framebuffer way of addressing the individual leds (my personal preference) or push colors directly into the leds.
Many of the FastLED functions are included in the library, no need to reinvent color blending etc.
ps: I am not sure if your display is the same make/model, but perhaps this is of some help.
Re: Questions in my project involving WS2812 LED strip, ESP32-S3, and ESP-IDF
limpens wrote: ↑Wed Aug 16, 2023 10:54 amCheck out the great work by UncleRus, Trombik and others at esp-idf-lib.
You can either use the framebuffer way of addressing the individual leds (my personal preference) or push colors directly into the leds.
Many of the FastLED functions are included in the library, no need to reinvent color blending etc.
ps: I am not sure if your display is the same make/model, but perhaps this is of some help.
Wow! Thank you very much. This works really quickly!
-
- Posts: 52
- Joined: Fri Aug 11, 2023 4:56 am
Re: Questions in my project involving WS2812 LED strip, ESP32-S3, and ESP-IDF
Nice tips. Thank you.
Related, http://nightdriverled.com/ is an ESP32 project that stacks atop FastLED. One thing (of many) that it gets really right is the use of NTP between devices. That may not be a luxury you quite have - at least not with a throw-away drum strike or two up front or a click track - is that everything can be synchronized to a frame and then time-locked between devices. If you want to fee audio straight from one Mic, that's OK> If you want to feed everything externally from a master source (a PC or Pi or something) you can just feed a bogus timestamp into the future for the first frame and then everything should stay locked.
It's pretty detached from "the IDF way" and in the APIs exposes either a 1d-2d-(or more) array of 24b pixels to be set. It'll handle the frame regeneration and timing if you blow the frame budget. It has power reporting and limiting. It can accept or generate arrays of pixel data over the "wire" between the ESP32's and sender/receivers written in alien language or other computing devices.
It's more of an API/DIY kind of project that's meant to be tailored to cases like yours than is something like WLED that's really good at focusing on end-user problems. So making a pair/triplet of devices that are locked to a Pi or Mac master audio source is the kind of thing that it's meant for. Some assembly required. (not as in foo.S)
I have many meters of strips, a bunch of the floppy 2812 matrices, and a couple of the rigid "high-res" boards. Works great.
Yours sounds like an interesting project to tackle!
Related, http://nightdriverled.com/ is an ESP32 project that stacks atop FastLED. One thing (of many) that it gets really right is the use of NTP between devices. That may not be a luxury you quite have - at least not with a throw-away drum strike or two up front or a click track - is that everything can be synchronized to a frame and then time-locked between devices. If you want to fee audio straight from one Mic, that's OK> If you want to feed everything externally from a master source (a PC or Pi or something) you can just feed a bogus timestamp into the future for the first frame and then everything should stay locked.
It's pretty detached from "the IDF way" and in the APIs exposes either a 1d-2d-(or more) array of 24b pixels to be set. It'll handle the frame regeneration and timing if you blow the frame budget. It has power reporting and limiting. It can accept or generate arrays of pixel data over the "wire" between the ESP32's and sender/receivers written in alien language or other computing devices.
It's more of an API/DIY kind of project that's meant to be tailored to cases like yours than is something like WLED that's really good at focusing on end-user problems. So making a pair/triplet of devices that are locked to a Pi or Mac master audio source is the kind of thing that it's meant for. Some assembly required. (not as in foo.S)
I have many meters of strips, a bunch of the floppy 2812 matrices, and a couple of the rigid "high-res" boards. Works great.
Yours sounds like an interesting project to tackle!