Arduino noob...Only one pixel is blinking.

I bought a strand of 20 LED pixels to learn on. I’m following a sample/test code from Adafruit, but I can only get one pixel to turn on. Could someone take a look at this code, and tell me if I’m missing something? This is a copy and paste right out of my arduino software. Thanks!

#include “SPI.h”
#include “Adafruit_WS2801.h”

/*****************************************************************************
Example sketch for driving Adafruit WS2801 pixels!

Designed specifically to work with the Adafruit RGB Pixels!
12mm Bullet shape ----> https://www.adafruit.com/products/322
12mm Flat shape ----> https://www.adafruit.com/products/738
36mm Square shape ----> https://www.adafruit.com/products/683

These pixels use SPI to transmit the color data, and have built in
high speed PWM drivers for 24 bit color per pixel
2 pins are required to interface

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution

*****************************************************************************/

// Choose which 2 pins you will use for output.
// Can be any valid output pins.
// The colors of the wires may be totally different so
// BE SURE TO CHECK YOUR PIXELS TO SEE WHICH WIRES TO USE!
uint8_t dataPin = 2; // Yellow wire on Adafruit Pixels
uint8_t clockPin = 3; // Green wire on Adafruit Pixels

// Don’t forget to connect the ground wire to Arduino ground,
// and the +5V wire to a +5V supply

// Set the first variable to the NUMBER of pixels. 25 = 25 pixels in a row
Adafruit_WS2801 strip = Adafruit_WS2801(20, dataPin, clockPin, WS2801_GRB);

// Optional: leave off pin numbers to use hardware SPI
// (pinout is then specific to each board and can’t be changed)
//Adafruit_WS2801 strip = Adafruit_WS2801(25);

// For 36mm LED pixels: these pixels internally represent color in a
// different format. Either of the above constructors can accept an
// optional extra parameter: WS2801_RGB is ‘conventional’ RGB order
// WS2801_GRB is the GRB order required by the 36mm pixels. Other
// than this parameter, your code does not need to do anything different;
// the library will handle the format change. Examples:
//Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin, WS2801_GRB);
//Adafruit_WS2801 strip = Adafruit_WS2801(25, WS2801_GRB);

void setup() {

strip.begin();

// Update LED contents, to start they are all ‘off’
strip.show();
}

void loop() {
// Some example procedures showing how to display to the pixels

colorWipe(Color(255, 0, 0), 50);
colorWipe(Color(0, 255, 0), 50);
colorWipe(Color(0, 0, 255), 50);
rainbow(20);
rainbowCycle(20);
}

void rainbow(uint8_t wait) {
int i, j;

for (j=0; j < 256; j++) { // 3 cycles of all 256 colors in the wheel
for (i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel( (i + j) % 255));
}
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 < 256 * 5; j++) { // 5 cycles of all 25 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 * 256 / strip.numPixels()) + j) % 256) );
}
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(uint32_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 24 bit color value from R,G,B
uint32_t Color(byte r, byte g, byte b)
{
uint32_t c;
c = r;
c <<= 8;
c |= g;
c <<= 8;
c |= b;
return c;
}

//Input a value 0 to 255 to get a color value.
//The colours are a transition r - g -b - back to r
uint32_t Wheel(byte WheelPos)
{
if (WheelPos < 85) {
return Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if (WheelPos < 170) {
WheelPos -= 85;
return Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}

You probably connect the strand the wrong way around. Did you check which side is input and which is output?

pylon: You probably connect the strand the wrong way around. Did you check which side is input and which is output?

It appears to be correct. The arrow on the pixels is going away from the board and pointing to the next pixel in the strand.

Post a picture of that, showing your wiring.

pylon:
Post a picture of that, showing your wiring.

The arrow is headed left out of the pixel. This is correct, yes?

Is that an original Adafruit pixel? Because the board layout is different than on the pictures on the Adafruit website (for example wire colors are different).

Did you check if the power is available on the outgoing side of the pixel (12V)? Are you able to check the outgoing signals with a scope? What does the first pixel do? Does it wipe to red, then to green, then to blue? Or does it just blink in some way?

pylon: Is that an original Adafruit pixel? Because the board layout is different than on the pictures on the Adafruit website (for example wire colors are different).

Did you check if the power is available on the outgoing side of the pixel (12V)? Are you able to check the outgoing signals with a scope? What does the first pixel do? Does it wipe to red, then to green, then to blue? Or does it just blink in some way?

it is not an adafruit pixel. It's a ebay china pixel. I am not able to check the outgoing signals. The pixel just goes at random. I even get a little purple some times. Thanks for your help pylon!

Do you have a multimeter? If so, please check to which pin on the WS2801 the CLK and DATA lines are connected (please check both sides, input and output). And please make a sharp picture (so we can see what's written on the chip and board) of just the pixel and post that.

pylon:
Do you have a multimeter? If so, please check to which pin on the WS2801 the CLK and DATA lines are connected (please check both sides, input and output).
And please make a sharp picture (so we can see what’s written on the chip and board) of just the pixel and post that.

I do not have a multimeter. As I mentioned earlier, I’m a complete noobie at this. I bought the strand, the board, and the power supply. Here is a picture of the pixel. Though the wires are different colors, it appears to be the same layout as the adafruit pixel, ws2801 and all.

Thanks again

I do not have a multimeter.

Stop right now, before you hose something up thoroughly. Get a multimeter. Then, you can continue with your project.

Even a cheap multimeter will do to start with. Just something that tells you what is happening in your circuit. It doesn't have to be extremely accurate, ballpark numbers will do for this type of work.