I am extremely new to the world of Arduino but quite pleased with the potential. What i need help with is mostly advice either what to look for or just generally be pointed in the right direction. I am using a code from "Bliptronics.com Ben Moyes 2009" specifically pertaining to the LPD6803 IC, my problem is that there seems to be very limited examples of code to this IC. This code has 3 color modes, color wipe which is very easy to modify, a very nice rainbow which i still haven't deciphered yet, and a rainbow cycle (same as before) here is the code in question
#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(200, 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(100); // 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), 90);
colorWipe(Color(0, 63, 0), 90);
colorWipe(Color(0, 0, 63), 90);
rainbow(50);
rainbowCycle(50);
}
void rainbow(uint8_t wait) {
int i, j;
for (j=0; j < 96 * 9; j++) { // 9 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));
}
Any help would be much appreciated. My end goal is to try and have my LED strips Strobe to music and hopefully have push button light mode change, very standard from what i understand but very difficult so far.
I have read that there is a plugin for winamp to send frequency serial to arduino? if there is anyone knows of this either i would love to know about it. thank you.