Controlling pull-up pins from external circuit

arduinomicrocontrollernpnpulluptransistors

I have a circuit with an Arduino controlling a 2-channel, normal-off, opto-isolated relay board, 5V input signals, turning relay ON when the Arduino digital pin is set LOW. The relays are controlled independently by 2 digital output pins of the Arduino.

One relay controls a 12VDC magnetic lock, the other a 220VAC stroboscope.

Into this equation, I want to add an Adafruit Audio FX Sound Board (Headphone Out jack version). Each of the 2 Arduino pins should trigger playing a sound on the FX board in addition to activating the relays. The FX board works like this: connect one of the 11 output pins to GND (I will be using only 2 of them) to trigger the sound associated with that pin. So the board is supposed to be used by attaching momentary push-buttons to those output pins. Adafruit says this:

When the # pin is connected to GND for more than about 50 milliseconds
it will trigger! There is a 100K pull up resistor on each one, so you
do not need any extra resistors or pullups.

Ok, so they have 100K pull-ups. I don't see them in the schematics or the fab print of the FX board, so they must be using the internal pull-ups of the microcontroller.

This is a basic schematic of how I assume one of those pullups look like:

schematic

simulate this circuit – Schematic created using CircuitLab

I suppose I could use another 2-channel relay board, but that would be too much for this purpose.

I suspect the more elegant solution would be to use a NPN transistor, as seen here. Is this the best option? Should the GND of the Arduino share the GND of the FX board? Could 5V on the base control 5V at the collector? What values shoud the 2 resistors for the NPN be?

Best Answer

Pullups on input pins like this exist as a convenience - for instance, so they can be connected to buttons as you suggest in your question - but they don't prevent you from being able to drive them high or low just like any other input pin. As long as your logic levels are the same, you can connect your Arduino's output pin to the input pin on the sound trigger board, and drive it as a regular GPIO pin just fine.