Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions hackpads/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
Github README

# Stoopid_Pad

<b>Running from the 10th to the 25th of November, You ship AI software, We ship AI hardware.</b>

<br>



## BOM:

- Seeed XIAO RP2040

- 8x Blank DSA keycaps

- 8x Cherry MX switches

- 1x EC11 Encoder

- 1x PCB - black

- M3x16mm screws

- 3D printed parts
- 4x 4.7kΩ. resistors
- 1x SSD1306 OLED Display


## Stoopid_Pad:

I had a lot of fun making the macropad, this was my first time making a PCB, though I found it more difficult to finish off the case because I have zero experience CADding and my potato laptop did not enjoy my attempts to import the pcb with keys and everything into OnShape. I was dreading the PCB part but it was surprisingly fun :D



## Images!

Finished Macropad:

<img alt="finished hackpad" src="https://hc-cdn.hel1.your-objectstorage.com/s/v3/34ac41ba874e7db8696b003478140c16b5a01c30_case.png" width=400>

Schematic:

<img alt="schematic" src="https://hc-cdn.hel1.your-objectstorage.com/s/v3/d53e3d56873dfb47e80dcb9cf9a4a0f55ffbc020_schematic.png" width=400>

PCB!:

<img alt="PCB front" src="https://hc-cdn.hel1.your-objectstorage.com/s/v3/c032ce6f414d45428fd9afcf8ee7e3b0e2b0a2c3_pcb.png" width=400>

Another Macropad photo because why not:

<img alt="PCB back" src="https://hc-cdn.hel1.your-objectstorage.com/s/v3/26b58fc37b47ed6ce0d8eade9a856c8dc9072ca2_pad.png" width=400>


Binary file added hackpads/Stoopid_pad/Assets/case.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added hackpads/Stoopid_pad/Assets/pad.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added hackpads/Stoopid_pad/Assets/pcb.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added hackpads/Stoopid_pad/Assets/schematic.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
417,180 changes: 417,180 additions & 0 deletions hackpads/Stoopid_pad/CAD/Assembly 1.step

Large diffs are not rendered by default.

61 changes: 61 additions & 0 deletions hackpads/Stoopid_pad/Firmware/KMK/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
from kmk.keys import KC
from kmk.modules.macros import Press, Release, Tap, Macros
from kmk.kmk_keyboard import KMKKeyboard
from kmk.scanners.keypad import KeysScanner
from kmk.modules.encoder import EncoderHandler
from kmk.extensions.mcp23017 import MCP23017
from kmk.extensions.ssd1306_oled import SSD1306_OLED
import board

keyboard = KMKKeyboard()

macros = Macros()
keyboard.modules.append(macros)

PINS = [board.D3, board.D4, board.D2, board.D1, board.D5, board.D6]

io_expander = MCP23017()
io_expander.pins = (0, 1)
keyboard.extensions.append(io_expander)

keyboard.matrix = KeysScanner(
pins=PINS,
value_when_pressed=False,
)

# Rotary encoder setup
encoder_handler = EncoderHandler()
keyboard.modules.append(encoder_handler)

def encoder_clockwise():
return KC.VOLU

def encoder_counterclockwise():
return KC.VOLD

encoder_handler.pins = ((board.D7, board.D8),)
encoder_handler.map = [(encoder_clockwise, encoder_counterclockwise)]

oled = SSD1306_OLED(i2c_bus=board.I2C(), width=128, height=32, rotation=0)
keyboard.extensions.append(oled)

def update_oled():
oled.clear()
oled.text("Stupid Stuff", 0, 0)
oled.text("Goes Here :3", 0, 10)

oled.show()

keyboard.before_matrix_scan = update_oled

keyboard.keymap = [
[
KC.A, KC.B,
KC.E, KC.SEMICOLON, KC.MINUS
KC.G, KC.EQUAL, KC.P
]
]

# Start KMK!
if __name__ == '__main__':
keyboard.go()
Loading