Simple 9 key keypad using Cherry MX compatible switches.
Materials:
9x Any Cherry MX compatible switches (I used gateron yellows)
9x Keycaps, I just printed some (Thanks Joe Scotto for the design!)
9x Diodes (most should work, I'm using 1N4148) *
Hot glue
*The diodes are optional
You can use the diodes and wire the switches in a matrix, only using 6 pins of the micro controller
If you don't want to use the diodes, connect one side of each switch to ground and the other one to a pin of the micro controller, using 9 pins in total.
I'm using QMK to configure this; you can follow this guide on how to set up your environment and this one on adding a new keyboard to configure it. Keep in mind the Arduino uses the Caterina bootloader when it's time to flash the firmware.
Example for keyboard.json with the matrix
{
"manufacturer": "<Your name>",
"keyboard_name": "<Your name>",
"maintainer": "<Your name>",
"development_board": "promicro",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["D1", "D0", "D4"],
"rows": ["C6", "D7", "E6"]
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2}
]
}
}
}
Using pins 2, 3, 4, 5, 6 and 7, for Columns 1, 2 and 3 (left to right) and Rows 1, 2 and 3 (top to bottom) when looking from the top with the USB on the back.
The author marked this model as their own original creation.