Shift register between ground and open circuit

I'm not 100% sure about the title but honestly couldnt think of the right way to express what i want to ask in a short phrase.

Iv'e built a PSP consolizer using an Arduino nano 33 IOT here (GitHub - ste2425/PSP-Consolizer: An Arduino based addon board to give Bluetooth controller support to a PSP-2000)

It works by triggering button presses for each PSP button, via bluetooth controllers. However i have run out of IO.

Iv'e seen the natural next step is to employ shift registers, however from my research they toggle between high or low. Which for my use case that will damage my PSP, if i send the line high.

The PSP registers a button press if the pin goes low. Otherwise its an open circuit.

The way i trigger a button press is to mark the pin as an output and send it low. To release the button i mark the pin as an input.

So i guess my question is is it possible to achieve the same behaviour with a shift register?

Like this?
https://www.nexperia.com/products/analog-logic-ics/i-o-expansion-logic/shift-registers/NPIC6C595D.html
or this
https://pdf.dzsc.com/TPI/TPIC6B596.pdf

Such digital outputs are commonly called, "open collector" or "open drain".

Thanks, ill do some research on those types of shift registers, however struggling to find novice friendly resources. I'm a software guy, not hardware. Everything ive found is very dry datasheets which has a very high entry point for someone at my skill level.

Well, really that is because the devices themselves are not novice friendly. But 595 shift register wiring and code is not hard to find. There are oodles of online tutorials and guides on how to do that.

The TPIC devices have the same pin out as the 74HC595 version, so the code is the same, AFAIK. I didn't check but I think so.

Connecting the outputs, it sounded like you already know how to do that.

You have specified it backwards. It would be

press: output mode, output low
release: input mode

1 Like

You're right thanks, corrected.

On a slight tangent ive seen devices marketed as IO extenders, the SX1509 as an example (not too sure if linking to places such as SparkFun is frowned upon, but a google search brings it up).

I think this may be more suitable. Seems its more beginner friendly and allows for more io out the box. More expensive but this is just for fun so not too concerned there.

I think this is the route i will go gown.

Yes, an I2C port expander is much easier to use in the long run. However, it does not feature open drain outputs.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.