Battlership game - How To Control 10 x 10 lights?


I'm looking a designing the classic game of Battleships using the Arduino but I need
to be able to address each LED individually and assign a sound etc. Is there a way to do this as the Arduino does not have enough input ports or is there a better way to address the LED's

I'm new to the Arduino so I'm not usre if this is possible.


Good old diode matrix, same as e.g. 8x8x8 LED cube. Use i2c io-epanders or shift registers.

You could control 100 separate Neopixel LEDs using 1 pin plus GND using an external 5V supply

Has to be a 10x10? WS2812 or similar led strip would save a lot of work.

There are 8x8 RGB blocks I've seen in the $11 range. They can be tiled, don't have edge borders.

Don't go with a matrix, the lights will be dimmer. Button matrix fine, led matrix not so fine.

If you want big squares for your board(s), light up translucent material from behind with leds. Grumpy Mike once posted a pic of a grid of ping pong ball halves lit by RGB leds, the colors and saturation looked really nice. Up on his site, here are RGB push buttons... could interface the game through the display?

I was also thinking of WS18B20 LEDs. Cut up a cheap strip of them, and you can easily address them all individually with just a single pin. Also allows for fun light effects, much more than just on/off.

WS2812B, not WS18B20

Can be individual units also if the strip spacing is not what you need. has then as thru hole parts also. Search ws2812, scroll down a little. I can't get a link pasted that doesn't include extra characters.

Ah, thanks for the correction. Haven't had my morning coffee yet, mixing up sensor numbers :slight_smile:

How big or small should the playing board(s) be?

One solution would be to buy 2 of those 8x8 LED matrix driver boards for few dollars.

You can buy a 4 unit one like MAX7219 Dot Matrix Module 4 in 1 Display and break it in half.

Should be physically easy to wire up, but the manner in which you wire it up makes huge difference on how easily you can address it via code.