[update: just tried the line.py demo, and the problem is very clear]
[update: switched from my Pi 3A+ to a Pi 3B, and the effect is lessened, but still pretty bad. I’m guessing the PWM pulses are sent sequentially to each column, and goes from highest to lowest in each row (based on the memory layout used for the SPI write). The voltages or current (I’m not skilled with the analog universe) is not dropping at the end of the pulse quickly enough, smearing the pulse a bit. I’m going to try swapping power supplies around. Some vague recollections about impedance, but I’m really out of my depth.]
I’ve got a simple C program based on the forest demo that is supposed to light one pixel at a time, but I see a smudging effect that lights up the two earlier leds, each a bit dimmer. What’s weird is that it wraps around to the opposite side, not shifting a line, so lighting led 0 also lights up leds 15 and 14 a bit, but lighting up led 5, say, lights up led 4 some, and led 3 a little.
It all seems straightforward: do a single SPI_IOC_MESSAGE(1) with a length of 769 (1+256*3), the address of the buffer beginning with that SOF (start of frame, 0x72), followed by 256 rgb8 color values.
I tried lowering the transfer speed, but it didn’t help and I couldn’t think of anything else at the moment.
Anybody have any ideas?
I’ve added a pic of blue columns, every 4th blue set to 64, all else zero. The color came out weird (due to lighting, probably) but you can see the smudging effect clearly.