Go Down

Topic: Adafruit Neopixel code for simple brightness fade. (Read 17707 times) previous topic - next topic

EdgarFriendly

I'm new to arduino coding and i'm having A LOT of trouble coding this thing.

I'm using the Adafruit Neopixel Library and what I want to achieve is this:

I want to set my 12-light neopixel ring to one specific color (blue).

I want the ring to FADE from full brightness to half brightness with a roughly 2 second interval.

Thats it.



So far I can make it blink, chase, rainbow, etc. But not fade between brightness steps.

Any help would be greatly appreciated.



EdgarFriendly

Okay I have this code now:
Code: [Select]
#include <Adafruit_NeoPixel.h>

#define PIN 6

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit... if you must, connect GND first.

void setup() {
  strip.begin();
  strip.show(); // initialize all pixels to "off"
}

void loop() {
  brighten();
  darken();
}

// 0 to 255
void brighten() {
  uint16_t i, j;

  for (j = 45; j < 255; j++) {
    for (i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, j, j, j);
    }
    strip.show();
    delay(10);
  }
  //delay(1500);
}

// 255 to 0
void darken() {
  Serial.begin(9600);
  uint16_t i, j;

  for (j = 255; j > 45; j--) {
    for (i = 0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, j, j, j);
    }
    strip.show();
    delay(10);
    Serial.println(j);
  }
  delay(1500);
}


And it fades exactly how I want only it's white. I've tried a few things to no avail. How to I make this set to 1 specific color?

larryd

strip.setPixelColor(i, j, j, j);
change to
strip.setPixelColor(i, 0, 0, j);

Etc.
No technical PMs.
If you are asked a question, please respond with an answer.
If you are asked for more information, please supply it.
If you need clarification, ask for help.

EdgarFriendly

Thanks, that works great.

Next question, is there a way to add a little green to it? I've tried a few things with varying results.

larryd

No technical PMs.
If you are asked a question, please respond with an answer.
If you are asked for more information, please supply it.
If you need clarification, ask for help.

EdgarFriendly

Thanks for your help man, I've really been struggling with this.

I tried that and it getting there but its not quite the effect I want. I'm want the green to fade in unison with the blue. Essentially making a single blue/green color pulsate up/down.

Go Up