Hacker News new | ask | show | jobs
by ChuckMcM 3410 days ago
The interface is this: "on/off", "line selectx4", "clock", "latch", "R", "G", and "B".

So the loop is:

1) Clock out a row of R, G, B values for the number of panels you have linked together (64 x n)

2) Turn off the LEDs on that row (enable goes low)

3) Latch the value

4) Select the next row

5) Turn on the display (enable goes high)

(my repo which does this: https://github.com/ChuckM/1bitsy-examples/tree/master/demos/... )

Since there are 16 "rows" multiplexed on to one "row driver" you need to at least clock out a set of all the rows every mS to get a 60Hz refresh rate (or every 250uS for a 240hz rate).

It is "easy" to do 3 bit RGB color (8 colors) since each value in R, G, and B has one bit. To get shades you need to PWM the bits and that consumes more bandwidth (with the 240Hz I can get a nominal 4 'intensities' per color by PWM'ing within the 60 fps rate, more by PWMing across a longer period. (which leads to interesting effects btw).

The panels all come with these neodymium magnetic feet so you can just put up a piece of 20ga sheet and stick up your display very simply.

On the video I expect it is a camera problem, the LEDs turn off pretty much instantly. The only caveat to that would be propagation from board to board of the 'enable' line but that is less than a microsecond.

1 comments

After staring at that repo for a bit (my understanding of C is minimal, and I've never done any embedded work although I definitely want to) I finally got the "OH, the six set_pin() calls are R, G, B for two sets of rows on two panels" (in clock_two_rows()) it kinda clicked and made sense.

I'm not 100% on what "line selectx4" does though. And this is all much more foreign than I'd like... but that's fine, I'll figure it out eventually. (The main thing with software is that accidents/learning/experimentation don't cost anything :P)

It would be interesting to get a microcontroller, or set of microcontrollers connected together at very high speed, to clock data out to the panel in perfect lockstep. An excuse to use assembly language perhaps, but only if the driver microcontroller itself is deterministic (a bit of an unknown).

I'm surprised about the bit with the magnets (I guess if you're trying to bolt a computer with a spinning HDD onto the back of it you're doing it wrong).

Good to know the LEDs turn off instantly. Thanks very much for that bit. I do wonder about the board-to-board propagation time, yeah. I take it each board is chained to the next board's enable line (?), or are they all driven from the microcontroller?

You don't need assembly, you just need a common "sync" line where all the computers start at a given point.
Right. That makes sense.

I haven't fully mentally appropriated how far embedded computing has come. I would have solved this by counting instruction lengths :)