I'm working on a chess board project using Arduino, and I came across a post that discusses using a decade counter (74HC4017) to manage the columns while reading the rows with a PISO shift register (74HC165). However, I noticed that none of the discussions mentioned switch debouncing. Is it left out for simplicity's sake, or is it not necessary? If I decide to implement debouncing, should I create a separate circuit for each individual switch, or would one circuit per row suffice? Also, just to clarify—I'm using magnets on chess pieces to activate reed switches, so it's not the same as a keyboard setup (thanks autocorrect for changing debounce to denounce)!
2 Answers
You could opt for software debouncing instead, especially if you're worried about managing multiple circuits. But keep in mind that you might run into ghosting issues depending on your setup. Just read the matrix bytes after ensuring a short delay to stabilize the readings!
Debouncing is actually really important if your polling rate is high (like less than 10ms). If you can afford to have a slower scan rate, you might not need it. Also, just a heads up—the low pass filter method is typically not effective for matrix arrays, so I'd be cautious there!

As long as your polling isn't too frequent, it should work fine! Just make sure to allow enough time between switches being triggered.