With good intentions for ~Christmas~ our upcoming “Rainbow” project, I bought a Adafruit 12mm Diffuse Thin Digital RGB LED Pixel (strand of 25). I wasn’t sure where to start, it took a bit longer than I had anticipated (d’oh). And today I finally found some time to sit down. What did I learn?
Most importantly, it works well with adafruit_ws2801.
- I did search quite a bit, but the adafruit overview turned out to be pretty great! This means I ended up using CircuitPython and not micropython. I am too much of a newbie to understand what that really means.
- I did not spend enough time with the Raspberry 4 I started with. Now it works on a Raspery Pico (old version, no “2”).
-
The wiring that ended up working for me, is very similar to the one displayed here, including the power connection, except the pins on the pico are connected like this:
position cable color ID corresponding code 0 green GPIO0 oclock = board.GP01 yellow GPIO1 odata = board.GP12 blue GND -
I did install the latest version of Adafruit CircuitPython, but was able to transfer the 10.0.3 version’s *.uf2 file to the pico’s thumb drive (bootsel pushed while plugging usb cable in) only after I had tried unsuccessfully with two other cables…
- Similarly, I was unable to transfer anything (single file or entire lib directory) from the adafruit/Adafruit_CircuitPython_Bundle, version Dec 31, 2025; 10.xvia the finder on OSX. It did work in terminal using
cp. What year are we living in? - I did not install other python versions
- adafruit’s sample code does work, except for the adaptions to the GP0 und GP1 noted in the table above.
- in CicuitPython, it seems the file that contains the code that is run when the pico is turned on but not connected to a computer, should not be called
main.py, butcode.py.
To Dos
- in the appendix of the “Raspberry Pi Pico-series Python SDK” (p.45), there is a Section including code sample for “Using PIO to drive a set of NeoPixel Ring (WS2812 LEDs)”, which seems a bit more hard coded, and I am curious how that would transfer to a WS2801.
- I did try to get some support from Claude in the process. Let’s say with some mixed results. For the wiring it was not of any help, essentially I used the interactiv prompt in Thonny to figure out what attributes
boardhas, and triedD0andD1, eventually in the correct order. Claude did provide some sample codes that look good, but haven’t tested those yet. Also, at the moment I am running this with Sonnet 4.5. I’ve read some good feedback for Opus 4.5 has some good feedback. Maybe I should also consider GitHub CoPilot. Keep in mind, these tools have their issues with language
- while this might be interesting for my WS2801, unfortunately, it does not seem to be a neopixel 5).