Switch matrix guide

This commit is contained in:
cheyao 2025-02-09 14:30:25 +01:00
parent 58c3aa4443
commit e4e33692c9
No known key found for this signature in database
8 changed files with 34 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

View file

@ -12,11 +12,37 @@ Are you not satisfied with a simple PCB? Here you have more information on advan
<a name="matrix"/>
## Switch Matrix
[If you want, here is a detailed explenation of how key matrices works](https://pcbheaven.com/wikipages/How_Key_Matrices_Works/)
[If you want, here is a detailed explenation of how key matrices works.](https://pcbheaven.com/wikipages/How_Key_Matrices_Works/)
Now you aren't satisfied with the number of keys you have? With switch matrices you can have more switches on less pins! (Wow this is a good sales pitch, hire me adafruit :3)
First, open up your schematic and place the switches in a grid shape:
<img src="/docs/v2/keymatrixschematic.png" className="max-w-96" />
If you want a non-symetric shape for your keys, it's fine to delete any switch you don't want.
Now add diodes. Their schematic name is `D`. Place them at one end of the switch (any end, but it should be the same for all the switches), **pointing away from the switch**:
<img src="/docs/v2/keymatrixschematicdiode.png" className="max-w-96" />
Now, connect each row of diode heads together to form a row, and connect the each row to a GPIO pin. Do the same with the each column of switches (on the side without the diode) to form a column. Connect each column to a GPIO pin too.
<img src="/docs/v2/keymatrixschematicconnected.png" className="max-w-96" />
Now you do the same things assigning the footprints, but for diodes you will use Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal as the footprint.
<img src="/docs/v2/keymatrixschematicassign.png" className="max-w-96" />
Congrats! You got a working key matrix. Nothing really changed for the PCB routing part. Just as a side note, don't put the diodes directly on the switches (or they will collide in real life). I recommend putting them on the other side of the board (flip using F) and between the switches:
<img src="/docs/v2/keymatrixdiode.png" className="max-w-96" />
<a name="lcd"/>
## OLED
[Download this footprint library and unzip it](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fcheyao%2Fmacropad%2Ftree%2Fmain%2FPCB%2Fthird_party%2FKiCad-SSD1306-128x64-master)
[Download this footprint library and unzip it](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fcheyao%2Fmacropad%2Ftree%2Fmain%2FPCB%2Fthird_party%2FKiCad-SSD1306-128x64-master). Add it to kicad.
Be sure to not use the built in footprint! The correct footprint should be called 128x64OLED.
<a name="expander"/>
## IO expander

View file

@ -2,6 +2,7 @@
Here I will write out some tips and trics I learnt about in my designs. Feel free to add any of yours!
- Google is your best friend, search up anything u don't know. (And the cake is a lie :P)
- Spam vias everywhere! They are free.
- Try routing everything on one layers first, if you can't without making a big loop, move to the second layer. This keeps your board clean.
- Make multiple revisions! I rerouted my first macropad like 10 times while adding stuff.

View file

@ -22,13 +22,15 @@ This process is going to be broken into 3 parts, each with its own sub-parts:
- [kmk!](#kmk)
If you're unsure about anything, send a message in #hackpad! We have so many eager people to help.
If you're unsure about anything, send a message in #hackpad! We have so many eager people to help. (Please try searching your question in the search bar first.)
There's also [this](/resources) giant wall of resources to reference!
Here is also a guide on [advanced PCB components](/advancedPCB)
Here is also a guide on [advanced PCB components](/advancedPCB).
[Don't forget to find out some Tips'n Tricks here!](/tipsntricks)
Don't forget to find out some [Tips'n Tricks here!](/tipsntricks)
[Look up DRC errors here :D](/tipsntricks)
Lets start with: