- Joined
- Jul 4, 2008
- Messages
- 2,499
- Points
- 113
Hello, this may sound silly, but I am right now trying out a code for driving
programmable LPD6803 LED RGB pixels. It's supposed to be straight forward but my arduino complier is spitting back errors and the latest driver
compiled but is messed up.
LED strip has 30 LED pixels in a row and can run 12Vdc-6Vdc.
I hope someone here has experience with the LED pixel in question
LPD 6803.
This is a simple strand test code.
I'll post a sample of the code below. This code spits back several compiling errors. All the libraries have been installed for this given test.
function 'void LPD6803::begin()':
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp:140: error: 'Timer1' was not declared in this scope
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp: In member function 'void LPD6803::setCPUmax(uint8_t)':
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp:156: error: 'Timer1' was not declared in this scope


What's going on here
programmable LPD6803 LED RGB pixels. It's supposed to be straight forward but my arduino complier is spitting back errors and the latest driver
compiled but is messed up.
LED strip has 30 LED pixels in a row and can run 12Vdc-6Vdc.
I hope someone here has experience with the LED pixel in question
LPD 6803.
This is a simple strand test code.
I'll post a sample of the code below. This code spits back several compiling errors. All the libraries have been installed for this given test.
function 'void LPD6803::begin()':
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp:140: error: 'Timer1' was not declared in this scope
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp: In member function 'void LPD6803::setCPUmax(uint8_t)':
/Users/xxx/Documents/Arduino/libraries/LPD6803RGB/LPD6803.cpp:156: error: 'Timer1' was not declared in this scope
#include*<TimerOne.h>
#include*"LPD6803.h"
//Example*to*control*LPD6803-based*RGB*LED*Modules*in*a*strand
//*Original*code*by*Bliptronics.com*Ben*Moyes*2009
//Use*this*as*you*wish,*but*please*give*credit,*or*at*least*buy*some*of*my*LEDs!
//*Code*cleaned*up*and*Object-ified*by*ladyada,*should*be*a*bit*easier*to*use
/*****************************************************************************/
//*Choose*which*2*pins*you*will*use*for*output.
//*Can*be*any*valid*output*pins.
int dataPin = 2; // 'yellow' wire
int clockPin = 3; // 'green' wire
//*Don't*forget*to*connect*'blue'*to*ground*and*'red'*to*+5V
//*Timer*1*is*also*used*by*the*strip*to*send*pixel*clocks
//*Set*the*first*variable*to*the*NUMBER*of*pixels.*20*=*20*pixels*in*a*row
LPD6803*strip*=*LPD6803(20,*dataPin,*clockPin);
void setup() {
**
**// The Arduino needs to clock out the data to the pixels
**// this happens in interrupt timer 1, we can change how often
**// to call the interrupt. setting CPUmax to 100 will take nearly all all the
**// time to do the pixel updates and a nicer/faster display,
**// especially with strands of over 100 dots.
**// (Note that the max is 'pessimistic', its probably 10% or 20% less in reality)
**
**strip.setCPUmax(50);**// start with 50% CPU usage. up this if the strand flickers or is slow
**
**// Start up the LED counter
**strip.begin();
**// Update the strip, to start they are all 'off'
**strip.show();
}
void loop() {
**// Some example procedures showing how to display to the pixels
**
**colorWipe(Color(63,*0,*0),*50);
**colorWipe(Color(0,*63,*0),*50);
**colorWipe(Color(0,*0,*63),*50);
**rainbow(50);
**rainbowCycle(50);
}
void rainbow(uint8_t wait) {
**int i, j;
***
**for (j=0; j < 96 * 3; j++) { // 3 cycles of all 96 colors in the wheel
****for (i=0; i < strip.numPixels(); i++) {
******strip.setPixelColor(i,*Wheel( (i + j) % 96));
****}**
****strip.show(); // write all the pixels out
****delay(wait);
**}
}
//*Slightly*different,*this*one*makes*the*rainbow*wheel*equally*distributed*
//*along*the*chain
void rainbowCycle(uint8_t wait) {
**int i, j;
**
**for (j=0; j < 96 * 5; j++) { // 5 cycles of all 96 colors in the wheel
****for (i=0; i < strip.numPixels(); i++) {
******// tricky math! we use each pixel as a fraction of the full 96-color wheel
******// (thats the i / strip.numPixels() part)
******// Then add in j which makes the colors go around per pixel
******// the % 96 is to make the wheel cycle around
******strip.setPixelColor(i,*Wheel( ((i * 96 / strip.numPixels()) + j) % 96) );
****}**
****strip.show(); // write all the pixels out
****delay(wait);
**}
}
//*fill*the*dots*one*after*the*other*with*said*color
//*good*for*testing*purposes
void colorWipe(uint16_t c, uint8_t wait) {
**int i;
**
**for (i=0; i < strip.numPixels(); i++) {
******strip.setPixelColor(i,*c);
******strip.show();
******delay(wait);
**}
}
/**Helper*functions**/
//*Create*a*15*bit*color*value*from*R,G,B
unsigned int Color(byte r, byte g, byte b)
{
**//Take the lowest 5 bits of each value and append them end to end
**return( ((unsigned int)g & 0x1F )<<10 | ((unsigned int)b & 0x1F)<<5 | (unsigned int)r & 0x1F);
}
//Input*a*value*0*to*127*to*get*a*color*value.
//The*colours*are*a*transition*r*-*g*-b*-*back*to*r
unsigned int Wheel(byte WheelPos)
{
**byte r,g,b;
**switch(WheelPos >> 5)
**{
****case 0:
******r=31-*WheelPos*%*32;***//Red down
******g=WheelPos*%*32;******// Green up
******b=0;******************//blue off
******break;
****case 1:
******g=31-*WheelPos*%*32;**//green down
******b=WheelPos*%*32;******//blue up
******r=0;******************//red off
******break;
****case 2:
******b=31-*WheelPos*%*32;**//blue down
******r=WheelPos*%*32;******//red up
******g=0;******************//green off
******break;
**}
**return(Color(r,g,b));
}


What's going on here