Loading [MathJax]/extensions/tex2jax.js
WPILibC++ 2025.3.2
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
frc::AddressableLED Class Reference

A class for driving addressable LEDs, such as WS2812B, WS2815, and NeoPixels. More...

#include <frc/AddressableLED.h>

Classes

class  LEDData
 

Public Types

enum  ColorOrder {
  kRGB = HAL_ALED_RGB , kRBG = HAL_ALED_RBG , kBGR = HAL_ALED_BGR , kBRG = HAL_ALED_BRG ,
  kGBR = HAL_ALED_GBR , kGRB = HAL_ALED_GRB
}
 Order that color data is sent over the wire. More...
 

Public Member Functions

 AddressableLED (int port)
 Constructs a new driver for a specific port.
 
 AddressableLED (AddressableLED &&)=default
 
AddressableLEDoperator= (AddressableLED &&)=default
 
void SetColorOrder (ColorOrder order)
 Sets the color order for this AddressableLED.
 
void SetLength (int length)
 Sets the length of the LED strip.
 
void SetData (std::span< const LEDData > ledData)
 Sets the led output data.
 
void SetData (std::initializer_list< LEDData > ledData)
 Sets the led output data.
 
void SetBitTiming (units::nanosecond_t highTime0, units::nanosecond_t lowTime0, units::nanosecond_t highTime1, units::nanosecond_t lowTime1)
 Sets the bit timing.
 
void SetSyncTime (units::microsecond_t syncTime)
 Sets the sync time.
 
void Start ()
 Starts the output.
 
void Stop ()
 Stops the output.
 

Detailed Description

A class for driving addressable LEDs, such as WS2812B, WS2815, and NeoPixels.

By default, the timing supports WS2812B and WS2815 LEDs, but is configurable using SetBitTiming()

Some LEDs use a different color order than the default GRB. The color order is configurable using SetColorOrder().

Only 1 LED driver is currently supported by the roboRIO. However, multiple LED strips can be connected in series and controlled from the single driver.

Member Enumeration Documentation

◆ ColorOrder

Order that color data is sent over the wire.

Enumerator
kRGB 

RGB order.

kRBG 

RBG order.

kBGR 

BGR order.

kBRG 

BRG order.

kGBR 

GBR order.

kGRB 

GRB order. This is the default order.

Constructor & Destructor Documentation

◆ AddressableLED() [1/2]

frc::AddressableLED::AddressableLED ( int port)
explicit

Constructs a new driver for a specific port.

Parameters
portthe output port to use (Must be a PWM header)

◆ AddressableLED() [2/2]

frc::AddressableLED::AddressableLED ( AddressableLED && )
default

Member Function Documentation

◆ operator=()

AddressableLED & frc::AddressableLED::operator= ( AddressableLED && )
default

◆ SetBitTiming()

void frc::AddressableLED::SetBitTiming ( units::nanosecond_t highTime0,
units::nanosecond_t lowTime0,
units::nanosecond_t highTime1,
units::nanosecond_t lowTime1 )

Sets the bit timing.

By default, the driver is set up to drive WS2812B and WS2815, so nothing needs to be set for those.

Parameters
highTime0high time for 0 bit (default 400ns)
lowTime0low time for 0 bit (default 900ns)
highTime1high time for 1 bit (default 900ns)
lowTime1low time for 1 bit (default 600ns)

◆ SetColorOrder()

void frc::AddressableLED::SetColorOrder ( ColorOrder order)

Sets the color order for this AddressableLED.

The default order is GRB.

This will take effect on the next call to SetData().

Parameters
orderthe color order

◆ SetData() [1/2]

void frc::AddressableLED::SetData ( std::initializer_list< LEDData > ledData)

Sets the led output data.

If the output is enabled, this will start writing the next data cycle. It is safe to call, even while output is enabled.

Parameters
ledDatathe buffer to write

◆ SetData() [2/2]

void frc::AddressableLED::SetData ( std::span< const LEDData > ledData)

Sets the led output data.

If the output is enabled, this will start writing the next data cycle. It is safe to call, even while output is enabled.

Parameters
ledDatathe buffer to write

◆ SetLength()

void frc::AddressableLED::SetLength ( int length)

Sets the length of the LED strip.

Calling this is an expensive call, so its best to call it once, then just update data.

The max length is 5460 LEDs.

Parameters
lengththe strip length

◆ SetSyncTime()

void frc::AddressableLED::SetSyncTime ( units::microsecond_t syncTime)

Sets the sync time.

The sync time is the time to hold output so LEDs enable. Default set for WS2812B and WS2815.

Parameters
syncTimethe sync time (default 280us)

◆ Start()

void frc::AddressableLED::Start ( )

Starts the output.

The output writes continuously.

◆ Stop()

void frc::AddressableLED::Stop ( )

Stops the output.


The documentation for this class was generated from the following file: