When You Need Just One Pixel on a P1
... go with the APA102c. Most people like it because it's SPI (without the CS line) so it can go very fast. Since it has a separate clock signal, it can also go slow -- that is, it can be controlled with interpreted Spin 1.
For work I made a bunch of P2 Accessory type boards, but wanted them compatible with the P1 as I also made an Eval-type board for the P1. On my button board is a single APA102c. Since the protocol is synchronous, I wrote these two methods to set the LED color
pub set_pixel(rgb) : final final.byte := $FF ' global = 100% final.byte := rgb.byte ' blue final.byte := rgb.byte ' green final.byte := rgb.byte ' red shiftout($00_00_00_00) ' start frame shiftout(final) ' color shiftout($FF_FF_FF_FF) ' end frame pri shiftout(value) repeat 32 outa[PIX_D] := value <-= 1 outa[PIX_C] := 1 outa[PIX_C] := 0
My P1 Eval board has an SAO (Silly Add-On) header (I'm not a particular fan of cats, that's an SAO that I was gifted at DEF CON last year), a QWIIC port, and a 2mm JST port with the same pins. I'd like to replace that JST with a SEEED Studio type connector but I can't find the raw parts at Digikey (If you know, please share). I added a bigger reset button, have four P2-Accessory type headers, and a 2.5mm JST for external power (a jumper will let me send USB 5v to the headers).
In all we made about 10 different accessory boards to facilitate P1 and P2 development over the coming months.