Merge branch 'hackclub:main' into main

This commit is contained in:
End 2025-12-04 08:44:22 -07:00 committed by GitHub
commit 996a49c47a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 414348 additions and 1 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
0

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 44,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "projekt2.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View file

@ -0,0 +1,584 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "projekt2.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "../production/",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"6adde25d-12d0-4090-a498-841c1bc2c26f",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,31 @@
# TYRANNOJ PROJEKT2
This is my first PCB, just want to play around with it. My firmware is not fully optimized due to a lack of time, I will optimize it when the parts get shipped. My libraries in the pcb part are zipped, so I could upload everything, you have to unzip them or else the pcb won't work
![picture of project](https://i.ibb.co/ymP9GG8w/Screenshot-16.png)
### Inspiration
Somebody in school told me about it
### Challenges
Did it for the first time, was pretty difficult
### Specifications
BOM:\
• 4x Cherry MX Switches
• 2x SK6812 MINI Leds
• 1x XIAO RP2040
• 2x: RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles
• 4x Blank DSA Keycaps
• 4x M3x16 Bolt
• 4x M3 Heatset
Others: \
• KMK Firmware <br>
• Top.stl \
• Bottom.stl
Schematic | PCB | Case
:-------------------------:|:-------------------------:|:-------------------------:|
![schematic](https://i.ibb.co/9mPV2y5d/Screenshot-20.png) | ![PCB](https://i.ibb.co/PvjW7M1V/Screenshot-18.png) | ![case](https://i.ibb.co/ymJCdPJw/Screenshot-19.png)

View file

@ -0,0 +1,11 @@
import board
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
from kmk.scanners import DiodeOrientation
class KMKKeyboard(_KMKKeyboard):
keyboard.col_pins = (board.GP5, board.GP6)
keyboard.row_pins = (board.GP7, board.GP8)
keyboard.diode_orientation = DiodeOrientation.COL2ROW

View file

@ -0,0 +1,40 @@
import board
import digitalio
from kmk import KMKKeyboard
from kmk.keys import KC
from kmk.modules import Layer
keyboard = KMKKeyboard()
switch1 = digitalio.DigitalInOut(board.D5)
switch1.switch_to_input(pull=digitalio.Pull.UP)
switch2 = digitalio.DigitalInOut(board.D6)
switch2.switch_to_input(pull=digitalio.Pull.UP)
switch3 = digitalio.DigitalInOut(board.D7)
switch3.switch_to_input(pull=digitalio.Pull.UP)
switch4 = digitalio.DigitalInOut(board.D8)
switch4.switch_to_input(pull=digitalio.Pull.UP)
keyboard.pins = {
board.D5: KC.A, # Switch 1 mapped to KC.A
board.D6: KC.B, # Switch 2 mapped to KC.B
board.D7: KC.C, # Switch 3 mapped to KC.C
board.D8: KC.D, # Switch 4 mapped to KC.D
}
layer1 = Layer([KC.LSFT, KC.LCTL, KC.LALT])
keyboard.modules.append(layer1)
if __name__ == "__main__":
while True:
keyboard.poll()

View file

@ -0,0 +1 @@
Firmware runs on KMK!

View file

@ -0,0 +1,11 @@
import board
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
from kmk.scanners import DiodeOrientation
class KMKKeyboard(_KMKKeyboard):
keyboard.col_pins = (board.GP5, board.GP6)
keyboard.row_pins = (board.GP7, board.GP8)
keyboard.diode_orientation = DiodeOrientation.COL2ROW

View file

@ -0,0 +1,40 @@
import board
import digitalio
from kmk import KMKKeyboard
from kmk.keys import KC
from kmk.modules import Layer
keyboard = KMKKeyboard()
switch1 = digitalio.DigitalInOut(board.D5)
switch1.switch_to_input(pull=digitalio.Pull.UP)
switch2 = digitalio.DigitalInOut(board.D6)
switch2.switch_to_input(pull=digitalio.Pull.UP)
switch3 = digitalio.DigitalInOut(board.D7)
switch3.switch_to_input(pull=digitalio.Pull.UP)
switch4 = digitalio.DigitalInOut(board.D8)
switch4.switch_to_input(pull=digitalio.Pull.UP)
keyboard.pins = {
board.D5: KC.A, # Switch 1 mapped to KC.A
board.D6: KC.B, # Switch 2 mapped to KC.B
board.D7: KC.C, # Switch 3 mapped to KC.C
board.D8: KC.D, # Switch 4 mapped to KC.D
}
layer1 = Layer([KC.LSFT, KC.LCTL, KC.LALT])
keyboard.modules.append(layer1)
if __name__ == "__main__":
while True:
keyboard.poll()

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,47 @@
# Firepad
## Firepup's macropad
Primarily intended as a general-use hackpad, I intend to use most of the extra F-keys for stream keybinds, although I've given myself more of those then I needed.
### Pictures
#### Above
![Above View](firepad-assets/firepad-above.png)
#### Diagonal
![Diagonal View](firepad-assets/firepad-diagonal.png)
#### Below
![Below View](firepad-assets/firepad-below.png)
#### PCB
![PCB View](firepad-assets/firepad-pcb.png)
#### 3D PCB
![3D PCB View](firepad-assets/firepad-pcb-3D.png)
#### Schematic
![Schematic View](firepad-assets/firepad-schematic.png)
### Frimware
The top three buttons (from left to right) are:
- Skip Backward
- Pause/Play
- Skip Forward
The next 5 buttons are F13-F17, the next five F18-F22, and the last two are F23 and F24.
The rotary encoder is volume control, and can be clicked to mute.
Clicking any button will slightly adjust the color of the power LED, and the mute key will switch on/off the mute LED, although it might be inverted, since I don't think I can detect host mute status.
### BOM
- 1x Seeed XIAO RP2040
- 15x Cherry MX Switches
- 1x EC11 Rotary encoder
- 15x Blank DSA keycaps (Red, preferably)
- 2x SK6812 MINI-E LEDs
- 4x M3x16mm screws
- 4x M3 hex nuts
- 4x M3x5mx4mm heatset inserts
- 1x MCP23017 io expander chip
- 1x Case (2 printed parts)
### TODO:
- Double check BOM & try to find prices

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,290 @@
(footprint "LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm_3D"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "3.5mm x 3.5mm PLCC4 Addressable RGB LED NeoPixel, https://cdn-shop.adafruit.com/product-files/2686/SK6812MINI_REV.01-1-2.pdf")
(tags "LED RGB NeoPixel Mini PLCC-4 3535")
(property "Reference" "REF**"
(at 0 -2.75 0)
(layer "F.SilkS")
(uuid "5a11e3a0-df26-4e1e-8b8f-efb3ead5086b")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm_3D"
(at 0 3.25 0)
(layer "F.Fab")
(uuid "e06e35b3-e0aa-45c8-9c4c-d6ce7c824750")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "d59d046c-c730-4aa6-a088-ed1f36e076fb")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "d1d514e2-b75a-404f-8c89-2ef6fd656f2a")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "c9b5b815-b514-4091-86c6-0a3e60819067")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -2.8 -2)
(end -2.8 2)
(stroke
(width 0.12)
(type default)
)
(layer "F.SilkS")
(uuid "43adbbe1-6a98-41f5-898f-b826717c1132")
)
(fp_line
(start -2.8 -2)
(end 2.8 -2)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "ac05fd60-c7fe-4ebc-afdb-bb03a9433555")
)
(fp_line
(start -2.8 2)
(end 2.2 2)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "8b9d6599-795e-4cf4-ba1d-7057604a3bdf")
)
(fp_line
(start 2.8 1.4)
(end 2.2 2)
(stroke
(width 0.12)
(type default)
)
(layer "F.SilkS")
(uuid "512f89f0-756e-4428-87af-703f4214a630")
)
(fp_line
(start 2.8 1.4)
(end 2.8 -2)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "a7837fa2-fcb5-49a9-a046-9741da620195")
)
(fp_line
(start -2.8 -2)
(end -2.8 2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "72992e62-bce9-4f6e-9406-5d626166f6e0")
)
(fp_line
(start -2.8 2)
(end 2.8 2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "3407ab69-504c-4f7b-94c8-4b7d0f807fa5")
)
(fp_line
(start 2.8 -2)
(end -2.8 -2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "618d036d-5236-45e6-9dcf-8d85a1b73eed")
)
(fp_line
(start 2.8 2)
(end 2.8 -2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "b6c113c4-050a-4055-bd0b-88b68607e013")
)
(fp_line
(start -1.75 -1.75)
(end -1.75 1.75)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "4bf15588-8141-4eed-9b3c-61f1a0af2e71")
)
(fp_line
(start -1.75 1.75)
(end 1.75 1.75)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "edf08d44-29ab-41d0-b891-6908b9c35b30")
)
(fp_line
(start 1.75 -1.75)
(end -1.75 -1.75)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "d059dc71-e93e-4c09-98bd-8587f16853ad")
)
(fp_line
(start 1.75 0.75)
(end 0.75 1.75)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "f77e6c0b-1ee4-4a22-9ff5-561d1f4206d5")
)
(fp_line
(start 1.75 1.75)
(end 1.75 -1.75)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "697d65c4-63d2-4b60-b801-a3800fcf954c")
)
(fp_circle
(center 0 0)
(end 0 -1.5)
(stroke
(width 0.1)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "974be58e-74de-4e07-947f-98852335e05c")
)
(fp_text user "1"
(at -3.2 -0.875 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "8e37004e-c9dd-4a9a-adc3-b571b53d17d6")
(effects
(font
(size 0.8 0.8)
(thickness 0.15)
)
)
)
(fp_text user "${REFERENCE}"
(at 0 0 0)
(layer "F.Fab")
(uuid "44968780-5c6b-43a0-9bc4-76ab950d885b")
(effects
(font
(size 0.5 0.5)
(thickness 0.1)
)
)
)
(pad "1" smd rect
(at -1.75 -0.875)
(size 1.6 0.85)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "3aa8cc5d-54e5-4038-aae5-88b9a0043bb9")
)
(pad "2" smd rect
(at -1.75 0.875)
(size 1.6 0.85)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "9a5b3312-e555-4b96-8d26-1be1020a0691")
)
(pad "3" smd rect
(at 1.75 0.875)
(size 1.6 0.85)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "80a855b4-41b1-40fc-89fa-5d46a84d59c1")
)
(pad "4" smd rect
(at 1.75 -0.875)
(size 1.6 0.85)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "bf51f97d-70b8-403d-b9e7-1c48bc155b9d")
)
(model "${KICAD8_3DMODEL_DIR}/LED_SMD.3dshapes/LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${KIPRJMOD}/3D Models.pretty/LED_SK6812MINI-E.step"
(offset
(xyz 0 5 1.9)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

View file

@ -0,0 +1,421 @@
(footprint "RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles_3D"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Alps rotary encoder, EC12E... with switch, vertical shaft, mounting holes with circular drills, http://www.alps.com/prod/info/E/HTML/Encoder/Incremental/EC11/EC11E15204A3.html")
(tags "rotary encoder")
(property "Reference" "REF**"
(at 2.8 -4.7 0)
(layer "F.SilkS")
(uuid "baa1d284-6b5f-403b-b177-265474084583")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles_3D"
(at 7.5 10.4 0)
(layer "F.Fab")
(uuid "48d2aa30-2923-4809-ba5f-6dbdfff3be81")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "c0f68f31-4dcd-44db-84cc-ac522e14b350")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "2e389fb8-4dc2-4d7c-987d-f04a96a86c92")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "dca88b7f-bd19-4089-b8c3-c990b2b0f10e")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_line
(start -0.3 -1.6)
(end 0.3 -1.6)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "9eb6b4fc-8d68-4b13-a880-bd406634e0e1")
)
(fp_line
(start 0 -1.3)
(end -0.3 -1.6)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "93d3b42b-d24b-4361-bc02-5d8912e88592")
)
(fp_line
(start 0.3 -1.6)
(end 0 -1.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "fdfdbb01-eabc-4f28-84fa-4784a00ca85f")
)
(fp_line
(start 1.4 -3.4)
(end 1.4 8.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "1a711b87-5229-4fcf-88a4-7949680e76d1")
)
(fp_line
(start 5.5 -3.4)
(end 1.4 -3.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "672fb60f-b7d4-4fb8-9325-be1347309988")
)
(fp_line
(start 5.5 8.4)
(end 1.4 8.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "493ffe91-f229-4e1f-8497-3e4f4a2a94cc")
)
(fp_line
(start 7 2.5)
(end 8 2.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "a2a5f371-6d76-4a9e-9f8b-b38371cbfa19")
)
(fp_line
(start 7.5 2)
(end 7.5 3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "7b8c18df-bde0-4c1c-b7e1-d9b35e2e82b1")
)
(fp_line
(start 9.5 -3.4)
(end 13.6 -3.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "365d1710-550a-4785-bfc3-083188fc4c74")
)
(fp_line
(start 13.6 -3.4)
(end 13.6 -1)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2613db36-7f25-4447-b2b7-4d71c3cbd66d")
)
(fp_line
(start 13.6 1.2)
(end 13.6 3.8)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "6814a040-09b2-4eb1-a99e-97e12bd5564e")
)
(fp_line
(start 13.6 6)
(end 13.6 8.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "a93380be-0e03-4a12-b609-50acd2f37a1b")
)
(fp_line
(start 13.6 8.4)
(end 9.5 8.4)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "f587fdbf-0444-4b0d-9be2-b8b775e67c74")
)
(fp_circle
(center 7.5 2.5)
(end 10.5 2.5)
(stroke
(width 0.12)
(type solid)
)
(fill none)
(layer "F.SilkS")
(uuid "8671f76c-b602-4c86-b9b3-1e5019e676d4")
)
(fp_line
(start -1.5 -5.2)
(end -1.5 10.2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "2218b66b-db06-4a48-8afe-fe5f0d33aee4")
)
(fp_line
(start -1.5 -5.2)
(end 16 -5.2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "346d6143-d699-4521-8d79-6bb619065bd3")
)
(fp_line
(start 16 10.2)
(end -1.5 10.2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "30b62b8a-cce6-4fd1-a067-793e7352ea8c")
)
(fp_line
(start 16 10.2)
(end 16 -5.2)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "ba485721-8b80-46ac-a650-7b4699a8234b")
)
(fp_line
(start 1.5 -2.2)
(end 2.5 -3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "8f68c9ca-d2a7-4228-af7d-64cd9f6d8f1e")
)
(fp_line
(start 1.5 8.3)
(end 1.5 -2.2)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "dcccac69-4436-4f62-bc5e-baec9813528b")
)
(fp_line
(start 2.5 -3.3)
(end 13.5 -3.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "2dfe9000-710b-4123-89c2-15fcc6c70c5e")
)
(fp_line
(start 4.5 2.5)
(end 10.5 2.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "7b32c14e-5bd1-4af9-93ca-0c28982ca665")
)
(fp_line
(start 7.5 -0.5)
(end 7.5 5.5)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "a6fe3eec-2c57-4e84-a57c-86ee58e61efd")
)
(fp_line
(start 13.5 -3.3)
(end 13.5 8.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "f083d729-1b2f-4333-a9cc-b99db4b4e111")
)
(fp_line
(start 13.5 8.3)
(end 1.5 8.3)
(stroke
(width 0.12)
(type solid)
)
(layer "F.Fab")
(uuid "af253962-eccf-4204-bb87-f9488a2ead8c")
)
(fp_circle
(center 7.5 2.5)
(end 10.5 2.5)
(stroke
(width 0.12)
(type solid)
)
(fill none)
(layer "F.Fab")
(uuid "480adee2-fa1f-4a13-84e2-ea885e17c110")
)
(fp_text user "${REFERENCE}"
(at 11.1 6.3 0)
(layer "F.Fab")
(uuid "ee3f334b-7527-4984-95db-486607734816")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "A" thru_hole rect
(at 0 0)
(size 2 2)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "93eaa7dd-0df9-4e22-9928-41f307dbe876")
)
(pad "B" thru_hole circle
(at 0 5)
(size 2 2)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "c6492c71-04ec-40a3-8904-e62595e5febd")
)
(pad "C" thru_hole circle
(at 0 2.5)
(size 2 2)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "28e5ab48-ddfb-4cca-a785-9cdfa4f825d3")
)
(pad "MP" thru_hole circle
(at 7.5 -3.1)
(size 3.2 3.2)
(drill 2.6)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "93160c58-3a58-4fe6-9e40-9d680e5cd364")
)
(pad "MP" thru_hole circle
(at 7.5 8.1)
(size 3.2 3.2)
(drill 2.6)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "bbf18cbe-050e-46f2-8039-d2e88634debf")
)
(pad "S1" thru_hole circle
(at 14.5 5)
(size 2 2)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "44ccd7f4-393c-4d00-b58a-41eb5033dd98")
)
(pad "S2" thru_hole circle
(at 14.5 0)
(size 2 2)
(drill 1)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "87f8f3ac-e784-4ffe-97a3-d8efbcca496c")
)
(model "${KICAD8_3DMODEL_DIR}/Rotary_Encoder.3dshapes/RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${KIPRJMOD}/3D Models.pretty/EC11_Rotary_Encoder_Switched.step"
(offset
(xyz 7.5 -2.5 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 90)
)
)
)

View file

@ -0,0 +1,300 @@
(footprint "SW_Cherry_MX_1.00u_PCB_3D"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(descr "Cherry MX keyswitch, 1.00u, PCB mount, http://cherryamericas.com/wp-content/uploads/2014/12/mx_cat.pdf")
(tags "Cherry MX keyswitch 1.00u PCB")
(property "Reference" "REF**"
(at -2.54 -2.794 0)
(layer "F.SilkS")
(uuid "c03327f2-012e-4fbf-80a8-a7d4b49f6df2")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Value" "SW_Cherry_MX_1.00u_PCB_3D"
(at -2.54 12.954 0)
(layer "F.Fab")
(uuid "729da0de-a38f-4970-a9aa-b4dc70f92f16")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "acaa596e-914d-4cd8-ab3a-52e2a0d3f270")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "0037b9f5-583a-41f5-9b90-1b725631a7a1")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "482871a4-3f1f-46ca-bcff-19c31bbdd9f3")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_line
(start -9.525 -1.905)
(end 4.445 -1.905)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "f2eeb289-74f8-46da-801f-0aafb6af9995")
)
(fp_line
(start -9.525 12.065)
(end -9.525 -1.905)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "4f02a351-9568-48f2-b04f-076667160b2f")
)
(fp_line
(start 4.445 -1.905)
(end 4.445 12.065)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "2251a3c2-fb48-4ef6-9776-e36c07a3aa92")
)
(fp_line
(start 4.445 12.065)
(end -9.525 12.065)
(stroke
(width 0.12)
(type solid)
)
(layer "F.SilkS")
(uuid "b287663f-61be-4819-9523-1331a964301e")
)
(fp_line
(start -12.065 -4.445)
(end 6.985 -4.445)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "e73067c5-0bf4-4f44-be33-c28f7b06adae")
)
(fp_line
(start -12.065 14.605)
(end -12.065 -4.445)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "17a37dc2-1fc7-4198-bc2d-40147f9021f4")
)
(fp_line
(start 6.985 -4.445)
(end 6.985 14.605)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "707f604a-7f3f-405f-8b89-2e17dbf94ec1")
)
(fp_line
(start 6.985 14.605)
(end -12.065 14.605)
(stroke
(width 0.15)
(type solid)
)
(layer "Dwgs.User")
(uuid "68ba3686-54f3-42b1-847b-d7576a207bac")
)
(fp_line
(start -9.14 -1.52)
(end 4.06 -1.52)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "3a139f5a-3d7f-49bd-b57b-3b3b63bd6f5a")
)
(fp_line
(start -9.14 11.68)
(end -9.14 -1.52)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "9d9006b1-c0da-4488-b6c4-3bf750600acd")
)
(fp_line
(start 4.06 -1.52)
(end 4.06 11.68)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "12a34f16-8b02-4a16-8e95-de8109927f8a")
)
(fp_line
(start 4.06 11.68)
(end -9.14 11.68)
(stroke
(width 0.05)
(type solid)
)
(layer "F.CrtYd")
(uuid "cb893612-c825-49d3-b7ba-e7e76ca792b9")
)
(fp_line
(start -8.89 -1.27)
(end 3.81 -1.27)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "101f121f-d715-41de-b65e-0eb643435073")
)
(fp_line
(start -8.89 11.43)
(end -8.89 -1.27)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "ef533fc2-b06e-4fb0-bad6-5831fe8240f6")
)
(fp_line
(start 3.81 -1.27)
(end 3.81 11.43)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "31ba89c8-dd03-4cdd-9ba7-3f7d0aded6a1")
)
(fp_line
(start 3.81 11.43)
(end -8.89 11.43)
(stroke
(width 0.1)
(type solid)
)
(layer "F.Fab")
(uuid "800336e4-24a6-46ec-9023-c027ab2f3d06")
)
(fp_text user "${REFERENCE}"
(at -2.54 -2.794 0)
(layer "F.Fab")
(uuid "40dd7085-da12-41b9-b892-bfa7bf4f1386")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(pad "" np_thru_hole circle
(at -7.62 5.08)
(size 1.7 1.7)
(drill 1.7)
(layers "*.Cu" "*.Mask")
(uuid "b86d769f-f008-4ebc-81df-18e41ab52916")
)
(pad "" np_thru_hole circle
(at -2.54 5.08)
(size 4 4)
(drill 4)
(layers "*.Cu" "*.Mask")
(uuid "73765e79-092c-47ba-8638-124dd80e461f")
)
(pad "" np_thru_hole circle
(at 2.54 5.08)
(size 1.7 1.7)
(drill 1.7)
(layers "*.Cu" "*.Mask")
(uuid "c335d4df-5e73-4f97-a7a9-cdd4823bfe9d")
)
(pad "1" thru_hole circle
(at 0 0)
(size 2.2 2.2)
(drill 1.5)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "95f28955-d4ce-4605-8aac-5b414b25ef4e")
)
(pad "2" thru_hole circle
(at -6.35 2.54)
(size 2.2 2.2)
(drill 1.5)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "9d507696-ddb2-4a94-b63a-54a69e85b238")
)
(model "${KICAD8_3DMODEL_DIR}/Button_Switch_Keyboard.3dshapes/SW_Cherry_MX_1.00u_PCB.wrl"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${KIPRJMOD}/3D Models.pretty/Cherry MX-No LED.step"
(offset
(xyz -2.5 -4 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 0 0)
)
)
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,565 @@
(footprint "XIAO-RP2040-DIP-3D"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at -8.5 -12 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "7bab359d-5e5b-4dff-9db4-e7c8562ce635")
(effects
(font
(size 0.635 0.635)
(thickness 0.1016)
)
)
)
(property "Value" "XIAO-RP2040-DIP-3D"
(at 0 0 0)
(unlocked yes)
(layer "F.Fab")
(uuid "79cabf23-4ebc-4d37-9172-bb2cf4ea975f")
(effects
(font
(size 0.635 0.635)
(thickness 0.1016)
)
)
)
(property "Footprint" ""
(at 0 0 90)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "8f4fc10c-2540-4ba7-9be3-30f132330a85")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 90)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "663dc686-104e-47e1-9669-e1228477fa6f")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 90)
(unlocked yes)
(layer "F.Fab")
(hide yes)
(uuid "a25b2a4a-94ce-41bd-8341-b98204aa9142")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr smd)
(fp_line
(start -8.89 8.509)
(end -8.89 -8.636)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "f58afa0e-63f9-4096-9d17-7cf8e5de7759")
)
(fp_line
(start -6.985 10.414)
(end 6.985 10.414)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "e213e2f5-659f-4cdb-b390-b284746621aa")
)
(fp_line
(start -4.495 -10.541)
(end -4.491272 -11.451272)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "f9de026f-4957-4c58-8815-2ec2a4e25304")
)
(fp_line
(start -3.991272 -11.951)
(end 4.004 -11.951)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "6d10c908-5643-4e34-bfda-e70d5bfbd057")
)
(fp_line
(start 4.504 -11.451)
(end 4.504 -10.541)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "a7b3f67f-df72-4a29-b8dd-2fd55817ebb8")
)
(fp_line
(start 6.985 -10.541)
(end -6.985 -10.541)
(stroke
(width 0.1)
(type solid)
)
(layer "F.SilkS")
(uuid "b407de18-ee19-4b1e-a2a2-287f0975a1da")
)
(fp_line
(start 6.985 -10.541)
(end -6.985 -10.541)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "6f680559-bbef-46de-9ef5-efda7c2411e9")
)
(fp_line
(start 8.89 8.509)
(end 8.89 -8.636)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "9c6409b2-5f1b-4299-85bf-d07c96f13a2a")
)
(fp_arc
(start -8.89 -8.636)
(mid -8.332038 -9.983038)
(end -6.985 -10.541)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "c6870bc4-897a-485a-b951-3feda1bdd32e")
)
(fp_arc
(start -6.985 10.414)
(mid -8.332038 9.856038)
(end -8.89 8.509)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "88e5d6ea-6b70-4830-9817-980fd2b32f79")
)
(fp_arc
(start -4.491272 -11.451272)
(mid -4.344728 -11.80464)
(end -3.991272 -11.951)
(stroke
(width 0.127)
(type default)
)
(layer "F.SilkS")
(uuid "1224aaf2-42c0-4b17-8ffc-7aaff0b1be63")
)
(fp_arc
(start 4.004 -11.951)
(mid 4.357553 -11.804553)
(end 4.504 -11.451)
(stroke
(width 0.127)
(type default)
)
(layer "F.SilkS")
(uuid "c20fb5ab-ae23-4c23-8e13-36a7eb3db89c")
)
(fp_arc
(start 6.985 -10.541)
(mid 8.332038 -9.983038)
(end 8.89 -8.636)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "e1d8f660-1495-43db-8a6b-7fdc7dc42e35")
)
(fp_arc
(start 8.89 8.509)
(mid 8.332038 9.856038)
(end 6.985 10.414)
(stroke
(width 0.127)
(type solid)
)
(layer "F.SilkS")
(uuid "f108f05c-d5f6-4de1-bc6f-4c31ef53e967")
)
(fp_circle
(center -8.95 -10.3)
(end -8.95 -10.554)
(stroke
(width 0.5)
(type solid)
)
(fill solid)
(layer "F.SilkS")
(uuid "d523b867-b930-4152-a585-fb2991113352")
)
(fp_circle
(center -7.807 -9.42)
(end -7.807 -9.674)
(stroke
(width 0.5)
(type solid)
)
(fill solid)
(layer "F.SilkS")
(uuid "1b9c22f7-f19d-4572-be63-065c1e034c25")
)
(fp_rect
(start -8.9 -10.55)
(end 8.9 10.425)
(stroke
(width 0.05)
(type default)
)
(fill none)
(layer "F.CrtYd")
(uuid "b53697bc-d105-40e2-af66-708b16a7f26c")
)
(fp_rect
(start -8.9 -10.55)
(end 8.9 10.425)
(stroke
(width 0.1)
(type default)
)
(fill none)
(layer "F.Fab")
(uuid "a45a327e-f036-4877-8d89-39f4f4b0c715")
)
(fp_circle
(center -7.804 -9.426)
(end -7.804 -9.68)
(stroke
(width 0.5)
(type solid)
)
(fill solid)
(layer "F.Fab")
(uuid "f1bda1b0-c6a9-4930-b2ed-d175257d4cca")
)
(pad "1" smd roundrect
(at -8.455 -7.62 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "82bbfb55-8baa-4218-ac89-ab07d82ef7f8")
)
(pad "1" thru_hole circle
(at -7.62 -7.62 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "f2fffd4f-460c-4b4d-b954-811e935ed1d6")
)
(pad "2" smd roundrect
(at -8.455 -5.08 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "18ef9914-2d15-494c-9020-2334abcc1460")
)
(pad "2" thru_hole circle
(at -7.62 -5.08 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "4732cc3f-e641-4870-a9b3-ae13729c7bba")
)
(pad "3" smd roundrect
(at -8.455 -2.54 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "15338a55-8514-4218-a2c1-2cae003104c3")
)
(pad "3" thru_hole circle
(at -7.62 -2.54 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "0cef5e55-d8ff-4394-9cc1-cc318608b0d9")
)
(pad "4" smd roundrect
(at -8.455 0 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "191a259d-5773-4a80-91de-baa69611fab8")
)
(pad "4" thru_hole circle
(at -7.62 0 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "200b8da4-9395-48a5-b7ac-92a6a147c215")
)
(pad "5" smd roundrect
(at -8.455 2.54 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "52012467-1c46-4a8e-aa82-6f6ce69bd2ca")
)
(pad "5" thru_hole circle
(at -7.62 2.54 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "2b50ccce-3634-47d1-bf7d-a3db4f3f9a9f")
)
(pad "6" smd roundrect
(at -8.455 5.08 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "04aeaf95-142a-40f6-97a3-04453fc50824")
)
(pad "6" thru_hole circle
(at -7.62 5.08 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "7636de9d-d8e5-49c9-9fff-0cd76515690d")
)
(pad "7" smd roundrect
(at -8.455 7.62 180)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "e997fd0b-233a-4656-afad-cb2f8b9d87c9")
)
(pad "7" thru_hole circle
(at -7.62 7.62 180)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "9d2c0d0c-05dd-477e-8384-b14eec83fc2e")
)
(pad "8" thru_hole circle
(at 7.62 7.62)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "1e50c66f-49b8-4b03-9889-8cc6ca45ad8e")
)
(pad "8" smd roundrect
(at 8.455 7.62)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "e7b72803-b5f0-433c-8313-83247355fb43")
)
(pad "9" thru_hole circle
(at 7.62 5.08)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "808bf9dc-1c26-4a77-93c9-e4c6d5eccbb2")
)
(pad "9" smd roundrect
(at 8.455 5.08)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "532de3b6-bd30-47c5-b70e-0bca6abbd997")
)
(pad "10" thru_hole circle
(at 7.62 2.54)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "a792a2ac-537b-4136-8f92-b81f7ce8f753")
)
(pad "10" smd roundrect
(at 8.455 2.54)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "6e3f5c75-6143-468e-bb07-d89020c03f59")
)
(pad "11" thru_hole circle
(at 7.62 0)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "fb78046a-9b91-4893-b010-827957cc07be")
)
(pad "11" smd roundrect
(at 8.455 0)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "5249f425-bece-432d-8076-28e1b8b386e3")
)
(pad "12" thru_hole circle
(at 7.62 -2.54)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "0b8ccc97-5100-4dcf-8500-e99789ee0b4c")
)
(pad "12" smd roundrect
(at 8.455 -2.54)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "82f1bbd1-708b-4d2d-9113-7ba3c2313670")
)
(pad "13" thru_hole circle
(at 7.62 -5.08)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "03882061-01af-484b-b620-9e92a3daaf68")
)
(pad "13" smd roundrect
(at 8.455 -5.08)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "954f51d1-3d75-42fb-a02a-7389b30718d9")
)
(pad "14" thru_hole circle
(at 7.62 -7.62)
(size 1.524 1.524)
(drill 0.889)
(layers "*.Cu" "*.Mask")
(remove_unused_layers no)
(uuid "c6d1af47-da13-4409-9ab1-55d358cc57eb")
)
(pad "14" smd roundrect
(at 8.455 -7.62)
(size 2.432 1.524)
(layers "F.Cu" "F.Mask")
(roundrect_rratio 0.1)
(thermal_bridge_angle 45)
(uuid "6b725fd4-d6f0-46bf-b3e0-7ec07cc05622")
)
(model "${AMZPATH}/3dmodels/AMz3D.3dshapes/XIAO-nRF52840 v15.step"
(hide yes)
(offset
(xyz -1.778 -6.096 0.381)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 0 0)
)
)
(model "${AMZPATH}/3dmodels/AMz3D.3dshapes/Seeeduino XIAO SAMD21 v4.step"
(hide yes)
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
(model "${AMZPATH}/3dmodels/AMz3D.3dshapes/Seeed Studio XIAO RP2040 v26.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 90)
)
)
(model "${AMZPATH}/3dmodels/AMz3D.3dshapes/Seeed Studio XIAO-ESP32-C3.step"
(hide yes)
(offset
(xyz -1.7018 -6.096 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 0 0)
)
)
(model "${AMZPATH}/3dmodels/AMz3D.3dshapes/XIAO-ESP32S3 v2.step"
(hide yes)
(offset
(xyz -1.778 -6.1722 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz -90 0 0)
)
)
(model "${KIPRJMOD}/3D Models.pretty/Seeed Studio XIAO RP2040 v26.step"
(offset
(xyz -0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 0 0 0)
)
)
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 37,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "hackpad-pcb.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View file

@ -0,0 +1,584 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.05,
"copper_line_width": 0.2,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.05,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.1,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.1,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.1,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.1,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_symbol_mismatch": "warning",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"holes_co_located": "warning",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.2,
"min_microvia_drill": 0.1,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.8,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.1,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 1.0
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 80,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.2,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "hackpad-pcb.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "",
"pos_files": "",
"specctra_dsn": "",
"step": "hackpad-pcb.step",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
}
],
"filter_string": "",
"group_symbols": true,
"name": "Grouped By Value",
"sort_asc": true,
"sort_field": "Reference"
},
"connection_grid_size": 50.0,
"drawing": {
"dashed_lines_dash_length_ratio": 12.0,
"dashed_lines_gap_length_ratio": 3.0,
"default_line_thickness": 6.0,
"default_text_size": 50.0,
"field_names": [],
"intersheets_ref_own_page": false,
"intersheets_ref_prefix": "",
"intersheets_ref_short": false,
"intersheets_ref_show": false,
"intersheets_ref_suffix": "",
"junction_size_choice": 3,
"label_size_ratio": 0.375,
"operating_point_overlay_i_precision": 3,
"operating_point_overlay_i_range": "~A",
"operating_point_overlay_v_precision": 3,
"operating_point_overlay_v_range": "~V",
"overbar_offset_ratio": 1.23,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_dissipations": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"39695cd9-004f-4352-8165-bc66b45d0cfc",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,182 @@
import board # pyright: ignore[reportMissingImports]
from kmk.kmk_keyboard import KMKKeyboard
from kmk.scanners.keypad import KeysScanner
from kmk.keys import KC, Key
from kmk.extensions.media_keys import MediaKeys
from kmk.modules.encoder import EncoderHandler
from kmk.extensions.rgb import RGB
from kmk.utils import Debug
debug = Debug(__name__)
debug.enabled = True
keyboard = KMKKeyboard()
class PrevKey(Key):
def __init__(self):
pass
def on_press(self, keyboard, coord_int=None):
keyboard.add_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_PREV_TRACK
)
keyboard.add_key(KC.MEDIA_REWIND) # pyright: ignore[reportAttributeAccessIssue]
def on_release(self, keyboard, coord_int=None):
keyboard.remove_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_PREV_TRACK
)
keyboard.remove_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_REWIND
)
class NextKey(Key):
def __init__(self):
pass
def on_press(self, keyboard, coord_int=None):
keyboard.add_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_NEXT_TRACK
)
keyboard.add_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_FAST_FORWARD
)
def on_release(self, keyboard, coord_int=None):
keyboard.remove_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_NEXT_TRACK
)
keyboard.remove_key( # pyright: ignore[reportAttributeAccessIssue]
KC.MEDIA_FAST_FORWARD
)
class MuteKey(Key):
def __init__(self):
self.LED_ON = False
def on_press(self, keyboard, coord_int=None):
keyboard.add_key(KC.AUDIO_MUTE) # pyright: ignore[reportAttributeAccessIssue]
def on_release(self, keyboard, coord_int=None):
keyboard.remove_key( # pyright: ignore[reportAttributeAccessIssue]
KC.AUDIO_MUTE
)
if self.LED_ON:
self.LED_ON = False
rgb.set_rgb((0, 0, 0), 1)
else:
self.LED_ON = True
rgb.set_rgb((255, 0, 0), 1)
CUR_COLOR = [0, 255, 255]
def checkColor():
global CUR_COLOR
for i in range(3):
if CUR_COLOR[i] > 255:
CUR_COLOR[i] = CUR_COLOR[i] - 255
def changeColor():
global CUR_COLOR
checkColor()
if CUR_COLOR[2] >= 255:
if CUR_COLOR[1] >= 255:
if CUR_COLOR[0] >= 255:
CUR_COLOR = [0, 0, 0]
else:
CUR_COLOR = [CUR_COLOR[0] + 1, 0, 0]
else:
CUR_COLOR[1] = CUR_COLOR[1] + 1
CUR_COLOR[2] = 0
else:
CUR_COLOR[2] = CUR_COLOR[2] + 1
def unpackColor() -> tuple[int, int, int]:
global CUR_COLOR
return (CUR_COLOR[0], CUR_COLOR[1], CUR_COLOR[2])
class ColorKey(Key):
def __init__(self, keycode):
global CUR_COLOR
self.keycode = keycode
def on_press(self, keyboard, coord_int=None) -> None:
global CUR_COLOR
keyboard.add_key(self.keycode) # pyright: ignore[reportAttributeAccessIssue]
changeColor()
checkColor()
rgb.set_rgb(unpackColor(), 0)
def on_release(self, keyboard, coord_int=None) -> None:
keyboard.remove_key(self.keycode) # pyright: ignore[reportAttributeAccessIssue]
ENCPINS = (board.GP28, board.GP29, board.GP3)
PIXPIN = board.GP27
KEYPINS = [
board.GP4,
board.GP2,
board.GP1,
board.GPB0,
board.GPB1,
board.GPB2,
board.GPB3,
board.GPB4,
board.GPB5,
board.GPB6,
board.GPB7,
board.GPA0,
board.GPA1,
board.GPA2,
board.GPA3,
]
# Keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
# Custom Keys: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keys.md
KEYMAP = [
KC.MEDIA_PLAY_PAUSE,
PrevKey,
NextKey,
KC.F13,
KC.F14,
KC.F15,
KC.F16,
KC.F17,
KC.F18,
KC.F19,
KC.F20,
KC.F21,
KC.F22,
KC.F23,
KC.F24,
]
ENCMAP = ((KC.AUDIO_VOL_UP, KC.AUDIO_VOL_DOWN, MuteKey),)
rgb = RGB(pixel_pin=PIXPIN, num_pixels=2)
encoder_handler = EncoderHandler()
keyboard.extensions.append(MediaKeys())
keyboard.extensions.append(rgb)
keyboard.modules.append(encoder_handler)
keyboard.matrix = KeysScanner( # pyright: ignore[reportAttributeAccessIssue]
pins=KEYPINS,
value_when_pressed=False,
)
encoder_handler.pins = (ENCPINS,) # pyright: ignore[reportAttributeAccessIssue]
keyboard.keymap = [
KEYMAP,
]
encoder_handler.map = [ # pyright: ignore[reportAttributeAccessIssue]
ENCMAP,
]
if __name__ == "__main__":
keyboard.go()

View file

@ -360,7 +360,7 @@ You can use the [QMK firmware](https://qmk.fm/) project as firmware! You can fin
<a name="kmk"/>
Or if you wish, you can use kmk. It's made in python and can be hot reloaded.
Here is the starter code, with explenations in the comments:
Here is the starter code, with explanations in the comments:
```python
# You import all the IOs of your board