Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Charlieplexing without diodes #1

Open
fanf2 opened this issue Jul 15, 2023 · 0 comments
Open

Charlieplexing without diodes #1

fanf2 opened this issue Jul 15, 2023 · 0 comments

Comments

@fanf2
Copy link

fanf2 commented Jul 15, 2023

Many thanks for publishing this! I was idly wondering about charlieplexing a keyboard, and I found this repo which explained why it is not (never?) used.

I have a few comments, one of which is a bug in your exposition.

a bug

In your diagram of a diodeless charlieplexed switch matrix, lines C and D are shown connected via switch 6. C and D can also be connected by switch 3.

I think this diodeless matrix cannot be decoded at all, because every pair of IO lines is connected by two switches and the controller has no way to tell them apart.

truth in advertising

There is a big hardware assumption in your top-line summary that markoplexing is a software extension: it requires analogue inputs, and not all microcontrollers are blessed with flexible enough inputs. (For instance, I have been playing with RP2040 devices recently, and they can’t use your trick.)

I think it would be helpful to readers to mention this requirement up front.

a fun idea

Another way to solve the ghosting problem is by controlling the IO voltage so it is less than twice the diode forward drop voltage. Then the second diode in a ghosting chain cannot pass current.

I don’t think this is very easy to do with normal digital IO pins and silicon diodes, but if you are using a 3v3 IO voltage, and you use blue LEDs instead of 1n4148, it might work. (Blue LEDs have a larger forward drop because of the materials they are made from.)

The disadvantage is it’s more expensive, and you have mandatory reactive bling.

anyway

Thanks again for publishing this neat idea, it saved me from a lot of brainwork!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant