You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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!
The text was updated successfully, but these errors were encountered:
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!
The text was updated successfully, but these errors were encountered: