I do apologize for the slowness of this...it's simply an unprecedented situation and I've been trying to come up with an explanation and a plan for debugging it, or puzzling over if we're just not getting something through to each other. Let's try this:
Please bring up the strandtest sketch that's included with the Adafruit_WS2801 library.
Change lines 30 and 31 as follows:
Code: Select all
int dataPin = 11; // Yellow wire on Adafruit Pixels
int clockPin = 13; // Green wire on Adafruit Pixels
Code: Select all
Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin);
If this fails: my only explanation is that the Arduino is defective. If it was purchased from Adafruit, we'll replace it. (And if elsewhere...was it an "eBay special"? Because it sure looks like the genuine deal.)
If this works: getting into Twilight Zone territory. Leave the wiring where it is on 11 & 13, and let's do that thing with the sketch again for hardware SPI. Comment out line 37, enable line 41:
Code: Select all
//Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin);
Adafruit_WS2801 strip = Adafruit_WS2801(25);
If this works: you should be able to upload LEDstream at this point.
If this fails: cue theremin music, I'm baffled. You'll need to edit the library source file Adafruit_WS2801.cpp, and look for the 'startSPI' function around line 108. Last line of the function should normally be:
Code: Select all
SPI.setClockDivider(SPI_CLOCK_DIV16); // 1 MHz max, else flicker
Code: Select all
SPI.setClockDivider(SPI_CLOCK_DIV128); // 125 KHz
Re-compile the sketch and upload to board.
If this works: substitute SPI_CLOCK_DIV64 and SPI_CLOCK_DIV32 (and the original SPI_CLOCK_DIV16 if these both work), compile/upload, try to narrow down the point of failure.
If this fails: weird science fiction stuff is happening. Try connecting the Arduino to each of the other strands and see if the same phenomenon is observed, or if it's limited to one specific strand. If just the one strand, try moving that one later in the chain and see if the whole string then works.
If after all this we're still hitting a brick wall, this defies all logic and exceeds my ability to diagnose, in which case I will personally wire up and test an identical setup and send you the known working combination directly off my desk. Because I can't explain what you're seeing.