For Maker Faire I built a LED display using 10 BetaBrite Prism signs. Everything I used was store bought and nothing custom. The general idea was to capture motion video using a webcam and display it on this matrix of LED signs. However, after receiving the hardware this became impossible noting the 3-4 second delay in the time from which transmission to the sign starts, and when the image is displayed. I also wanted to take advantage of the usb port on each sign but ran into problems connecting more than one BetaBrite Prism via usb at a time.
COMPROMISE--
- Since the signs where too slow I had to change the direction of this project into a "photo booth" of sorts meaning that I would take timed snapshots via a webcam instead of full motion video.
- Connecting more than one sign using USB didn't work so I was stuck buying 10 USB->Serial adaptors
- The signs support up to 64 colors, however trying to modify the BetaBrite class to handle these colors fell through.
Hardware:
- 10 BetaBrite Prism signs
- 10 Serial to USB converters
- 3 USB SQUID
- 1 USB Xbox Webcam
- Plywood
- Drywall Screws
Software:
- BetaBrite API written by Jeff Atwood, ported by Clint Rutkas
- DirectShow lib (emphasis on DxSnap application)
- Code to splice web cam images and send to sign
You can download my source here.
How it works:
A picture (bitmap) is taken by the attached webcam using DirectShowLib, that bitmap is "spliced" meaning divided into 7 pixel by 80 pixel pieces (the LED layout on the sign). Each of those pictures is analyzed by the BetaBrite API and the pixels are checked one by one and associate a color value to that pixel to be sent to the sign. Once pixel color information is determined, that information is sent to the correct BetaBrite sign over a RS232 connection.
...hey! that's simple!... that's the point!
Some Details:
- In order to aide the "pixel correlation" step I used the webcam property page to adjust the settings so that the webcam was set for high contrast and high saturation.
- To keep the sending info the sign automated I connected each serial to usb adaptor one at a time making sure they showed up in sequence (i.e. COM6, COM7, COM8) and positioned the signs accordingly on the plywood stand.
- To compensate for the bezels on the signs I simply "cut out" those pixels when splicing the image
First Picture: Rob Taking his picture (the screen has not updated yet)
Second Pictures: Rob's picture on the LED screen
