Difference between revisions of "Component: RGB LED WS2801 (LEDs)"
Line 103: | Line 103: | ||
{{Fcfile|AnimLightCascade.fcfx|AnimatedLightCascade}} | {{Fcfile|AnimLightCascade.fcfx|AnimatedLightCascade}} | ||
[[File:AnimLight2.jpg]] | [[File:AnimLight2.jpg]] | ||
+ | |||
+ | |||
Line 108: | Line 110: | ||
==Macro reference== | ==Macro reference== | ||
+ | ===SetBrightness=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 126: | Line 129: | ||
+ | ===GetLEDColour=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 149: | Line 153: | ||
+ | ===SetBrightnessByte=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 167: | Line 172: | ||
+ | ===DrawLine2D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 215: | Line 221: | ||
+ | ===SetLEDColour=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 248: | Line 255: | ||
+ | ===SetAllLEDColour=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 276: | Line 284: | ||
+ | ===Refresh=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 289: | Line 298: | ||
+ | ===ShiftLEDs1D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 312: | Line 322: | ||
+ | ===DrawLine3D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 370: | Line 381: | ||
+ | ===GetLEDIndex2D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 393: | Line 405: | ||
+ | ===DrawRectangle2D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 446: | Line 459: | ||
+ | ===ShiftLEDs2D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 474: | Line 488: | ||
+ | ===GetLEDIndex3D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 502: | Line 517: | ||
+ | ===DrawCuboid3D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 565: | Line 581: | ||
+ | ===Initialise=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- | ||
Line 578: | Line 595: | ||
+ | ===ShiftLEDs3D=== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
|- | |- |
Revision as of 11:51, 3 February 2023
Author | Matrix TSL |
Version | 2.0 |
Category | LEDs |
Contents
RGB LED WS2801 component
A simple chained RGB LED controller IC allowing multiple LEDs to be controlled using a serial data stream. Allows RGB LEDs to be driven with full 24-bit colour depth. Allows single chains, 2D arrays and 3D cube formations to be simulated. Supports Bit Banged or SPI peripheral based data modes.
Component Source Code
Please click here to download the component source project: FC_Comp_Source_LED_WS2801.fcfx
Please click here to view the component source code (Beta): FC_Comp_Source_LED_WS2801.fcfx
Detailed description
1D Configuration
In the 1D configuration each LED simply follows on from the last in a chain.
2D Configuration
In the 2D configuration each LED follows on from the last in a chain which travels back and forth through the columns a row at a time.
3D Configuration
In the 3D configuration each layer follows the 2D configuration with each layer then following on by mirroring the layer below. First layer connections are shown in Red and second layer connections are shown in Blue.
3V3 Microcontrollers
Note you may have to voltage shift the micro controller control pins to meet the 0.8 * VDD minimum requirement. E.g. if VDD is 5V then the input voltage needs to be at least 4V.
A simple buffer IC could be used to do the voltage shifting.
Examples
RGB Mood Light
A simple example using three potentiometers to set the individual Red, Green and Blue channels of the LED colour.
MoodLight
Animated Light
A simple example which picks a random colour assigns it to the first LED, then shifts and repeats.
AnimatedLightStrip
Animated Light Cascade
A simple example which picks a random colour assigns it to the first LED, then shifts and repeats.
AnimatedLightCascade
Macro reference
SetBrightness
GetLEDColour
![]() |
GetLEDColour |
Sets the colour of a single LED in RAM as a 1D array. | |
![]() |
LED |
LED to change the colour / Range: 0 to (LED Count - 1) | |
![]() |
ColIdx |
0 = R, 1 = G, 2 = B | |
![]() |
Return |
SetBrightnessByte
DrawLine2D
![]() |
DrawLine2D |
Draws a line on a 2D array of LEDs | |
![]() |
X1 |
![]() |
Y1 |
![]() |
X2 |
![]() |
Y2 |
![]() |
R |
![]() |
G |
![]() |
B |
![]() |
Return |
SetLEDColour
![]() |
SetLEDColour |
Sets the colour of a single LED in RAM as a 1D array. | |
![]() |
LED |
LED to change the colour / Range: 0 to (LED Count - 1) | |
![]() |
R |
![]() |
G |
![]() |
B |
![]() |
Return |
SetAllLEDColour
![]() |
SetAllLEDColour |
Sets the colour of all the LEDs in RAM | |
![]() |
R |
![]() |
G |
![]() |
B |
![]() |
Return |
Refresh
![]() |
Refresh |
Clocks out the current colour data to the LEDs from the values stored in RAM | |
![]() |
Return |
ShiftLEDs1D
![]() |
ShiftLEDs1D |
Shifts the LED colours in 1D and wraps | |
![]() |
Direction |
0 = Forwards, 1 = Backwards | |
![]() |
DataMode |
0=ResetToZero, 1=WrapAroundDisplay, 2=Smear | |
![]() |
Return |
DrawLine3D
![]() |
DrawLine3D |
Draws a line on a 3D array of LEDs | |
![]() |
X1 |
![]() |
Y1 |
![]() |
Z1 |
![]() |
X2 |
![]() |
Y2 |
![]() |
Z2 |
![]() |
R |
![]() |
G |
![]() |
B |
![]() |
Return |
GetLEDIndex2D
DrawRectangle2D
ShiftLEDs2D
GetLEDIndex3D
DrawCuboid3D
Initialise
![]() |
Initialise |
Inisialises the RGB colour RAM to 0,0,0 = LED Off and clocks out the data to initialise all the WS2801 ICs in the chain. | |
![]() |
Return |
ShiftLEDs3D