Glass LED Chess table?

I ordered an extra Arduino..... And I have a glass chess board with glass chess pieces, half are frosted and half are clear. I figure it'd be SUPER awesome if I can somehow make the LEDs light up when the board sense that there is a chess piece on top of that specific position.

Is there an simple way to do this with an Arduino? I know I'll need an LED matrix, but what should I use as input so that the Arduino know if there's a piece on top? I could use a bunch of reed switch with magnet on the bottom of the chess piece, but can I do a Reed switch matrix? This would still require too many pins?

Any thoughts?

It would be possible but would require external I/O components like shift registers and encoder chips. It would be a pretty cool project, but probably a little too complex if you are a beginner to Arduino, electronics and/or programming.

Start with simple projects and tasks and as you learn and gain experience more complex projects will be easier to master.


My only idea would be RFID, but I don't think that can be used in close range with each other... Also, the frid tags would be way too noticible... Do you need to identify specific pieces, or just that there is a peace there? That would help me come up with a solution.

I am pretty much on the EXACT same level as Richard... If you don't need to detect the specific chip, you could sand the pottom of each piece and use ir to detect the pieces... The problem with that is that you said half of the board is frosted... If that's so, you couldn't do the ir on those squares; it would always read that there was a piece because the light would always reflect off of the board itself... This is def. a touch challenge... :-?

Sounds like an awesome idea!

/normal post

depending on the thickness of everything what about small ring magnets

What about a basic light sensor.. you may need to calibrate it differently for clear and frosted spaces, but there must be some sort of measurable change.

but can I do a Reed switch matrix?

Yes you can have a matrix of input switches just like you have a matrix of LEDs. It is best to have a diode in line with each switch. Look at the input side of my monome project for schematic and driving software:-

Not just best to have the diodes---absolutely necessary since there are 32 pieces maximum to keep track of, easily could make "ghosting" (is that what it's called?

It will work without the diodes but then it will only be able to cope with one switch being pressed at any one time. With the diodes you can implement what is known as n-key roll over.

I don’t know if it’s possible (if it is, then it’s hard and you will need multiples arduino)
You could glue a magnet under each chess pieces. To know if a case is vacant or used, you could use a few Hall effect sensor positioned on top of your Led array.
I don’t think it’s important to filter the surrounding magnetic field.
Then, maybe it’s possible with trigonometry to actually detect where the field is stronger (with the multiples Hall effect sensor) and get a somewhat clear position, just use the same magnet model/type for each pieces.

With RFID you could assign the correct chesspiece an ID so the arduino know what are the pieces. If you can write in the sketch some basic rules of Chess (aka, game grid, start position and chess pieces) Maybe it could actually follow the mouvements of each pieces from the start to the end of the game.

This is just an idea, all theory…keep in mind that I’m a complete n00b and I don’t own any Arduino. :wink:

or Just use push buttons, more simple.

No offense, but this can actually be done with one arduino... Shift Registers are your friends!

I will have to look into some shift registers..... but it all sound like very possible.

RFID would be quite expensive to have THAT many readers in theory to figure out what pieces they are... but it would definitely be FREAKING AWESOME. But I think just to have the individual square light up is good enough for me.

So I will begin by ordering TONS of reed switches, tiny tiny magnets. That's the plan of attack on this project. Thanks for all the inputs!

So I will begin by ordering TONS of reed switches, tiny tiny magnets.
That’s the plan of attack on this project. Thanks for all the inputs!

I suggest you don’t but tons at first but rather a couple to see if they work for your application, then you can buy the rest required if they fit your need. The amount of magnetic flux a specific magnets has Vs what is required by a specific reed switch Vs the spacing from the magnets to the switches really should be tested hands on first.


Have you seen this project:- It is in German but fortunately schematics are universal.

I actually enrolled into this forum because I had the same idea and was wondering if I could use Arduino for a similar project of mine.

Please note that I haven't yet read through all the Arduino documentation and am not familiar with the capabilities of all the different boards, but I do know some stuff that led me to the questions I'll be asking now, so feel free to bitchslap any mistakes I make... ;)

I had the idea to use capacitive sensing of the chess figures. It's fairly simple to implement on Arduino (native support, according to the Playground section, articles and, and by varying the capacitance of each chess figure (12 values: pawn, knight, bishop, rook, king & queen x 2 for each colour) you could (I assume) measure which figure was on which sensor at any given time.

In case of glass figures, you could encase the base of the figures with different metal rings to achieve the capacitance changes.

In case of full metal figures you could even go further - the capacitance would change dramatically when a piece was being touched by a person (allowing for the program to detect a person wants to interact with that piece at that field, highlight other chess fields the player could legally move that piece to by lighting up LEDs under legal fields - something like a tutorial).

The only problem with this method - as Arduino allows (as far as I could gather) up to 6 capacitive sensors per Arduino, this means I would need 11 Arduinos just to do the sensing? :o This would be an overkill... Or am I wrong? Can the Mega deliver the punch? ::)

Or am I completely wrong and this isn't possible at all? :-/


and by varying the capacitance of each chess figure

How are you going to do that then?

Or am I completely wrong and this isn't possible at all

I would have to say that this was not possible. You can't get an isolated piece to change the capacitance you need some sort of a circuit between the capacitive plate and ground. You are only going to get that when the piece is touched. Also you will have trouble with cross talk having capacitive sensors being so close to each other.

Extensibilty: The projects of Paul and Mario use cap charging in different ways ... Quite interesting, I had not found these articles before..

Marios approach is more esoteric and needs I/O pins typical for microcontrollers only; however there are "port expanders" that can be used. Also the combination of Tri-state outputs and high impedance input will work. As all sensors can be uncharged at the same time just one Arduino pin is fine for that. The sensing can be accomplished by any CMOS gates, e.g. from shift registers. Also analog multiplexers might work... needs a little bit of research :-)

Paul's approach is more stable. It can be extended in a similar way, however needing a separate resistor for each line.

As Mike has already implied, there are a lot of parasitic effects to consider when you enter the megohm/picofarad world.

You need some sort of a circuit between the capacitive plate and ground.

:-X I’m an idiot.

Carry on.

I liked the the reed switch idea. I have a glass chess board just the same, and had the same idea. I am a security alarm tech by trade so I have easy access to alarm contacts, 3/8" and 1/4" normally open switches, with magnets of the same size. I was thinking of simply building rows of the switches and just having it fire off an LED whenever that switch closed.

If input2 = high, then write led2 high. Something like that 64x. But then you dont get a different color for the opposing side. :-[