I searched this topic on Pinside and found out that there are several Arduino shields already developed for this purpose "out there". As I really want to understand/learn the electronics involved in this I don't want to go the easy way of just buying a finished solution, what's the fun in that I also found lots of threads here discussing similar problems but none of those were showing any actual circuit diagrams or such what I could see; therefore this thread.
I work with programming as a profession so I'm confident that I can fix the software part (already done an Arduino addressable LED strip mod for example). I do need some pointers on the hardware side though as I'm rather new there.
Currently I just want to read a few specific switches (4-5 or so) from the switch matrix of a WPC-S game (and further on for the other type of WPC games too but I guess it will be the same approach). I really don't need to read the whole 8x8 switch matrix.
So far my general idea is to jack into the row and column connectors directly on the CPU board for the specific switches I want to monitor, feed each switch specific colum+row to an AND gate who in turn will be input to an optocoupler who in turn connects to an Arduino digital input pin. The AND gate would only output signal when both row+column is high, meaning the switch is activated (if It works as I think it does). I want the optocoupler in series for electric isolation just in case.
I also plan on feeding the Arduino (and stuff it will control like lights and display) with its own power supply. I will probably need some resistors in there too somewhere lol. My problem now is going from this "overview idea" to an actual circuit diagram and I really do need some help here as I don't want to blow something up while trying/tinkering.
I kind of understand the concept of pull-up and pull-down resistors but unsure that I need to use in this case. Also, Is there any use of sharing a common ground between the Arduino and the pin (but not the +) or should they be totally separate?
Any help/pointers on this will be highly appreciated.
Thanks