Si & Joel's Disco Dance Floor

(This is a page of notes, so will change!)

You know how you get those stupid ideas when drunk? Well, we were out together on Joel's birthday, discussing how funky an underlit dancefloor would be at this year's Eurovision party - the same sort of thing as the infamous Studio54 dance floor in New York, the sort of thing John Travolta threw his moves on in 'Saturday Night Fever'.

Oh dear.

News

Requirements

No matter how stupid the idea seems, we need some aims:

Logically speaking it's easiest to do this as an 8x8 matrix; that gives a controller requirement for 192 LEDs (8x8x3) and means we can block the floor into four segments of 16 cells each.

Control Systems

After much grinding of teeth I chose the Arduino solution with the 7219s - three of those, one per colour, would be sufficient.

Physical Construction

The four segments can be connected together using banana clips - nice and easy - and cabinet locks on the sides to keep them together. B&Q sell timber 18mm x 70mm x 2.1M, which on its end will provide a reasonable boxing, and some hardboard or ply on the base, screwed in and countersunk to provide access for the frame to be removed if need be. Thus, we're actually building the LED sections on the ply itself with the frame over the top, with locating blocks on the base on the inside corners of each quadrant of 4 cells.

Communication

A quick note that we worked out a serial protocol last night for talking to the dancefloor live from a computer via the Arduino's in-built USB, or a MAX3323-based serial interface, although Maplin sell the MAX3232CPE which I'm going to try instead since they're local.

The idea is that the floor can run in one of two modes - computer-driven or 'automatic'. The auto mode is simple, it runs without intervention if you don't want to do any snazzy stuff. The computer-driven one however I think will work something like sending a stream of ASCII characters in [KRGYBMCW] and a control char to flip to the floor - that way you'd have a 'shadow' screen system which would eliminate flickering.

So for instance if you were to just whack it into minicom and draw out a rainbow stripe effect, assuming usual ASCII values in square brackets:

[STX]
RYGCBMRY
GCBMRYGC
BMRYGCBM
RYGCBMRY
GCBMRYGC
BMRYGCBM
RYGCBMRY
GCBMRYGC
[ETX]
OK

Some notes about the protocol (also helpful to refer to an ASCII table):

I'm not quite sure yet whether to do some sort of compression but probably not.

Useful Links


Index


This is a work-in-progress, and more information or construction info will appear here as and when we do stuff.