The code has been tested on Arduino Uno, Leonardo, and Mega with a WIZnet W5100 Ethernet module. Arduino Leonardo and Mega can handle at least 112 LEDs. Arduino Uno maxs out at 80+ LEDs.
There is experimental support for ESP32. There are some known issues with the board. From time to time, HTTP requests either never arrive or arrive with missing data. When this happens, you need to give it some time, and the board will eventually "wake up" after a few seconds.
You need a level shifter to connect the STRIP pin (3.3V) on ESP32 to the DATA pin (5V) of the strip. Personally, I put together a single channel version of this breakout board.
The driver for the strip included in the repo is a refactored version of this library.
The web server accepts the following HTTP requests:
/: Responds with a
Hello from Arduino Servermessage.
/strip/status: Responds with an
OFFmessage for the on/off state of the strip.
/strip/modes: Responds with a comma separated list of the available modes.
/strip/mode: Responds with the name of the active mode.
/strip/color: Responds with a JSON representation of the color of the strip, e.g.
/strip/status/on: Turns the strip on.
/strip/status/off: Turns the strip off.
/strip/mode: Updates the mode. The required data are the name of the mode and, if applicable, a time period in ms, e.g.
/strip/color: Updates the color of the strip. The data must be formatted as a JSON object, e.g.
Currently only the NeoPixel strips are supported. If you would like to add support for a different strip, you need to extend the
LedStripBase class, create an instance of your
LedStripX class, and pass its pointer to the
init method of the server.
Modes exist to support dynamic effects on the strips. The available modes are SINGLE_COLOR, SCANNER, RAINBOW and RAINBOW_CYCLE. If you are interested to add your own mode, you need to extend the
ModeBase class, and since modes are handled by the server, you also need to update the
updateMode methods of