LPD8808 based LED Strip

Driver for LPD8808 based LED strips.

LPD8808 based LED strips consist of a number of LEDs driven by LPD8808 chips. In these strips, each LED can be controlled individually. For this, every two LEDs are driven by a LPD8808 chip, which are chained and form a long shift register. To control a certain LED, the target color value needs to be shifted to the LEDs position on the strip.

This driver implementation does not buffer the current values for each LED. It expects the application to take care of this.

lpd8808_params_t lpd8808_t

Device descriptor, same as the configuration parameters.

int lpd8808_init(lpd8808.h::lpd8808_t * dev, const lpd8808_params_t * params)

Initialize the given LPD8808 based LED strip.

Parameters

dev:device to initialize
params:parameters used for initialization

Return values

  • 0 on success
  • <0 on error
void lpd8808_load_rgb(const lpd8808.h::lpd8808_t * dev, color_rgb_t vals)

Set the color value of each LED on the strip.

This function sets the color value of each LED on the strip by shifting out the corresponding color values one after the other. The function expects an array of color_rgb_t values of the same length as LEDs on the strip.

Parameters

dev:device to load color values to
vals:array of color values, MUST be of same length as LEDs on the strip

struct lpd8808_params_t

Parameters needed for configuration.

int led_cnt

number of LEDs on the strip

gpio.h::gpio_t pin_clk

pin connected to the strip’s clock signal

gpio.h::gpio_t pin_dat

pin connected to the strip’s data signal