LED Control with LPD8806 Library + Arduino

From ESE205 Wiki
Jump to: navigation, search

Getting Started

The LPD8806 library is used to control LPD8806/LPD8803/LPD8809 PWM LED driver chips, strips and pixels. The link for downloading and instructions for installing the library can be found here. [1]

Creating an instance of the LPD8806 class

The LPD8806 library has three constructors:

  • LPD8806(uint16_t n, uint8_t dpin, uint8_t cpin)

This constructor takes in the number of LEDs in the strip, the data pin (port on arduino connected to DI), and the clock pin (port on arduino connected to CI).


LPD8806 strip1 = LPD8806(48, 51, 52)//creates an LPD8806 object to control 48 lights, with data pin on 51, and clock pin on 52
  • LPD8806(uint16_t n)

This constructor takes in the number of LEDs to control, and relies on the Arduino's hardware SPI. These pins vary for each Arduino, so make sure you have it connected to the right pins.


LPD8806 strip2 = LPD8806(48)//creates an LPD8806 object with Arduino SPI pins, (ie, on the Arduino Mega, these pins are 51 for the data pin and 52 for the clock pin)
  • LPD8806()

This is a blank constructor, you must set the number of LEDs, data and clock pin separately using updatePins(uint8_t dpin, uint8_t cpin), updatePins() (for hardware SPI), and updateLength(uint16_t n).


LPD8806 strip3 = new LPD8806(); //create LPD8806 object
strip3.updatePins(51,52); //set data pin to 51, clock pin to 52
strip3.updateLength(48); //set length to 48

Writing to the LED strips

You can write to the LED strips using setPixelColor() and display the lights using show().

setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b) This method takes in the the LED you want to write to (int between 0 to numLEDs-1, 0 is the first light on the strip), and the color you want to represent using three 7-bit r,g,b components

Alternatively, you can use setPixelColor(uint16_t n, uint32_t c), which takes in 32 bit GRB value instead. Entering in 0 as the GRB value will turn the LED off.


strip1.setPixelColor(0,255,0,0); //set first LED on strip to red
strip1.setPixelColor(1,255); //set second LED on strip to blue
strip1.show() //display lights, you should see the first light turn red, and the second blue without delay.