Deceptively small macropad (could fit in your palm)
Time Machine is a KMK-powered, 6-key + Rotary Encoder, OLED display, Macropad with underglow lighting.
Features
* Constants at the top define which matrix key does what—easy to tweak later.
* A sleep toggle (OLED off, inputs ignored until woken).
* EC11 rotary encoder (GP8=A, GP9=B, GP10=SW)
* Short‑press once → enter **Timer‑Setup** mode
* Turn knob → cycle through preset durations
(1, 5, 10, 15, 20, 30, 40 minutes)
* Short‑press again → start the countdown
* 0.91″ SSD1306 OLED (I²C on GP6=SDA, GP7=SCL)
* Shows selected duration or live progress bar + remaining time
* 3× SK6812 LEDs daisy‑chained on GP5 (optional flash on timer end)
* Stores a persistent points counter in /points.txt and flashes the LEDs:
* +1 → yellow flash
* +2 → purple for 1 minute
* negative actions → blue flash
* Two under‑glow LEDs stay dim green whenever no other colour is flashing.
Requires:
- CircuitPython ≥ 9.0 or RP2040‑UF2 w/ displayio support
adafruit_displayio_ssd1306andadafruit_display_textlibraries in /lib- KMK (copy kmk/ into CIRCUITPY drive)
Save this file as code.py or main.py on the XIAO‑RP2040.
This was my first time doing a hardware project! Thanks to all the friends that I bugged constantly :P
I learned how to use a matrix to get all my features onto the XIAO microcontroller perfectly
The schematic and the PCB were made in KiCad
First time CADing too! It ain't much, but it's honest work.
Case was made using Autodesk Fusion
Time Machine was made with custom-coded firmware written with the KMK library in Python
*6 cans of redbull not included
- 1x XIAO RP2040
- 1x EC11E Rotary Encoder (with switch)
- 1x Rotary Encoder Knob
- 1x 0.91" OLED Display
- 6x Cherry MX Switches
- 6x Blank DSA Keycaps
- 6x Diode (THT)
- 3x SK6812 Mini LEDs
- 1x 330 Ohm Resistor
- 1x case_top.stl
- 1x case_plt.stl
- 1x case_btm.stl
- 3x M3x16 screw
- 4x 10mm Rubber Feet
- 3x M3x5x4mm heatset inserts
