Skip to content

Commit 306f6fd

Browse files
authored
Merge pull request #547 from redScorpes/main
Added my hackpad "redScorpe's numpad"
2 parents a483798 + d5b4a4b commit 306f6fd

17 files changed

+220545
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# redScorpe's Numpad
2+
3+
This is my custom version of a simple numpad with a Rotary Encoder and a 9.1" OLED-Display. Since I have recently switched to a TKL-Keyboard to easier switch between mouse and keyboard I wondered how cool it would be to have an external numpad which also has a rotary which my new keyboard is missing.
4+
5+
# Challenges
6+
I was genuinely confused about a lot things regarding the whole process of building my first hackpad since all of this was new to me. However making my own symbol in KiCad for the OLED directly at the start of this journey was honestly the most challenging part for me.
7+
8+
## CAD Model
9+
| **Model** | **Render** |
10+
|----------------------------------------------------------------------------|-------------------------------------------------------------------------|
11+
| ![](https://cdn.hackclubber.dev/slackcdn/a9e1c880677854b64dbcdd8c9dc36e76.png) | ![](https://cdn.hack.pet/slackcdn/678d118c57094d6aae49122bccd28d9b.PNG) |
12+
13+
## PCB
14+
| **Schematic** | **PCB** |
15+
|---------------|---------|
16+
|![](https://cdn.hack.pet/slackcdn/a3ad7a5903431038cb79955e694afb3e.png)|![](https://cdn.hack.pet/slackcdn/e540ac6891c7700b64d7c771695121bb.png)|
17+
18+
## Third-Party KiCad Libraries
19+
- https://github.com/kiswitch/kiswitch/tree/main/library/footprints/Switch_Keyboard_Cherry_MX.pretty
20+
- https://github.com/Seeed-Studio/OPL_Kicad_Library
21+
22+
23+
## BOM
24+
- 1 Seeed Studio XIAO RP2040
25+
- 12x MX-Style Switches
26+
- 12x DSA Keycaps
27+
- 12x 1N4148 Diodes
28+
- 1x 0.91" 128x32 OLED Display
29+
- 1x EC11 Rotary Encoder
30+
- 4x M3x16mm Screws
31+
- 4x M3x5mx4mm Heatset Inserts
32+
- 1x 3d-Printed Case (Top, Middle and Bottom Parts)
33+
- 1x [3d-Printed Knob](https:/ /makerworld.com/en/models/628840#profileId-593261)
351 KB
Loading
373 KB
Loading
179 KB
Loading
160 KB
Loading

hackpads/redScorpe's Numpad/cad/redScorpe's_numpad.step

Lines changed: 176270 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import board
2+
import digitalio
3+
import rotaryio
4+
import time
5+
from kmk.kmk_keyboard import KMKKeyboard
6+
from kmk.scanners.keypad import MatrixScanner
7+
from kmk.keys import KC
8+
from kmk.modules.encoder import EncoderHandler
9+
from kmk.extensions.OLED_Display import Oled,OledDisplayMode
10+
11+
keyboard = KMKKeyboard()
12+
13+
keyboard.matrix = MatrixScanner(
14+
cols=[board.GP1, board.GP2, board.GP3],
15+
rows=[board.GP26, board.GP27, board.GP28, board.GP29],
16+
diodes=True
17+
)
18+
19+
keyboard.keymap = [
20+
[KC.N7, KC.N8, KC.N9,
21+
KC.N4, KC.N5, KC.N6,
22+
KC.N1, KC.N2, KC.N3,
23+
KC.N0, KC.DOT, KC.ENT]
24+
]
25+
26+
encoder = EncoderHandler()
27+
encoder.pins = (board.GP0, board.GP4)
28+
encoder.on_clockwise = KC.VOLU
29+
encoder.on_counterclockwise = KC.VOLD
30+
keyboard.modules.append(encoder)
31+
32+
oled = Oled(oled_type=OledDisplayMode.IMAGE, flip=False)
33+
keyboard.extensions.append(oled)
34+
35+
def render_animation(oled):
36+
animation = [
37+
0b00011000, 0b00111100, 0b01111110, 0b11111111,
38+
0b01111110, 0b00111100, 0b00011000, 0b00000000,
39+
]
40+
oled.image(animation)
41+
42+
oled.display_function = render_animation
43+
44+
if __name__ == '__main__':
45+
keyboard.go()

0 commit comments

Comments
 (0)