How To light off the Led Strip / How to accelerate the Led Strip
Moderators: adafruit_support_bill, adafruit

How To light off the Led Strip / How to accelerate the Led Strip

by julia753 on Mon Dec 03, 2012 6:49 pm

Hello everybody, I'm Julia from France and I have a project to make for school.
I bought an adafruit LPD8806 but I have sme problem with it and three days that I work on it !

I use a light sensor and I want to use the val for know if I must light on or not my ledstrip.

What I want is


if val > 600

Led Strip off,

else if val < 600 & val > 400

Led Strip on - speed 1

else if val < 400

Led strip - speed 2




I use only red led in the stripe so I made :



Code: Select all | TOGGLE FULL SIZE

//    ---------     Led Strip  CODE

#include "LPD8806.h"
#include "SPI.h"

// Number of RGB LEDs in strand:
int nLEDs = 64;

// Chose 2 pins for output; can be any valid output pins:
int dataPin  = 2;
int clockPin = 3;

LPD8806 strip = LPD8806(64, dataPin, clockPin);


//  -------- End of the led strip   CODE


int val = 0; 


void setup() {
  Serial.begin(9600); 
  pinMode(LED, OUTPUT); // LED is as an OUTPUT
 
  // --------  Led strip code
 
    // Start up the LED strip
  strip.begin();

  // Update the strip, to start they are all 'off'
  strip.show();
 
  // ------ End of the LED Strip
 
}

void loop() {
   
  val = analogRead(0);
 
if (val > 600)
{
 
  // Here I want to set off the ledstripe
}
else  if (val<600 && val > 400)
{
  // -------  LED Stripe Code
 
 
  // Send a simple pixel chase in...
  colorChase(strip.Color(127,   0,   0), 50); // Red

  // Fill the entire strip with...
  colorWipe(strip.Color(127,   0,   0), 50);  // Red

 
  // ------- END OF THE LED STRIPE CODE
  }
else  if (val<400)
{

  // Here I want to accelerate the LED stripe

 
    Serial.println("RUBAN");

 
  }

 
 



  Serial.println("Capteur 1   ");
  Serial.println(val);

  delay(1000);

}


//------- LED STRIPE CODE

void rainbow(uint8_t wait) {
  int i, j;
   
  for (j=0; j < 384; j++) {     // 3 cycles of all 384 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel( (i + j) % 384));
    } 
    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) {
  uint16_t i, j;
 
  for (j=0; j < 384 * 5; j++) {     // 5 cycles of all 384 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      // tricky math! we use each pixel as a fraction of the full 384-color wheel
      // (thats the i / strip.numPixels() part)
      // Then add in j which makes the colors go around per pixel
      // the % 384 is to make the wheel cycle around
      strip.setPixelColor(i, Wheel( ((i * 384 / strip.numPixels()) + j) % 384) );
    } 
    strip.show();   // write all the pixels out
    delay(wait);
  }
}

// Fill the dots progressively along the strip.
void colorWipe(uint32_t c, uint8_t wait) {
  int i;

  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

// Chase one dot down the full strip.
void colorChase(uint32_t c, uint8_t wait) {
  int i;

  // Start by turning all pixels off:
  for(i=0; i<strip.numPixels(); i++) strip.setPixelColor(i, 0);

  // Then display one pixel at a time:
  for(i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c); // Set new pixel 'on'
    strip.show();              // Refresh LED states
    strip.setPixelColor(i, 0); // Erase pixel, but don't refresh!
    delay(wait);
  }

  strip.show(); // Refresh to turn off last pixel
}

/* Helper functions */

//Input a value 0 to 384 to get a color value.
//The colours are a transition r - g -b - back to r

uint32_t Wheel(uint16_t WheelPos)
{
  byte r, g, b;
  switch(WheelPos / 128)
  {
    case 0:
      r = 127 - WheelPos % 128;   //Red down
      g = WheelPos % 128;      // Green up
      b = 0;                  //blue off
      break;
    case 1:
      g = 127 - WheelPos % 128;  //green down
      b = WheelPos % 128;      //blue up
      r = 0;                  //red off
      break;
    case 2:
      b = 127 - WheelPos % 128;  //blue down
      r = WheelPos % 128;      //red up
      g = 0;                  //green off
      break;
  }
  return(strip.Color(r,g,b));
}

//------- END OF THE LED STRIPE CODE







Thanks for the help !!

Julia
julia753
 
Posts: 1
Joined: Mon Dec 03, 2012 6:03 pm

Re: How To light off the Led Strip / How to accelerate the Led Strip

by adafruit_support_bill on Tue Dec 04, 2012 11:35 am

if val > 600

Led Strip off,


To turn the strip off, just do a colorWipe with 'black':

Code: Select all | TOGGLE FULL SIZE
     colorWipe(strip.Color(0,   0,   0), 50);  // Black


else if val < 600 & val > 400

Led Strip on - speed 1

else if val < 400

Led strip - speed 2


To change the speed of the strip, change the delay parameter (the last one). A shorter delay will make it go faster.

Code: Select all | TOGGLE FULL SIZE
    colorChase(strip.Color(127,   0,   0), 50); // Red - Slow

    colorChase(strip.Color(127,   0,   0), 10); // Red - Fast!
User avatar
adafruit_support_bill
 
Posts: 30079
Joined: Sat Feb 07, 2009 9:11 am