Neopixel All Flash

I’m trying to get my head around how this Neopixel library works, and I have 4 gems that I want to blink all at the same time. I put each gem on it’s own pin, and put them in an array.

My question is because I’m learning how to harness the power of NEOPIXELS! that my code wasn’t too sloppy. For example, should I be messing with the brightness to turn it off, or set the RGB to 0,0,0?

#include <Adafruit_NeoPixel.h>

#define PIN2 2                          // cyclotron upper left light
#define PIN3 3                          // cyclotron upper right light
#define PIN4 4                          // cyclotron lower left light
#define PIN5 5                          // cyclotron lower left light
#define CYC_LED_NUM 8                   // # of LEDS on each cyclotron gem (12???)

int rotatenum = 0;                      // rotates between cyclotron lights
int i = 0;                              // counter for initalizing gems in setup()

// Parameter 1 = number of pixels in strip
// Parameter 2 = 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(Parameter1, Parameter2, NEO_GRB + NEO_KHZ800)
Adafruit_NeoPixel cycloPins[] = {
  Adafruit_NeoPixel(CYC_LED_NUM, PIN2, NEO_GRB + NEO_KHZ800),
  Adafruit_NeoPixel(CYC_LED_NUM, PIN3, NEO_GRB + NEO_KHZ800),
  Adafruit_NeoPixel(CYC_LED_NUM, PIN4, NEO_GRB + NEO_KHZ800),
  Adafruit_NeoPixel(CYC_LED_NUM, PIN5, NEO_GRB + NEO_KHZ800),
};

void setup() {
  Serial.begin(9600);             // for serial print (testing)

  for(i=0;i<3;i++){
    cycloPins[i].begin();            // prepare the data pin for NeoPixel output
    cycloPins[i].show();             // this initializes all the NeoPixels to an initial “off” state in case some were left lit by a prior program
  }
  //Serial.print(" show#: ");
  //Serial.print(i);
}

void loop() {

  //cycBlinkFade();         // each gem lights up and fades repeating sequence
  cycOverheat();        // all 4 gems flash red for a specified amount of time
  rotateLED();            // iterates to the next gem

}

void rotateLED(){
  if(rotatenum < 3){
    rotatenum++;
  } else {
    rotatenum=0;
  }
  Serial.print(" rotatenum#: ");
  Serial.print(rotatenum);
}

// each gem lights up and fades repeating sequence
void cycBlinkFade(){
  for(int i=0; i<CYC_LED_NUM; i++){
  cycloPins[rotatenum].setBrightness(255);
  cycloPins[rotatenum].setPixelColor(i, 255,0,0); // RED // setPixelColor(n, red, green, blue)
  }
  cycloPins[rotatenum].show();
  for(int y=255;y>=0;y--){
    cycloPins[rotatenum].setBrightness(y);   // change the brightness for next time through the loop:
    cycloPins[rotatenum].show();
    delay(4);
  }
  //delay(500); // turn this on to add a delay
}

void cycOverheat(){

  for(int oh=0;oh<3;oh++){
    cycloPins[oh].setBrightness(255); 
    for(int i=0; i<CYC_LED_NUM; i++){
      cycloPins[oh].setPixelColor(i, 255,0,0); // RED // setPixelColor(n, red, green, blue)
    }
  cycloPins[oh].show();       
  }
  delay(300);

  for(int oh=0;oh<3;oh++){
    cycloPins[oh].setBrightness(0); 
    for(int i=0; i<CYC_LED_NUM; i++){
      cycloPins[oh].setPixelColor(i, 255,0,0); // RED // setPixelColor(n, red, green, blue)
    }
  cycloPins[oh].show();       
  }
  delay(300);
}

Tebasaki:
...I have 4 gems that I want to blink all at the same time. I put each gem on it's own pin, and put them in an array.

they are typically wired in series, attached to a single pin and dealt with by the library.

Having them all on the same pin sounds like it would be more difficult to program. How would I tell it to set brightness to 255 on 7 gems, then the next 7, and so on?

The whole point of Neopixels is that they are addressable so that you only need to use 1 data pin from your board. They are addressable. This means you can address each LED individually. If you want to control the first seven, then they are addressed 0-6. Next seven, 7-13. etc.

If you're using RGB to set color, it is the same thing as setting brightness. Use 0,0,0 for off. 127, 0, 0, for medium red. 255, 0, 0, for bright red. etc.

If I do daisy them, I'm going to need a serious battery to push light the them all.

Right now, for example, I have a neopixel strip daisy-chained(2 total) and I have it running off of USB power from the PC. There's no resistor on it, and it's trying really hard to push out light. So if I have 4 neopixels (each gem has 7 leds) I'm going to need a capacitor for that, won't I?

Whether the devices are daisy-chained or not has NO impact on how much current they draw. It sounds to me like you are not providing enough power now.