I believe Eric's problem has been solved via a different forum. For the benefit of anyone finding this when searching on this problem:
The issue is with voltage thresholds - the WS2812 requires a voltage of at least 0.8*Vcc on the data input to be sure to count the signal as a high. At a VCC of 5V that means a data signal of 4V.
In reality the actual threshold is lower but how much lower will vary from part to part.
MBed digital IOs are normally just over 3V, well under the level to guarantee the LED will detect it reliably.
If you have trouble getting it to work you need to either add a buffer/level shifter IC to boost the data signal voltage up to over 4V or since the threshold depends on the supply voltage drop the LED power supply voltage down so that the mbed signal is over the threshold. This normally means a supply of 4.3 to 4.5V. The LEDs work fine at this voltage.
A common symptom of this problem is that the first set of values sent is displayed and never changes. When power is first switched on it takes a while to ramp up to 5V, during this time the first set of data gets through since the supply voltage is lower, once it stabilizes at 5V the data signal is below the required voltage and so the next update doesn't work.
Jacob
Thanks for this great library. I'm loving it and hope to use it in a Persistence of Vision prototype soon. I have noticed that if I set the buffer values and display them and then immediately set them to something else and display again that the 2nd display usually does not happen. If I display / wait / display then it works.
I'm using a LPC1768 and even a delay of 1ms does the trick. I will test this with shorter delays. I'm guessing the 2nd display tries to send the SPI signal when the first one is still firing. But I have not looked at your code (I am a CPP newbie).
Anyway just wanted you to know.
I blogged about testing the NeoPixel stick today with your library.
http://daddyoh.us/blog/2014/11/02/neopixel-test-on-mbed/
Eric