I am no expert here. I'm a "jack of all trades and master of none", so weigh the following accordingly.
I found that the neopixel libraries referenced previously set up the control pin with the standard Arduino pinMode() and digitalWrite() functions and using the OAK port numbers work as expected, but that the ESP8266 implementation of the transmit data uses the GPIO port names.
Looking at pins_arduino.h in the OakCore/variants/oak/ repository I found the following mapping comment:
///0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
//uint8_t esp8266_pinToGpio[12] = {2, 5, 0, 3, 1, 4, 15, 13, 12, 14, 16, 17};
Using this mapping it told me that if I wanted to connect the neopixels to OAK pin 5, the corresponding ESP8266 GPIO designation was 4.
With this information I believe that the following will work without any modification to the libraries, For example, using the Adafruit library.
Assuming that you are using OAK pin 5 to control the neopixels, call the constructor with the corresponding GPIO port number, 4 (see mapping above):
Adafruit_NeoPixel strip = Adafruit_NeoPixel(1,
4, NEO_RGB + NEO_KHZ800);
Then in setup() make OAK pin 5 an output and restore OAK pin 4 back to an input if desired:
pinMode ( 5, OUTPUT );
digitalWrite ( 5, 0 ); strip.begin();
pinMode ( 4, INPUT ); //the constructor and begin will set this up as an output, change it back to an input if desired
strip.show(); // Initialize all pixels to 'off'
The above changes worked with Adafruit's strandtest example.
And if you are interested in controlling neopixels via WIFI, check out:
http://pance.mk/index.php/wifi-light-with-esp8266-and-arduino-code/Again, comments, corrections and/or a better solution will be appreciated!