Need help with implementing project idea

Hello everyone,

I'm working on a university project that requires the use of an Arduino. I'm planning to make a robot that can play draughts (similar to a computer player except on a real board). To model the computer-controlled player's pieces, I'm planning on placing LED's on every one of its squares (i.e. on half the draughts board. I'm probably gonna have the robot play whites and so I'm gonna have LEDs on all the white positions on the board). So there'll be 32 LEDs in total (the board has 8x8 = 64 squares). Since I have an Arduino Nano which has only 14 I/O ports, I'm planning on using a 74HC595 shift register to extend the output capability and control all those LEDs individually. That's the output taken care of then(?)

Now the input is where I'm a bit stuck. I intend to make the human opponent use the regular draught pieces, but with a slight modification. To let the Arduino know the positions of its opponent's pieces, the only thing I could think of was placing a simple circuit at the bottom of every black square (i.e. all the squares where the human player's pieces may lie). This circuit, by default, will be an open loop, but when a piece is placed on it, it'll turn into a closed loop and current will start flowing through it (a small piece of metal at the bottom of every piece will help complete the circuit). Now the problem with this approach is:

  1. I'll need to be able to sense 32 different inputs individually, and the Nano doesn't have nearly as many ports.
  2. I'll need to attach 32 circuits or at least a parallel circuit with 32 branches to the bottom of the draughts board. Will probably involve a crap load of wiring and make the whole setup really confusing.

I basically want to know the easiest possible method of implementing the above mentioned project idea. And since I'm lucky enough to belong to a third world country, I only have very limited access to ready-made components. As far as shift registers go (which, as far as I've researched, are the easiest means of increasing the input/output capability of an Arduino), I only have access to the ones mentioned here:
http://www.evselectro.com/index.php?route=product/search&keyword=register&category_id=0

I haven't actually started anything yet, so even a major change to the implementation is welcome if it helps reduce the complexity of the task at hand. Also, I'm new to Arduino, so please try and explain in layman terms.

Thank you in advance.

"draughts" ??

Nano has 20 IO - Analog0 to 5 are accessed as D14 to D19.
SPI to 8 daisy chained shift-out registers works, for 1 light per square.

Similarly, can use 8 daisy chained shift-in registers to sample the piece positions 10 times a second or something, for 1 sensor per square.

Where are you located? Add a country or something to your profile.

Draughts: Checkers - Wikipedia
Profile updated btw.

And can any of the shift registers in the link I mentioned work for the inputs? And the 74HC595 is okay for the outputs, right?

I can't open the evselectro link from here.

74HC595 okay for driving LEDs, limit current to 8-9mA per LED to avoid 70mA total current limit for the 74HC595.

Ok, we call that checkers here, I see why you only need 32 LEDS now for an 8x8 board.

Here's a screenshot to the link:

btw someone told me you can use decoders to get around the input dilemma too, is that true? And if so, is it a more feasible work-around than the shift registers?