1d LED pong- help point me in the right direction!

My prior experience:
I've made a bunch of small arduino projects, am a professional programmer, but very much not an electrical engineer. Can wing it enough to get by (in most cases).

The task:
Make a 1 dimensional pong game. The idea is there would be a long strip of LEDs with a button at each end (+ a 7seg display for score, maybe a couple other embellishments). If possible, I'd like the LED strip to be LONG- hopefully go all the way around the room (the tentative location of this installation would be an arcade bar).

My problem:
Given the number of ins/outs on an arduino board, I'd need some non-trivial way to drive all the (hopefully hundreds of) LEDs. I've worked with multiplexers before, so understand the basics there. And I also have the added benefit of only really needing to light 1 at a time. (Though, if possible, I'd like to open up the possibility of driving more/all of them as much as I can, to allow for sweet 1D animation effects).

My current trajectory:
I assume "multiplexing" isn't nearly enough, and would result in an absolutely insane amount of soldering/wiring, plus I'd have a nest of wires going to/from each LED? So I saw on other parts of this forum the recommendation of using "WS2811 LED strips".

So I amazon'd it, and found

They all appear essentially identical. Unless someone has a specific horror story about one of the brands or something, I'll figure out which to buy myself. That said-

My questions:

  1. Are these an appropriate starting point?
  2. Is an arduino UNO appropriate/sufficient to drive this?
  3. What kind of interface does it use? Is the general idea "a serial signal is sent to the first LED chip, retransmitted to the next - to the next - to the next ... until it hits the correct address"?
  4. Is this property (individually addressable) functional in realtime?
    4a .What kind of performance could I expect from them? 30fps? (where "f" = toggling one light off and another on)
    4b. Are there performance implications for the depth of the light accessed? (That is- is addressing the 500th LED a slower endeavor than addressing the 1st?)
  5. Are there other hints or directions you think I should explore?

Thanks!

  1. You are basically looking for 'neopixel' or WS2811/2812 type LEDs that are available in a serial strip (something like this one which is on an adhesive strip and sold by length. The ones on wires are less practical (I think) for your type of application.

  2. Yes but depends on how many lights and what response time you are looking for. The longer the string the more time it takes to set all the LEDs. You need to set all the LEDS every update.

  3. One pin plus ground and power. The serial interface is chip to chip as you describe.

  4. Yes but depends what you mean by real time (see 2 above). For a reasonable length of LEDs it will be faster than a person's reaction time.

  5. Start with a short string and experiment before you make the big investment for a long display. Lots of LEDs means lots of power needed and you may need to distribute power along the length of the LED string. Look at the FastLED library for managing these type of LEDs. The doc may give you better info on timing (or search FastLED to see what others have done).

You are welcome.

OK, Marco is the expert/ guru in LED animation so I won't add too much here.

I like your idea! Please do describe however, how you propose this game to actually be played?

As I understand it, when you send a chain of command to the LEDs, it is rippled through in turn and only becomes the current pattern as that command sequence finishes, so that all are updated simultaneously at that moment.

Clearly "NeoPixels"/ WS2811 chains are the way to go. There is a concern about the power drawn if you wish the whole or a substantial part of the strip to be lit at high brightness, requiring the splicing of heavy power busses at regular intervals into the otherwise inadequate strips. If however, you propose to only light a few - 15 or so - at any one time, it should not be so much of a problem - but you would be advised to provide parallel power feed every two or three metres just in case and at least each five metres.

Now note that the Individual wired LEDs from Amazon you cite perhaps have slightly heavier interconnecting wires - but still a substantial length. What is puzzling is that they show these as operating from 12 V. Why? Because to operate from 12 V, they would need to have LEDs in series sets of three (per chip) as some of those in Marco's link do but those shown have but one LED and one IC in each encapsulated module. I have not heard of 12V LEDs - has anyone else?

For "real world" projects, use a Nano, not a UNO. Same capability (plus two extra analog input-only pins), more practical format. It will run a fair number of NeoPixels.

Been there got the tea-shirt. See:- StringPong on Vimeo

The video points to the write up in the magazine. This is for a Raspberry Pi but I do have an Arduino version of this code one for one player, it bounces of the far end and the other for two players, one at each end.

At the end of the video is a sequence of it being played at the Newcastle Maker Fair 2015, that was the Arduino version. The rest of the video is from the Raspberry Pi.