Looks a very neat idea. I tried with the esp32s3 board (parallel ILI9488) - and got many build errors. G:/Downloads/DisplayManagerDemo/main/esp-project.c: In function 'FCD_0fe41_gLCD_ILI9488__Initialise': G:/Downloads/DisplayManagerDemo/main/esp-project.c:2810:21: error: expected expression before '...
With a little bit of tuning - now working with a 1 metre strip (they turned out to be RGB as well) I hit a very strange effect. If if Refresh I do for a 0 bit. PORTD = ph; PORTD = pl; Then if I do the same for a 1 bit with a few nops. Then it is slower (for the 0 bit) than doing PORTD |= 0x80; PORTD...
Now tested with 2 LEDs and seems to work AOK (I have a few 'single' LEDs with nice sockets / plugs - so adding extra is easy!) - which bodes well for multiple.
I think I have a 1m of these somewhere (RGBW) - which I will try and find to test further.
Okay a bit of a play - and a version running on an 8MHz MCU. There is an issue - the pin used is hardcoded here as D7. If you want to change it then you'll need to change the output at the start of main (this sets the pin to be an output and should really be done by setting DDRx etc). And the occurr...
I've tested using an ATMega8 - running at 16MHz (with external crystal) - LED lights all good and at 8MHz (internal)- not good. Checking on a scope - the timings look 'out' when running at 8MHz - and in fact altering the clock speed - seems to generate the same number of nops (for example setting it...
Can you try the attached - just outputs a colour (255) to each of RG and B then repeats - note that if you don't have the RGBW variant (I don't) then setting W to 0 is okay... (Note I use D7 as the output pin - you'll need to change this to suit)
Just got an SK6812 running with an Arduino - admittedly 16MHz - using the library. The solution seems to be simpler than expected - add a small delay after the initialise (it seems that the LED takes a moment to become 'ready' after power on')
The timing might be a bit 'tight' on an 8MHz chip and hardware? A while ago I posted some code for the ATTiny85 - at85_rainbow.fcfx Where you can try 'tweaking' the timings. Note that this can be sped up by removing the 32 bit variable in Refresh and using 3 single byte 'shifts' (the AVR MCUs are 8 ...