Control WS2812B LEDs easily via a powerful RESTful server running on Arduino. Unleash creativity by executing complex programs with a simple file upload in Light Definition Language (LDL). This project differs from other LED controllers: end users need minimal technical knowledge and user-friendly tools can generate the LDL that can be sent to the server.
Example: switch between red/blue every 1 second forever:

Example: a more complex Christmas lights program
{
"name": "Bottle Program",
"instructions": [
{
"repeat": {
"times": 0,
"instructions": [
{
"repeat": {
"times": 10,
"instructions": [
"0505000003FF00000099003333FF"
]
}
},
"0401000005000000000FF00",
"0401000005133FF33000000",
"04010000050000000FF0000",
"04010000051FF0000000000",
"040100000500000003333FF",
"040100000513333FF000000",
"030100000101919FF000000FF00",
"030100000111919FF000000FF00",
"070100000A3C104FF00000099003333FFFFFF00"
]
}
}
]
}
Project goal
Empower creativity and bring lighting designs to life with a user-friendly LED driver! Program stunning light displays using the intuitive Light Definition Language (LDL) - accessible to everyone, regardless of technical expertise.
- Unleash lighting potential with a standard and powerful Light Definition Language (LDL) for LED control.
- Empower users of all technical abilities with intuitive tools for crafting stunning LED programs in LDL.
- Experience seamless LED control with simple HTTP commands to interact with the server.
- Elevate the LED experience with consumer-friendly touches - including effortless setup via Wifi hotspot, automatic server discovery with UDP, and automatic updates for seamless operation.
- Bringing light design to all for free with this open-source project.
Overview
RESTful server to drive WS2812B LEDS. Light-server programs are writtern in Light Definition Language (LDL) using JSON.
Features:
- UDP server network discovery
- Light Definition Language (LDL) permits complex programs
- WiFi set up mode displays a simple web page to the user on 192.168.4.1:
- allow WiFi SSID to be selected and password entered
- allow a 2nd WiFi SSID
- specify number of connected LEDs
- WiFi automatically re-connects or joins 2nd SSID
- 8 major rendering effects presently supported by LDL
- RESTful interface supports 8 commands
- an LDL program can be saved to device memory; it will reload even after restarting the device.
The LDL program editor can be used to visually create programs and upload them to LDL servers. See the GitHub project: https://github.com/KevinWhite-KWS/Light-Server-Front-End
The main GitHub project explains things in much more detail: https://github.com/KevinWhite-KWS/Light-Server
Images of running servers



EXPANDED TECHNICAL DETAILS
Visual Logic & Pattern Design
This project provides a foundational framework for creating complex, synchronized LED art and lighting displays.
- Addressable LED Control: Uses the WS2812B (NeoPixel) protocol. The Arduino sends a high-speed data stream down a single wire, addressing each LED's 24-bit color individually.
- FastLED Library Integration: Leverages mathematical functions for color blending, gradient fills, and trigonometric waves (like
sineandcosine) to create organic, pulsing light effects without manual frame-by-frame coding.
Interactive Creativity
- Serial Pattern Switcher: Includes a PC-side control panel (processing or Python) that allows users to design patterns on their screen and upload them instantly to the Arduino for real-time visual feedback.