The Protoneer CNC Shield has headers for two endstops on each axis, although they’re wired to the same Arduino input pin. I installed a pair of Makerbot-style endstops on the Y axis, plugged them in, triggered one, and … the Arduino crashed. Hard. As in, a complete loss of power and reboot.
Some fiddling around produced absolutely baffling symptoms, as I replaced each endstop board and their cables to no avail.
Perusing the schematic (the “full instructions” link is dead, of course) eventually revealed the problem:
Although there’s a pullup on the COM switch terminal, the switch’s NC terminal is connected to the +5 V supply, shorting across the both resistor and the LED+resistor. With two endstops in parallel, triggering one crowbars the other’s power supply to ground. I’m sure it made sense at the time, perhaps by ensuring no possible noise source could interfere with the pullup.
The solution is simple: disconnect the NC terminal from the power supply. As it turns out, the PCB layout routes +5 V on the bottom layer, up through the via around the NC switch terminal, thence to the LED and resistor, leaving only one choice:
Yup, amputate the NC terminal and be done with it.
After that, the pullup resistor lets the endstops cooperate like you’d expect: triggering either one lights up both LEDs.