More device support for SignalRGB
Create your own ARGB controller for Neopixel, WS2801, WS2811, WS2812B, LPD8806, TM1809 and more controllable from PC or other devices supporting serial communication.
Todo
Todo
Todo
- An Arduino board that supports high baud rates as high as 921.600. I use the Arduino Mega 2560 R3. The ideal choice would be an Arduino Due with a level shifter as it does not suffer from FastLED's interrupt issue.
- Any FastLED compatible LED matrix or strip. Up to 255 LEDs supported.
- External +5V power source (if you have lots of LEDs)
Reference WS2812B for PC pinout
- LED Strip [D] to Arduino [PIN 3]
- LED Strip [5V] to power source [5V]
- LED Strip [GND] to power source [GND]
- Arduino [GND] to power source [GND]
- Adjust the LED type and LED amount in the firmware by changing
LED_TYPE
andNUM_LEDS
to your needs. - Adjust the C# client or write your own client program using your favorite language with the protocol below.
- Done!
The protocol was designed with speed in mind. A sample C# based implementation is available.
[Header]
[00] 0xFC (start marker)
[01] [command]
[02] [payload size]
[03] [header crc8]
[Payload]
[04] [first payload byte]
[05] [second payload byte]
...
[XX] [payload crc8]
Use 0xD5 as polynemial for your CRC8 algorithm.
The following commands are available.
Sets a led to the given color.
Payload:
[00] [led_id]
[01] [R]
[02] [G]
[03] [B]
Example Packet:
Set 6th led color to (0, 0, 255).
FC 01 04 E7 06 00 00 FF B2
Sets a chunk of leds for faster updates.
Payload:
[00] [start led]
[01] [end led]
[03] [R] // start led
[04] [G]
[05] [B]
[03] [R] // start + 1 led
[04] [G]
[05] [B]
...
[??] [R] // end led
[??] [G]
[??] [B]
Example:
Set leds 0 - 10 to a rainbow gradient.
FC 02 21 75 00 0A BF 40 40 BF 8C 40 A6 BF 40 59 BF 40 40 BF 73 40 BF BF 40 73 BF 59 40 BF A6 40 BF BF 40 8C 00 2B
Note: Does not work correctly yet.
Set the brightness for the entire LED strip.
Payload:
[00] [led_id]
[01] [brightness]
Example Packet:
Set brightness to 64.
FC 03 01 DA 40 9D
Depending on your Arduino, many packets may get lost because of FastLED's interrupt issue. To counter this, use a high baud rate and keep "spamming" your current state instead of sending it only once.
- Supporting more than 255 LEDs and multiple channels for Arduino
- Autostart & hiding console
- GUI