Well, once again I come to you bearing news of nerdy things. Pretty damn nerdy things. However, you can’t blame me, blame my girl. She found the big pile of really cool free electronics stuff on Craigslist. Really, do you blame the dog for eating food left on the floor? No, you dont, and I couldn’t help myself.
Anyway, she found a free listing on Craigslist of a guy who had a ton of old electronics stuff. So I went out there yesterday and grabbed a big boxful of it. To be honest, I feel kinda bad taking it for free, because this was a steal. I don’t mean like you took a penny candy from the corner store kind of steal.
Granted that some of the stuff is old, and some is a bit damaged, but there is still easily several hundred dollars worth of bits in that box, and when it was new, and pristine, I’d place the total somewhere near a grand.
I managed to come away with a bunch of stuff ranging from a box full of capacitors/resistors/etc, to huge 53 Farad capacitors, to a bunch of wire, to a few lcd panels. (Not the kind you connect to your computer.) I’ll talk about the rest of the stuff later, the thing I’m gonna talk about now is one of the lcd panels I got.
It’s a EL (Electro-Luminescent) panel. Which means that unlike an LCD which creates dark/light spots that a backlight shines through, in an EL panel each pixel actually emits it’s own light. However it’s not the same as an LED panel which uses different technologies to accomplish the same thing as the EL panel.
Unfortunately (for me), they designed this panel to be like a VGA display, in that you must provide a new image for the panel somewhere in the range of 60 times a second (60 Hz sound familiar? That’s because it is!). Being 640 pixels wide, and 480 pixels tall, that means that I need to write 307,200 pixels in a 60th of a second, or 18,432,000 pixels per second. That’s REALLY fast.
If you go too slow, then you just get a line that scrolls down the screen. I found that out after writing some very basic code to turn every pixel of the screen on for my arduino. It was a little slow. Then after doing some research, I found that the digitalWrite functions I was using to generate the digital communications take quite a bit of time to actually change the state of the output pin. I found a way that writes directly to the hardware port register which happens a lot faster. After optimizing code, I’ve got it up to about 68Hz. However, I don’t have anything fancy displaying, so we’ll see what I can push out of it with that extra 8 Hz.
Here’s some pictures, and a video displaying it actually working. (Alternating lighting up half the screen.)