Merge branch 'hackclub:main' into main
114131
extras/knurled_knob.step
13393
hackpads/ChessPad/CAD/Assembled_Case.step
Normal file
46
hackpads/ChessPad/Firmware/main.py.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# You import all the IOs of your board
|
||||
import board
|
||||
|
||||
# These are imports from the kmk library
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import KeysScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.macros import Press, Release, Tap, Macros
|
||||
from kmk.modules.rotary_encoder import RotaryEncoderHandler
|
||||
|
||||
|
||||
# This is the main instance of your keyboard
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
# Add the macro extension
|
||||
macros = Macros()
|
||||
keyboard.modules.append(macros)
|
||||
|
||||
# Define your pins here!
|
||||
PINS = [board.D7, board.D8, board.D9, board.D10, board.D6, board.D5, board.D2, board.D3]
|
||||
|
||||
# Define rotary encoder module
|
||||
encoder_handler = RotaryEncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
# Assign rotary encoder actions
|
||||
encoder_handler.pins = (board.GP26, board.GP27)
|
||||
encoder_handler.divisor = 4
|
||||
encoder_handler.map = [KC.VOLD, KC.VOLU] # Rotate Left = Volume Down, Rotate Right = Volume Up
|
||||
|
||||
# Tell kmk we are not using a key matrix
|
||||
keyboard.matrix = KeysScanner(
|
||||
pins=PINS,
|
||||
value_when_pressed=False,
|
||||
)
|
||||
|
||||
# Here you define the buttons corresponding to the pins
|
||||
# Look here for keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
|
||||
# And here for macros: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/macros.md
|
||||
keyboard.keymap = [
|
||||
[KC.W, KC.A, KC.S, KC.D, KC.DEL, KC.SPC]
|
||||
]
|
||||
|
||||
# Start kmk!
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
5648
hackpads/ChessPad/PCB/ChessPad_KiCad_Folder/MacroPad#2.kicad_pcb
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"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": "MacroPad#2.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
584
hackpads/ChessPad/PCB/ChessPad_KiCad_Folder/MacroPad#2.kicad_pro
Normal 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": "MacroPad#2.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": "../../Desktop/MacroPadStuff/Gerbers/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "../../Desktop/MacroPadStuff/MacroPad#2.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": [
|
||||
[
|
||||
"ad87ff65-c09e-4df0-a55e-fda2112b1caa",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
3421
hackpads/ChessPad/PCB/ChessPad_KiCad_Folder/MacroPad#2.kicad_sch
Normal file
99485
hackpads/ChessPad/PCB/ChessPad_KiCad_Folder/fp-info-cache
Normal file
1040
hackpads/ChessPad/Production/BackPlate.step
Normal file
12225
hackpads/ChessPad/Production/FrontPlate.step
Normal file
BIN
hackpads/ChessPad/Production/Gerbers.zip
Normal file
46
hackpads/ChessPad/Production/main.py.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# You import all the IOs of your board
|
||||
import board
|
||||
|
||||
# These are imports from the kmk library
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import KeysScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.macros import Press, Release, Tap, Macros
|
||||
from kmk.modules.rotary_encoder import RotaryEncoderHandler
|
||||
|
||||
|
||||
# This is the main instance of your keyboard
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
# Add the macro extension
|
||||
macros = Macros()
|
||||
keyboard.modules.append(macros)
|
||||
|
||||
# Define your pins here!
|
||||
PINS = [board.D7, board.D8, board.D9, board.D10, board.D6, board.D5, board.D2, board.D3]
|
||||
|
||||
# Define rotary encoder module
|
||||
encoder_handler = RotaryEncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
# Assign rotary encoder actions
|
||||
encoder_handler.pins = (board.GP26, board.GP27)
|
||||
encoder_handler.divisor = 4
|
||||
encoder_handler.map = [KC.VOLD, KC.VOLU] # Rotate Left = Volume Down, Rotate Right = Volume Up
|
||||
|
||||
# Tell kmk we are not using a key matrix
|
||||
keyboard.matrix = KeysScanner(
|
||||
pins=PINS,
|
||||
value_when_pressed=False,
|
||||
)
|
||||
|
||||
# Here you define the buttons corresponding to the pins
|
||||
# Look here for keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
|
||||
# And here for macros: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/macros.md
|
||||
keyboard.keymap = [
|
||||
[KC.W, KC.A, KC.S, KC.D, KC.DEL, KC.SPC]
|
||||
]
|
||||
|
||||
# Start kmk!
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
32
hackpads/ChessPad/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# ChessPad!
|
||||
|
||||
### Inspiration
|
||||
I came across this event just from a random email, and knew I had to try it out. The name was chosen quite randomly in the end though, and its only real implementation is as a symbol on the pcb
|
||||
So much thanks goes to whoever made "Ducc's fidget toy". I even ended up stealing their BOM, with slight adjustments
|
||||
|
||||
### Extra info
|
||||
None
|
||||
|
||||
### Specifications
|
||||
|
||||
BOM:
|
||||
- 6x Cherry MX Switches
|
||||
- 2x SK6812 MINI Leds
|
||||
- 1x XIAO RP2040
|
||||
- 6x Blank DSA Keycaps (preferably white or black, for that chess theme, but doesn't matter too much)
|
||||
- 4x M3x16 Bolt
|
||||
- 4x M3 Heatset
|
||||
- 1x Soldering iron
|
||||
- 1x EC11 Rotary Encoder
|
||||
- 1x Case
|
||||
- 1x EC11 Rotary Encoder
|
||||
|
||||
Others:
|
||||
- KMK Firmware
|
||||
- FrontPlate.step
|
||||
- BackPlate.Step
|
||||
|
||||
Images:
|
||||

|
||||

|
||||

|
||||
BIN
hackpads/ChessPad/Screenshots/Case_Screenshot.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
hackpads/ChessPad/Screenshots/PCB_Screenshot.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
hackpads/ChessPad/Screenshots/Schematic_Screenshot.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
39
hackpads/EPad/README.md
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
# Epad
|
||||
This is my submission for Hackpad V2!
|
||||
|
||||
## Inspiration
|
||||
I was inspired by a macropad that I saw in a YouTube video a while back. It looked really cool so I tried to replicate it as best as I could from memory.
|
||||
|
||||
## Challenges
|
||||
My biggest challenge was getting everything to line up correctly. I know I spent a long time just getting every hole at the top lined up with the switches.
|
||||
|
||||
## Features
|
||||
- 12x cherry mx keys
|
||||
- 1x rotary encoder switch
|
||||
- KMK firmware
|
||||
|
||||
## PCB
|
||||
|
||||
| **Schematic** | **PCB** |
|
||||
|---------------|---------|
|
||||
|||
|
||||
|
||||
## CAD
|
||||
|
||||
Designed with Fusion 360. The guide helped a ton!
|
||||
|
||||

|
||||

|
||||
|
||||
## Firmware
|
||||
|
||||
Made using KMK Firmware
|
||||
|
||||
## BOM
|
||||
- 1 XIAO-RP2040
|
||||
- 12x Cherry MX Switches
|
||||
- 12x White keycaps
|
||||
- 12x 35_SOD27_P7.62mm diodes
|
||||
- 1x Rotary Encoder Switch
|
||||
- 4x 8mm deep 3.332mm wide 4mm size m4x0.7 screws
|
||||
- 1x knob for the rotary encoder
|
||||
224626
hackpads/EPad/cad/Combined With PCB Components.step
Normal file
126119
hackpads/EPad/cad/Combined Without PCB Components.step
Normal file
33
hackpads/EPad/firmware/main.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import board
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.scanners import DiodeOrientation
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
keyboard.col_pins = (board.GP6, board.GP7, board.GP0, board.GP3) # 5, 6, 7, 11
|
||||
keyboard.row_pins = (board.GP4, board.GP2, board.GP1) # 10, 9, 8
|
||||
keyboard.diode_orientation = DiodeOrientation.COL2ROW
|
||||
|
||||
encoder_handler.pins = ((board.GP4, board.GP2, board.GP3))
|
||||
|
||||
keyboard.keymap = [
|
||||
[
|
||||
KC.A, KC.B, KC.C, KC.D,
|
||||
KC.E, KC.F, KC.G, KC.H,
|
||||
KC.I, KC.J, KC.K, KC.L
|
||||
]
|
||||
]
|
||||
|
||||
encoder_handler.map = [
|
||||
[
|
||||
KC.VOLU, KC.VOLD
|
||||
]
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
10505
hackpads/EPad/pcb/ForrealziesDaRealPCB.kicad_pcb
Normal file
83
hackpads/EPad/pcb/ForrealziesDaRealPCB.kicad_prl
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"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": "ForrealziesDaRealPCB.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
584
hackpads/EPad/pcb/ForrealziesDaRealPCB.kicad_pro
Normal 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": "ForrealziesDaRealPCB.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": "ForrealziesDaRealPCB.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": [
|
||||
[
|
||||
"9d2d2b40-499b-45d8-b3e1-28c32b8e6de0",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
4745
hackpads/EPad/pcb/ForrealziesDaRealPCB.kicad_sch
Normal file
8933
hackpads/EPad/production/Bottom.step
Normal file
16504
hackpads/EPad/production/Top.step
Normal file
BIN
hackpads/EPad/production/gerbers.zip
Normal file
33
hackpads/EPad/production/main.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import board
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.scanners import DiodeOrientation
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
keyboard.col_pins = (board.GP6, board.GP7, board.GP0, board.GP3) # 5, 6, 7, 11
|
||||
keyboard.row_pins = (board.GP4, board.GP2, board.GP1) # 10, 9, 8
|
||||
keyboard.diode_orientation = DiodeOrientation.COL2ROW
|
||||
|
||||
encoder_handler.pins = ((board.GP4, board.GP2, board.GP3))
|
||||
|
||||
keyboard.keymap = [
|
||||
[
|
||||
KC.A, KC.B, KC.C, KC.D,
|
||||
KC.E, KC.F, KC.G, KC.H,
|
||||
KC.I, KC.J, KC.K, KC.L
|
||||
]
|
||||
]
|
||||
|
||||
encoder_handler.map = [
|
||||
[
|
||||
KC.VOLU, KC.VOLD
|
||||
]
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
149907
hackpads/Kalpad/CAD/kalpad.step
Normal file
15034
hackpads/Kalpad/PCB/Kalpad.kicad_pcb
Normal file
83
hackpads/Kalpad/PCB/Kalpad.kicad_prl
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"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": "Kalpad.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
592
hackpads/Kalpad/PCB/Kalpad.kicad_pro
Normal file
|
|
@ -0,0 +1,592 @@
|
|||
{
|
||||
"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.005,
|
||||
"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": "Kalpad.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": "",
|
||||
"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": "",
|
||||
"ngspice": {
|
||||
"fix_include_paths": true,
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 4,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"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": [
|
||||
[
|
||||
"626270de-5fab-4eac-819f-8b0143e96062",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
4546
hackpads/Kalpad/PCB/Kalpad.kicad_sch
Normal file
29
hackpads/Kalpad/README.md
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Kalpad
|
||||
The Kalpad is a 12-key macropad with two rotary encoders intended to be used with Procreate!
|
||||
|
||||
<img src=assets/model.png alt="CAD Model" width="600"/>
|
||||
|
||||
## Inspiration
|
||||
I wanted to create something that felt truly "me", whilst also going out of my comfort zone. I wanted to combine aesthetics with functionality, resulting in the Kalpad!
|
||||
|
||||
## PCB
|
||||
The silkscreen was illustrated in Procreate as a fun Easter egg for when the macro pad is being worked on and/or taken apart.
|
||||
|
||||
### PCB
|
||||
<img src=assets/pcb.png alt="PCB" width="400"/>
|
||||
<img src=assets/pcb-3d.png alt="PCB 3D View" width="400"/>
|
||||
|
||||
### Schematic
|
||||
<img src=assets/schematic.png alt="Schematic" width="400"/>
|
||||
|
||||
## Firmware Overview
|
||||
This hackpad uses KMK firmware for everything.
|
||||
This will likely change in the future— the Kalpad was designed to be flexible, so I'd like to add different functionalities outside of Procreate.
|
||||
|
||||
## BOM:
|
||||
- 12x Linear MX Switches (Gateron Milky Yellow Pro Linear Switches (KS-3))
|
||||
- 12x Blank DSA Keycaps
|
||||
- 2x EC11 Rotary Encoder
|
||||
- 1x XIAO RP2040
|
||||
- 5x M3 Heatset Inserts
|
||||
- 1x Case (top, middle, & bottom)
|
||||
BIN
hackpads/Kalpad/assets/model.png
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
hackpads/Kalpad/assets/pcb-3d.png
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
hackpads/Kalpad/assets/pcb.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
hackpads/Kalpad/assets/schematic.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
50
hackpads/Kalpad/firmware/main.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# import all the IOs of your board
|
||||
import board
|
||||
|
||||
# KMK library imports
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import MatrixScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
# main instance of keyboard
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
# define encoders
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
encoder_handler.pins = [
|
||||
(1, 2), # first encoder (A, B pins)
|
||||
(3, 4), # second encoder (A, B pins)
|
||||
]
|
||||
|
||||
# define key matrix
|
||||
keyboard.matrix = MatrixScanner(
|
||||
rows=(5, 6, 7),
|
||||
cols=(8, 9, 10, 11)
|
||||
)
|
||||
|
||||
# MARK: - mappings
|
||||
# keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
|
||||
# macros: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/macros.md
|
||||
|
||||
# map encoders
|
||||
encoder_handler.map = [
|
||||
((KC.LEFT, KC.RIGHT)), # left encoder - brush size
|
||||
((KC.MINUS, KC.EQUAL)), # right encoder - zoom
|
||||
]
|
||||
|
||||
# map matrix
|
||||
keyboard.keymap = [
|
||||
[
|
||||
KC.BRIGHTNESS_DOWN, KC.BRIGHTNESS_UP, KC.LCMD(KC.Z), KC.LCMD(KC.LSFT(KC.Z)), # Row 1: brightness down, brightness up, undo, redo
|
||||
KC.LCMD(KC.X), KC.LCMD(KC.C), KC.LCMD(KC.V), KC.L, # Row 2: selection (Cmd+X), transform (Cmd+C), HSB (Cmd+V), layer menu
|
||||
KC.LCMD, KC.TAB, KC.G, KC.E # Row 3: Cmd, slide over, eyedropper, color menu
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
# start KMK!
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
BIN
hackpads/Kalpad/production/PCB.zip
Normal file
1769
hackpads/Kalpad/production/bottom.step
Normal file
50
hackpads/Kalpad/production/main.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# import all the IOs of your board
|
||||
import board
|
||||
|
||||
# KMK library imports
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import MatrixScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
# main instance of keyboard
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
# define encoders
|
||||
encoder_handler = EncoderHandler()
|
||||
keyboard.modules.append(encoder_handler)
|
||||
|
||||
encoder_handler.pins = [
|
||||
(1, 2), # first encoder (A, B pins)
|
||||
(3, 4), # second encoder (A, B pins)
|
||||
]
|
||||
|
||||
# define key matrix
|
||||
keyboard.matrix = MatrixScanner(
|
||||
rows=(5, 6, 7),
|
||||
cols=(8, 9, 10, 11)
|
||||
)
|
||||
|
||||
# MARK: - mappings
|
||||
# keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
|
||||
# macros: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/macros.md
|
||||
|
||||
# map encoders
|
||||
encoder_handler.map = [
|
||||
((KC.LEFT, KC.RIGHT)), # left encoder - brush size
|
||||
((KC.MINUS, KC.EQUAL)), # right encoder - zoom
|
||||
]
|
||||
|
||||
# map matrix
|
||||
keyboard.keymap = [
|
||||
[
|
||||
KC.BRIGHTNESS_DOWN, KC.BRIGHTNESS_UP, KC.LCMD(KC.Z), KC.LCMD(KC.LSFT(KC.Z)), # Row 1: brightness down, brightness up, undo, redo
|
||||
KC.LCMD(KC.X), KC.LCMD(KC.C), KC.LCMD(KC.V), KC.L, # Row 2: selection (Cmd+X), transform (Cmd+C), HSB (Cmd+V), layer menu
|
||||
KC.LCMD, KC.TAB, KC.G, KC.E # Row 3: Cmd, slide over, eyedropper, color menu
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
# start KMK!
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
4040
hackpads/Kalpad/production/middle.step
Normal file
3132
hackpads/Kalpad/production/top.step
Normal file
27675
hackpads/N0PAD/cad/EC11_Rotary_Encoder_Switched.step
Normal file
48419
hackpads/N0PAD/cad/MX .STEP
Normal file
10992
hackpads/N0PAD/cad/N0PAD.step
Normal file
BIN
hackpads/N0PAD/cad/N0PAD.stl
Normal file
684
hackpads/N0PAD/cad/bottom.step
Normal file
|
|
@ -0,0 +1,684 @@
|
|||
ISO-10303-21;
|
||||
HEADER;
|
||||
/* Generated by software containing ST-Developer
|
||||
* from STEP Tools, Inc. (www.steptools.com)
|
||||
*/
|
||||
|
||||
FILE_DESCRIPTION(
|
||||
/* description */ (''),
|
||||
/* implementation_level */ '2;1');
|
||||
|
||||
FILE_NAME(
|
||||
/* name */ 'bottom.step',
|
||||
/* time_stamp */ '2024-11-24T15:49:04+01:00',
|
||||
/* author */ (''),
|
||||
/* organization */ (''),
|
||||
/* preprocessor_version */ 'ST-DEVELOPER v20',
|
||||
/* originating_system */ 'Autodesk Translation Framework v13.20.0.188',
|
||||
|
||||
/* authorisation */ '');
|
||||
|
||||
FILE_SCHEMA (('AUTOMOTIVE_DESIGN { 1 0 10303 214 3 1 1 }'));
|
||||
ENDSEC;
|
||||
|
||||
DATA;
|
||||
#10=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#13),#603);
|
||||
#11=SHAPE_REPRESENTATION_RELATIONSHIP('SRR','None',#610,#12);
|
||||
#12=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#14),#602);
|
||||
#13=STYLED_ITEM('',(#619),#14);
|
||||
#14=MANIFOLD_SOLID_BREP('Body1',#367);
|
||||
#15=FACE_BOUND('',#69,.T.);
|
||||
#16=FACE_BOUND('',#70,.T.);
|
||||
#17=FACE_BOUND('',#71,.T.);
|
||||
#18=FACE_BOUND('',#72,.T.);
|
||||
#19=FACE_BOUND('',#75,.T.);
|
||||
#20=FACE_BOUND('',#76,.T.);
|
||||
#21=FACE_BOUND('',#77,.T.);
|
||||
#22=FACE_BOUND('',#78,.T.);
|
||||
#23=CIRCLE('',#388,1.45);
|
||||
#24=CIRCLE('',#389,1.45);
|
||||
#25=CIRCLE('',#391,1.45);
|
||||
#26=CIRCLE('',#392,1.45);
|
||||
#27=CIRCLE('',#394,1.45);
|
||||
#28=CIRCLE('',#395,1.45);
|
||||
#29=CIRCLE('',#398,1.45);
|
||||
#30=CIRCLE('',#399,1.45);
|
||||
#31=CYLINDRICAL_SURFACE('',#387,1.45);
|
||||
#32=CYLINDRICAL_SURFACE('',#390,1.45);
|
||||
#33=CYLINDRICAL_SURFACE('',#393,1.45);
|
||||
#34=CYLINDRICAL_SURFACE('',#397,1.45);
|
||||
#35=FACE_OUTER_BOUND('',#53,.T.);
|
||||
#36=FACE_OUTER_BOUND('',#54,.T.);
|
||||
#37=FACE_OUTER_BOUND('',#55,.T.);
|
||||
#38=FACE_OUTER_BOUND('',#56,.T.);
|
||||
#39=FACE_OUTER_BOUND('',#57,.T.);
|
||||
#40=FACE_OUTER_BOUND('',#58,.T.);
|
||||
#41=FACE_OUTER_BOUND('',#59,.T.);
|
||||
#42=FACE_OUTER_BOUND('',#60,.T.);
|
||||
#43=FACE_OUTER_BOUND('',#61,.T.);
|
||||
#44=FACE_OUTER_BOUND('',#62,.T.);
|
||||
#45=FACE_OUTER_BOUND('',#63,.T.);
|
||||
#46=FACE_OUTER_BOUND('',#64,.T.);
|
||||
#47=FACE_OUTER_BOUND('',#65,.T.);
|
||||
#48=FACE_OUTER_BOUND('',#66,.T.);
|
||||
#49=FACE_OUTER_BOUND('',#67,.T.);
|
||||
#50=FACE_OUTER_BOUND('',#68,.T.);
|
||||
#51=FACE_OUTER_BOUND('',#73,.T.);
|
||||
#52=FACE_OUTER_BOUND('',#74,.T.);
|
||||
#53=EDGE_LOOP('',(#239,#240,#241,#242));
|
||||
#54=EDGE_LOOP('',(#243,#244,#245,#246));
|
||||
#55=EDGE_LOOP('',(#247,#248,#249,#250));
|
||||
#56=EDGE_LOOP('',(#251,#252,#253,#254,#255,#256,#257,#258));
|
||||
#57=EDGE_LOOP('',(#259,#260,#261,#262));
|
||||
#58=EDGE_LOOP('',(#263,#264,#265,#266));
|
||||
#59=EDGE_LOOP('',(#267,#268,#269,#270));
|
||||
#60=EDGE_LOOP('',(#271,#272,#273,#274));
|
||||
#61=EDGE_LOOP('',(#275,#276,#277,#278));
|
||||
#62=EDGE_LOOP('',(#279,#280,#281,#282));
|
||||
#63=EDGE_LOOP('',(#283,#284,#285,#286));
|
||||
#64=EDGE_LOOP('',(#287,#288,#289,#290,#291,#292,#293,#294));
|
||||
#65=EDGE_LOOP('',(#295,#296,#297,#298));
|
||||
#66=EDGE_LOOP('',(#299,#300,#301,#302));
|
||||
#67=EDGE_LOOP('',(#303,#304,#305,#306));
|
||||
#68=EDGE_LOOP('',(#307,#308,#309,#310,#311,#312,#313,#314,#315,#316,#317,
|
||||
#318));
|
||||
#69=EDGE_LOOP('',(#319));
|
||||
#70=EDGE_LOOP('',(#320));
|
||||
#71=EDGE_LOOP('',(#321));
|
||||
#72=EDGE_LOOP('',(#322));
|
||||
#73=EDGE_LOOP('',(#323,#324,#325,#326));
|
||||
#74=EDGE_LOOP('',(#327,#328,#329,#330));
|
||||
#75=EDGE_LOOP('',(#331));
|
||||
#76=EDGE_LOOP('',(#332));
|
||||
#77=EDGE_LOOP('',(#333));
|
||||
#78=EDGE_LOOP('',(#334));
|
||||
#79=LINE('',#505,#119);
|
||||
#80=LINE('',#507,#120);
|
||||
#81=LINE('',#509,#121);
|
||||
#82=LINE('',#510,#122);
|
||||
#83=LINE('',#514,#123);
|
||||
#84=LINE('',#516,#124);
|
||||
#85=LINE('',#518,#125);
|
||||
#86=LINE('',#519,#126);
|
||||
#87=LINE('',#521,#127);
|
||||
#88=LINE('',#522,#128);
|
||||
#89=LINE('',#525,#129);
|
||||
#90=LINE('',#527,#130);
|
||||
#91=LINE('',#529,#131);
|
||||
#92=LINE('',#531,#132);
|
||||
#93=LINE('',#532,#133);
|
||||
#94=LINE('',#536,#134);
|
||||
#95=LINE('',#538,#135);
|
||||
#96=LINE('',#540,#136);
|
||||
#97=LINE('',#541,#137);
|
||||
#98=LINE('',#543,#138);
|
||||
#99=LINE('',#544,#139);
|
||||
#100=LINE('',#549,#140);
|
||||
#101=LINE('',#555,#141);
|
||||
#102=LINE('',#561,#142);
|
||||
#103=LINE('',#564,#143);
|
||||
#104=LINE('',#565,#144);
|
||||
#105=LINE('',#570,#145);
|
||||
#106=LINE('',#574,#146);
|
||||
#107=LINE('',#576,#147);
|
||||
#108=LINE('',#578,#148);
|
||||
#109=LINE('',#580,#149);
|
||||
#110=LINE('',#581,#150);
|
||||
#111=LINE('',#584,#151);
|
||||
#112=LINE('',#586,#152);
|
||||
#113=LINE('',#587,#153);
|
||||
#114=LINE('',#590,#154);
|
||||
#115=LINE('',#592,#155);
|
||||
#116=LINE('',#593,#156);
|
||||
#117=LINE('',#595,#157);
|
||||
#118=LINE('',#596,#158);
|
||||
#119=VECTOR('',#411,10.);
|
||||
#120=VECTOR('',#412,10.);
|
||||
#121=VECTOR('',#413,10.);
|
||||
#122=VECTOR('',#414,10.);
|
||||
#123=VECTOR('',#417,10.);
|
||||
#124=VECTOR('',#418,10.);
|
||||
#125=VECTOR('',#419,10.);
|
||||
#126=VECTOR('',#420,10.);
|
||||
#127=VECTOR('',#423,10.);
|
||||
#128=VECTOR('',#424,10.);
|
||||
#129=VECTOR('',#427,10.);
|
||||
#130=VECTOR('',#428,10.);
|
||||
#131=VECTOR('',#429,10.);
|
||||
#132=VECTOR('',#430,10.);
|
||||
#133=VECTOR('',#431,10.);
|
||||
#134=VECTOR('',#434,10.);
|
||||
#135=VECTOR('',#435,10.);
|
||||
#136=VECTOR('',#436,10.);
|
||||
#137=VECTOR('',#437,10.);
|
||||
#138=VECTOR('',#440,10.);
|
||||
#139=VECTOR('',#441,10.);
|
||||
#140=VECTOR('',#446,1.45);
|
||||
#141=VECTOR('',#453,1.45);
|
||||
#142=VECTOR('',#460,1.45);
|
||||
#143=VECTOR('',#465,10.);
|
||||
#144=VECTOR('',#466,10.);
|
||||
#145=VECTOR('',#471,1.45);
|
||||
#146=VECTOR('',#476,10.);
|
||||
#147=VECTOR('',#477,10.);
|
||||
#148=VECTOR('',#478,10.);
|
||||
#149=VECTOR('',#479,10.);
|
||||
#150=VECTOR('',#480,10.);
|
||||
#151=VECTOR('',#483,10.);
|
||||
#152=VECTOR('',#484,10.);
|
||||
#153=VECTOR('',#485,10.);
|
||||
#154=VECTOR('',#488,10.);
|
||||
#155=VECTOR('',#489,10.);
|
||||
#156=VECTOR('',#490,10.);
|
||||
#157=VECTOR('',#493,10.);
|
||||
#158=VECTOR('',#494,10.);
|
||||
#159=VERTEX_POINT('',#503);
|
||||
#160=VERTEX_POINT('',#504);
|
||||
#161=VERTEX_POINT('',#506);
|
||||
#162=VERTEX_POINT('',#508);
|
||||
#163=VERTEX_POINT('',#512);
|
||||
#164=VERTEX_POINT('',#513);
|
||||
#165=VERTEX_POINT('',#515);
|
||||
#166=VERTEX_POINT('',#517);
|
||||
#167=VERTEX_POINT('',#524);
|
||||
#168=VERTEX_POINT('',#526);
|
||||
#169=VERTEX_POINT('',#528);
|
||||
#170=VERTEX_POINT('',#530);
|
||||
#171=VERTEX_POINT('',#534);
|
||||
#172=VERTEX_POINT('',#535);
|
||||
#173=VERTEX_POINT('',#537);
|
||||
#174=VERTEX_POINT('',#539);
|
||||
#175=VERTEX_POINT('',#546);
|
||||
#176=VERTEX_POINT('',#548);
|
||||
#177=VERTEX_POINT('',#552);
|
||||
#178=VERTEX_POINT('',#554);
|
||||
#179=VERTEX_POINT('',#558);
|
||||
#180=VERTEX_POINT('',#560);
|
||||
#181=VERTEX_POINT('',#567);
|
||||
#182=VERTEX_POINT('',#569);
|
||||
#183=VERTEX_POINT('',#573);
|
||||
#184=VERTEX_POINT('',#575);
|
||||
#185=VERTEX_POINT('',#577);
|
||||
#186=VERTEX_POINT('',#579);
|
||||
#187=VERTEX_POINT('',#583);
|
||||
#188=VERTEX_POINT('',#585);
|
||||
#189=VERTEX_POINT('',#589);
|
||||
#190=VERTEX_POINT('',#591);
|
||||
#191=EDGE_CURVE('',#159,#160,#79,.T.);
|
||||
#192=EDGE_CURVE('',#161,#159,#80,.T.);
|
||||
#193=EDGE_CURVE('',#162,#161,#81,.T.);
|
||||
#194=EDGE_CURVE('',#160,#162,#82,.T.);
|
||||
#195=EDGE_CURVE('',#163,#164,#83,.T.);
|
||||
#196=EDGE_CURVE('',#163,#165,#84,.T.);
|
||||
#197=EDGE_CURVE('',#166,#165,#85,.T.);
|
||||
#198=EDGE_CURVE('',#164,#166,#86,.T.);
|
||||
#199=EDGE_CURVE('',#160,#163,#87,.T.);
|
||||
#200=EDGE_CURVE('',#165,#162,#88,.T.);
|
||||
#201=EDGE_CURVE('',#167,#161,#89,.T.);
|
||||
#202=EDGE_CURVE('',#168,#167,#90,.T.);
|
||||
#203=EDGE_CURVE('',#169,#168,#91,.T.);
|
||||
#204=EDGE_CURVE('',#169,#170,#92,.T.);
|
||||
#205=EDGE_CURVE('',#166,#170,#93,.T.);
|
||||
#206=EDGE_CURVE('',#171,#172,#94,.T.);
|
||||
#207=EDGE_CURVE('',#171,#173,#95,.T.);
|
||||
#208=EDGE_CURVE('',#174,#173,#96,.T.);
|
||||
#209=EDGE_CURVE('',#172,#174,#97,.T.);
|
||||
#210=EDGE_CURVE('',#168,#171,#98,.T.);
|
||||
#211=EDGE_CURVE('',#173,#167,#99,.T.);
|
||||
#212=EDGE_CURVE('',#175,#175,#23,.T.);
|
||||
#213=EDGE_CURVE('',#175,#176,#100,.T.);
|
||||
#214=EDGE_CURVE('',#176,#176,#24,.T.);
|
||||
#215=EDGE_CURVE('',#177,#177,#25,.T.);
|
||||
#216=EDGE_CURVE('',#177,#178,#101,.T.);
|
||||
#217=EDGE_CURVE('',#178,#178,#26,.T.);
|
||||
#218=EDGE_CURVE('',#179,#179,#27,.T.);
|
||||
#219=EDGE_CURVE('',#179,#180,#102,.T.);
|
||||
#220=EDGE_CURVE('',#180,#180,#28,.T.);
|
||||
#221=EDGE_CURVE('',#172,#169,#103,.T.);
|
||||
#222=EDGE_CURVE('',#170,#174,#104,.T.);
|
||||
#223=EDGE_CURVE('',#181,#181,#29,.T.);
|
||||
#224=EDGE_CURVE('',#181,#182,#105,.T.);
|
||||
#225=EDGE_CURVE('',#182,#182,#30,.T.);
|
||||
#226=EDGE_CURVE('',#183,#164,#106,.T.);
|
||||
#227=EDGE_CURVE('',#184,#183,#107,.T.);
|
||||
#228=EDGE_CURVE('',#184,#185,#108,.T.);
|
||||
#229=EDGE_CURVE('',#185,#186,#109,.T.);
|
||||
#230=EDGE_CURVE('',#159,#186,#110,.T.);
|
||||
#231=EDGE_CURVE('',#187,#184,#111,.T.);
|
||||
#232=EDGE_CURVE('',#188,#183,#112,.T.);
|
||||
#233=EDGE_CURVE('',#187,#188,#113,.T.);
|
||||
#234=EDGE_CURVE('',#189,#187,#114,.T.);
|
||||
#235=EDGE_CURVE('',#190,#188,#115,.T.);
|
||||
#236=EDGE_CURVE('',#189,#190,#116,.T.);
|
||||
#237=EDGE_CURVE('',#185,#189,#117,.T.);
|
||||
#238=EDGE_CURVE('',#186,#190,#118,.T.);
|
||||
#239=ORIENTED_EDGE('',*,*,#191,.F.);
|
||||
#240=ORIENTED_EDGE('',*,*,#192,.F.);
|
||||
#241=ORIENTED_EDGE('',*,*,#193,.F.);
|
||||
#242=ORIENTED_EDGE('',*,*,#194,.F.);
|
||||
#243=ORIENTED_EDGE('',*,*,#195,.F.);
|
||||
#244=ORIENTED_EDGE('',*,*,#196,.T.);
|
||||
#245=ORIENTED_EDGE('',*,*,#197,.F.);
|
||||
#246=ORIENTED_EDGE('',*,*,#198,.F.);
|
||||
#247=ORIENTED_EDGE('',*,*,#199,.F.);
|
||||
#248=ORIENTED_EDGE('',*,*,#194,.T.);
|
||||
#249=ORIENTED_EDGE('',*,*,#200,.F.);
|
||||
#250=ORIENTED_EDGE('',*,*,#196,.F.);
|
||||
#251=ORIENTED_EDGE('',*,*,#197,.T.);
|
||||
#252=ORIENTED_EDGE('',*,*,#200,.T.);
|
||||
#253=ORIENTED_EDGE('',*,*,#193,.T.);
|
||||
#254=ORIENTED_EDGE('',*,*,#201,.F.);
|
||||
#255=ORIENTED_EDGE('',*,*,#202,.F.);
|
||||
#256=ORIENTED_EDGE('',*,*,#203,.F.);
|
||||
#257=ORIENTED_EDGE('',*,*,#204,.T.);
|
||||
#258=ORIENTED_EDGE('',*,*,#205,.F.);
|
||||
#259=ORIENTED_EDGE('',*,*,#206,.F.);
|
||||
#260=ORIENTED_EDGE('',*,*,#207,.T.);
|
||||
#261=ORIENTED_EDGE('',*,*,#208,.F.);
|
||||
#262=ORIENTED_EDGE('',*,*,#209,.F.);
|
||||
#263=ORIENTED_EDGE('',*,*,#210,.F.);
|
||||
#264=ORIENTED_EDGE('',*,*,#202,.T.);
|
||||
#265=ORIENTED_EDGE('',*,*,#211,.F.);
|
||||
#266=ORIENTED_EDGE('',*,*,#207,.F.);
|
||||
#267=ORIENTED_EDGE('',*,*,#212,.F.);
|
||||
#268=ORIENTED_EDGE('',*,*,#213,.T.);
|
||||
#269=ORIENTED_EDGE('',*,*,#214,.T.);
|
||||
#270=ORIENTED_EDGE('',*,*,#213,.F.);
|
||||
#271=ORIENTED_EDGE('',*,*,#215,.F.);
|
||||
#272=ORIENTED_EDGE('',*,*,#216,.T.);
|
||||
#273=ORIENTED_EDGE('',*,*,#217,.T.);
|
||||
#274=ORIENTED_EDGE('',*,*,#216,.F.);
|
||||
#275=ORIENTED_EDGE('',*,*,#218,.F.);
|
||||
#276=ORIENTED_EDGE('',*,*,#219,.T.);
|
||||
#277=ORIENTED_EDGE('',*,*,#220,.T.);
|
||||
#278=ORIENTED_EDGE('',*,*,#219,.F.);
|
||||
#279=ORIENTED_EDGE('',*,*,#221,.F.);
|
||||
#280=ORIENTED_EDGE('',*,*,#209,.T.);
|
||||
#281=ORIENTED_EDGE('',*,*,#222,.F.);
|
||||
#282=ORIENTED_EDGE('',*,*,#204,.F.);
|
||||
#283=ORIENTED_EDGE('',*,*,#223,.F.);
|
||||
#284=ORIENTED_EDGE('',*,*,#224,.T.);
|
||||
#285=ORIENTED_EDGE('',*,*,#225,.T.);
|
||||
#286=ORIENTED_EDGE('',*,*,#224,.F.);
|
||||
#287=ORIENTED_EDGE('',*,*,#195,.T.);
|
||||
#288=ORIENTED_EDGE('',*,*,#226,.F.);
|
||||
#289=ORIENTED_EDGE('',*,*,#227,.F.);
|
||||
#290=ORIENTED_EDGE('',*,*,#228,.T.);
|
||||
#291=ORIENTED_EDGE('',*,*,#229,.T.);
|
||||
#292=ORIENTED_EDGE('',*,*,#230,.F.);
|
||||
#293=ORIENTED_EDGE('',*,*,#191,.T.);
|
||||
#294=ORIENTED_EDGE('',*,*,#199,.T.);
|
||||
#295=ORIENTED_EDGE('',*,*,#231,.T.);
|
||||
#296=ORIENTED_EDGE('',*,*,#227,.T.);
|
||||
#297=ORIENTED_EDGE('',*,*,#232,.F.);
|
||||
#298=ORIENTED_EDGE('',*,*,#233,.F.);
|
||||
#299=ORIENTED_EDGE('',*,*,#234,.T.);
|
||||
#300=ORIENTED_EDGE('',*,*,#233,.T.);
|
||||
#301=ORIENTED_EDGE('',*,*,#235,.F.);
|
||||
#302=ORIENTED_EDGE('',*,*,#236,.F.);
|
||||
#303=ORIENTED_EDGE('',*,*,#237,.T.);
|
||||
#304=ORIENTED_EDGE('',*,*,#236,.T.);
|
||||
#305=ORIENTED_EDGE('',*,*,#238,.F.);
|
||||
#306=ORIENTED_EDGE('',*,*,#229,.F.);
|
||||
#307=ORIENTED_EDGE('',*,*,#198,.T.);
|
||||
#308=ORIENTED_EDGE('',*,*,#205,.T.);
|
||||
#309=ORIENTED_EDGE('',*,*,#222,.T.);
|
||||
#310=ORIENTED_EDGE('',*,*,#208,.T.);
|
||||
#311=ORIENTED_EDGE('',*,*,#211,.T.);
|
||||
#312=ORIENTED_EDGE('',*,*,#201,.T.);
|
||||
#313=ORIENTED_EDGE('',*,*,#192,.T.);
|
||||
#314=ORIENTED_EDGE('',*,*,#230,.T.);
|
||||
#315=ORIENTED_EDGE('',*,*,#238,.T.);
|
||||
#316=ORIENTED_EDGE('',*,*,#235,.T.);
|
||||
#317=ORIENTED_EDGE('',*,*,#232,.T.);
|
||||
#318=ORIENTED_EDGE('',*,*,#226,.T.);
|
||||
#319=ORIENTED_EDGE('',*,*,#223,.T.);
|
||||
#320=ORIENTED_EDGE('',*,*,#218,.T.);
|
||||
#321=ORIENTED_EDGE('',*,*,#215,.T.);
|
||||
#322=ORIENTED_EDGE('',*,*,#212,.T.);
|
||||
#323=ORIENTED_EDGE('',*,*,#210,.T.);
|
||||
#324=ORIENTED_EDGE('',*,*,#206,.T.);
|
||||
#325=ORIENTED_EDGE('',*,*,#221,.T.);
|
||||
#326=ORIENTED_EDGE('',*,*,#203,.T.);
|
||||
#327=ORIENTED_EDGE('',*,*,#237,.F.);
|
||||
#328=ORIENTED_EDGE('',*,*,#228,.F.);
|
||||
#329=ORIENTED_EDGE('',*,*,#231,.F.);
|
||||
#330=ORIENTED_EDGE('',*,*,#234,.F.);
|
||||
#331=ORIENTED_EDGE('',*,*,#214,.F.);
|
||||
#332=ORIENTED_EDGE('',*,*,#217,.F.);
|
||||
#333=ORIENTED_EDGE('',*,*,#220,.F.);
|
||||
#334=ORIENTED_EDGE('',*,*,#225,.F.);
|
||||
#335=PLANE('',#381);
|
||||
#336=PLANE('',#382);
|
||||
#337=PLANE('',#383);
|
||||
#338=PLANE('',#384);
|
||||
#339=PLANE('',#385);
|
||||
#340=PLANE('',#386);
|
||||
#341=PLANE('',#396);
|
||||
#342=PLANE('',#400);
|
||||
#343=PLANE('',#401);
|
||||
#344=PLANE('',#402);
|
||||
#345=PLANE('',#403);
|
||||
#346=PLANE('',#404);
|
||||
#347=PLANE('',#405);
|
||||
#348=PLANE('',#406);
|
||||
#349=ADVANCED_FACE('',(#35),#335,.F.);
|
||||
#350=ADVANCED_FACE('',(#36),#336,.F.);
|
||||
#351=ADVANCED_FACE('',(#37),#337,.F.);
|
||||
#352=ADVANCED_FACE('',(#38),#338,.T.);
|
||||
#353=ADVANCED_FACE('',(#39),#339,.T.);
|
||||
#354=ADVANCED_FACE('',(#40),#340,.T.);
|
||||
#355=ADVANCED_FACE('',(#41),#31,.F.);
|
||||
#356=ADVANCED_FACE('',(#42),#32,.F.);
|
||||
#357=ADVANCED_FACE('',(#43),#33,.F.);
|
||||
#358=ADVANCED_FACE('',(#44),#341,.T.);
|
||||
#359=ADVANCED_FACE('',(#45),#34,.F.);
|
||||
#360=ADVANCED_FACE('',(#46),#342,.T.);
|
||||
#361=ADVANCED_FACE('',(#47),#343,.T.);
|
||||
#362=ADVANCED_FACE('',(#48),#344,.T.);
|
||||
#363=ADVANCED_FACE('',(#49),#345,.T.);
|
||||
#364=ADVANCED_FACE('',(#50,#15,#16,#17,#18),#346,.T.);
|
||||
#365=ADVANCED_FACE('',(#51),#347,.T.);
|
||||
#366=ADVANCED_FACE('',(#52,#19,#20,#21,#22),#348,.F.);
|
||||
#367=CLOSED_SHELL('',(#349,#350,#351,#352,#353,#354,#355,#356,#357,#358,
|
||||
#359,#360,#361,#362,#363,#364,#365,#366));
|
||||
#368=DERIVED_UNIT_ELEMENT(#370,1.);
|
||||
#369=DERIVED_UNIT_ELEMENT(#605,-3.);
|
||||
#370=(
|
||||
MASS_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT(.KILO.,.GRAM.)
|
||||
);
|
||||
#371=DERIVED_UNIT((#368,#369));
|
||||
#372=MEASURE_REPRESENTATION_ITEM('density measure',
|
||||
POSITIVE_RATIO_MEASURE(7850.),#371);
|
||||
#373=PROPERTY_DEFINITION_REPRESENTATION(#378,#375);
|
||||
#374=PROPERTY_DEFINITION_REPRESENTATION(#379,#376);
|
||||
#375=REPRESENTATION('material name',(#377),#602);
|
||||
#376=REPRESENTATION('density',(#372),#602);
|
||||
#377=DESCRIPTIVE_REPRESENTATION_ITEM('Steel','Steel');
|
||||
#378=PROPERTY_DEFINITION('material property','material name',#612);
|
||||
#379=PROPERTY_DEFINITION('material property','density of part',#612);
|
||||
#380=AXIS2_PLACEMENT_3D('',#501,#407,#408);
|
||||
#381=AXIS2_PLACEMENT_3D('',#502,#409,#410);
|
||||
#382=AXIS2_PLACEMENT_3D('',#511,#415,#416);
|
||||
#383=AXIS2_PLACEMENT_3D('',#520,#421,#422);
|
||||
#384=AXIS2_PLACEMENT_3D('',#523,#425,#426);
|
||||
#385=AXIS2_PLACEMENT_3D('',#533,#432,#433);
|
||||
#386=AXIS2_PLACEMENT_3D('',#542,#438,#439);
|
||||
#387=AXIS2_PLACEMENT_3D('',#545,#442,#443);
|
||||
#388=AXIS2_PLACEMENT_3D('',#547,#444,#445);
|
||||
#389=AXIS2_PLACEMENT_3D('',#550,#447,#448);
|
||||
#390=AXIS2_PLACEMENT_3D('',#551,#449,#450);
|
||||
#391=AXIS2_PLACEMENT_3D('',#553,#451,#452);
|
||||
#392=AXIS2_PLACEMENT_3D('',#556,#454,#455);
|
||||
#393=AXIS2_PLACEMENT_3D('',#557,#456,#457);
|
||||
#394=AXIS2_PLACEMENT_3D('',#559,#458,#459);
|
||||
#395=AXIS2_PLACEMENT_3D('',#562,#461,#462);
|
||||
#396=AXIS2_PLACEMENT_3D('',#563,#463,#464);
|
||||
#397=AXIS2_PLACEMENT_3D('',#566,#467,#468);
|
||||
#398=AXIS2_PLACEMENT_3D('',#568,#469,#470);
|
||||
#399=AXIS2_PLACEMENT_3D('',#571,#472,#473);
|
||||
#400=AXIS2_PLACEMENT_3D('',#572,#474,#475);
|
||||
#401=AXIS2_PLACEMENT_3D('',#582,#481,#482);
|
||||
#402=AXIS2_PLACEMENT_3D('',#588,#486,#487);
|
||||
#403=AXIS2_PLACEMENT_3D('',#594,#491,#492);
|
||||
#404=AXIS2_PLACEMENT_3D('',#597,#495,#496);
|
||||
#405=AXIS2_PLACEMENT_3D('',#598,#497,#498);
|
||||
#406=AXIS2_PLACEMENT_3D('',#599,#499,#500);
|
||||
#407=DIRECTION('axis',(0.,0.,1.));
|
||||
#408=DIRECTION('refdir',(1.,0.,0.));
|
||||
#409=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#410=DIRECTION('ref_axis',(0.,0.,-1.));
|
||||
#411=DIRECTION('',(0.,0.,-1.));
|
||||
#412=DIRECTION('',(0.,1.,0.));
|
||||
#413=DIRECTION('',(0.,0.,1.));
|
||||
#414=DIRECTION('',(0.,-1.,0.));
|
||||
#415=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#416=DIRECTION('ref_axis',(0.,0.,1.));
|
||||
#417=DIRECTION('',(0.,0.,1.));
|
||||
#418=DIRECTION('',(0.,-1.,0.));
|
||||
#419=DIRECTION('',(0.,0.,-1.));
|
||||
#420=DIRECTION('',(0.,-1.,0.));
|
||||
#421=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#422=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#423=DIRECTION('',(1.,0.,0.));
|
||||
#424=DIRECTION('',(-1.,0.,0.));
|
||||
#425=DIRECTION('center_axis',(0.,-1.,0.));
|
||||
#426=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#427=DIRECTION('',(1.,0.,0.));
|
||||
#428=DIRECTION('',(0.,0.,1.));
|
||||
#429=DIRECTION('',(-1.,0.,0.));
|
||||
#430=DIRECTION('',(0.,0.,1.));
|
||||
#431=DIRECTION('',(1.,0.,0.));
|
||||
#432=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#433=DIRECTION('ref_axis',(-1.,0.,0.));
|
||||
#434=DIRECTION('',(1.,0.,0.));
|
||||
#435=DIRECTION('',(0.,0.,1.));
|
||||
#436=DIRECTION('',(-1.,0.,0.));
|
||||
#437=DIRECTION('',(0.,0.,1.));
|
||||
#438=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#439=DIRECTION('ref_axis',(0.,1.,0.));
|
||||
#440=DIRECTION('',(0.,-1.,0.));
|
||||
#441=DIRECTION('',(0.,1.,0.));
|
||||
#442=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#443=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#444=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#445=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#446=DIRECTION('',(0.,0.,-1.));
|
||||
#447=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#448=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#449=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#450=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#451=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#452=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#453=DIRECTION('',(0.,0.,-1.));
|
||||
#454=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#455=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#456=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#457=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#458=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#459=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#460=DIRECTION('',(0.,0.,-1.));
|
||||
#461=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#462=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#463=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#464=DIRECTION('ref_axis',(0.,-1.,0.));
|
||||
#465=DIRECTION('',(0.,1.,0.));
|
||||
#466=DIRECTION('',(0.,-1.,0.));
|
||||
#467=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#468=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#469=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#470=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#471=DIRECTION('',(0.,0.,-1.));
|
||||
#472=DIRECTION('center_axis',(0.,0.,-1.));
|
||||
#473=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#474=DIRECTION('center_axis',(0.,1.,0.));
|
||||
#475=DIRECTION('ref_axis',(-1.,0.,0.));
|
||||
#476=DIRECTION('',(-1.,0.,0.));
|
||||
#477=DIRECTION('',(0.,0.,1.));
|
||||
#478=DIRECTION('',(-1.,0.,0.));
|
||||
#479=DIRECTION('',(0.,0.,1.));
|
||||
#480=DIRECTION('',(-1.,0.,0.));
|
||||
#481=DIRECTION('center_axis',(1.,0.,0.));
|
||||
#482=DIRECTION('ref_axis',(0.,1.,0.));
|
||||
#483=DIRECTION('',(0.,1.,0.));
|
||||
#484=DIRECTION('',(0.,1.,0.));
|
||||
#485=DIRECTION('',(0.,0.,1.));
|
||||
#486=DIRECTION('center_axis',(0.,-1.,0.));
|
||||
#487=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#488=DIRECTION('',(1.,0.,0.));
|
||||
#489=DIRECTION('',(1.,0.,0.));
|
||||
#490=DIRECTION('',(0.,0.,1.));
|
||||
#491=DIRECTION('center_axis',(-1.,0.,0.));
|
||||
#492=DIRECTION('ref_axis',(0.,-1.,0.));
|
||||
#493=DIRECTION('',(0.,-1.,0.));
|
||||
#494=DIRECTION('',(0.,-1.,0.));
|
||||
#495=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#496=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#497=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#498=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#499=DIRECTION('center_axis',(0.,0.,1.));
|
||||
#500=DIRECTION('ref_axis',(1.,0.,0.));
|
||||
#501=CARTESIAN_POINT('',(0.,0.,0.));
|
||||
#502=CARTESIAN_POINT('Origin',(12.0000001788139,108.,13.));
|
||||
#503=CARTESIAN_POINT('',(12.0000001788139,108.,13.));
|
||||
#504=CARTESIAN_POINT('',(12.0000001788139,108.,8.00000011920929));
|
||||
#505=CARTESIAN_POINT('',(12.0000001788139,108.,6.5));
|
||||
#506=CARTESIAN_POINT('',(12.0000001788139,98.,13.));
|
||||
#507=CARTESIAN_POINT('',(12.0000001788139,78.5,13.));
|
||||
#508=CARTESIAN_POINT('',(12.0000001788139,98.,8.00000011920929));
|
||||
#509=CARTESIAN_POINT('',(12.0000001788139,98.,6.5));
|
||||
#510=CARTESIAN_POINT('',(12.0000001788139,108.,8.00000011920929));
|
||||
#511=CARTESIAN_POINT('Origin',(32.0000004768372,108.,8.00000011920929));
|
||||
#512=CARTESIAN_POINT('',(32.0000004768372,108.,8.00000011920929));
|
||||
#513=CARTESIAN_POINT('',(32.0000004768372,108.,13.));
|
||||
#514=CARTESIAN_POINT('',(32.0000004768372,108.,4.00000005960464));
|
||||
#515=CARTESIAN_POINT('',(32.0000004768372,98.,8.00000011920929));
|
||||
#516=CARTESIAN_POINT('',(32.0000004768372,108.,8.00000011920929));
|
||||
#517=CARTESIAN_POINT('',(32.0000004768372,98.,13.));
|
||||
#518=CARTESIAN_POINT('',(32.0000004768372,98.,4.00000005960464));
|
||||
#519=CARTESIAN_POINT('',(32.0000004768372,78.5,13.));
|
||||
#520=CARTESIAN_POINT('Origin',(12.0000001788139,108.,8.00000011920929));
|
||||
#521=CARTESIAN_POINT('',(57.750000089407,108.,8.00000011920929));
|
||||
#522=CARTESIAN_POINT('',(6.00000008940697,98.,8.00000011920929));
|
||||
#523=CARTESIAN_POINT('Origin',(0.,98.,0.));
|
||||
#524=CARTESIAN_POINT('',(0.,98.,13.));
|
||||
#525=CARTESIAN_POINT('',(93.5,98.,13.));
|
||||
#526=CARTESIAN_POINT('',(0.,98.,3.));
|
||||
#527=CARTESIAN_POINT('',(0.,98.,0.));
|
||||
#528=CARTESIAN_POINT('',(93.5,98.,3.));
|
||||
#529=CARTESIAN_POINT('',(93.5,98.,3.));
|
||||
#530=CARTESIAN_POINT('',(93.5,98.,13.));
|
||||
#531=CARTESIAN_POINT('',(93.5,98.,0.));
|
||||
#532=CARTESIAN_POINT('',(93.5,98.,13.));
|
||||
#533=CARTESIAN_POINT('Origin',(93.5,0.,0.));
|
||||
#534=CARTESIAN_POINT('',(0.,0.,3.));
|
||||
#535=CARTESIAN_POINT('',(93.5,0.,3.));
|
||||
#536=CARTESIAN_POINT('',(0.,0.,3.));
|
||||
#537=CARTESIAN_POINT('',(0.,0.,13.));
|
||||
#538=CARTESIAN_POINT('',(0.,0.,0.));
|
||||
#539=CARTESIAN_POINT('',(93.5,0.,13.));
|
||||
#540=CARTESIAN_POINT('',(0.,0.,13.));
|
||||
#541=CARTESIAN_POINT('',(93.5,0.,0.));
|
||||
#542=CARTESIAN_POINT('Origin',(0.,0.,0.));
|
||||
#543=CARTESIAN_POINT('',(0.,98.,3.));
|
||||
#544=CARTESIAN_POINT('',(0.,98.,13.));
|
||||
#545=CARTESIAN_POINT('Origin',(98.500001475215,-5.00000007450581,0.));
|
||||
#546=CARTESIAN_POINT('',(97.050001475215,-5.00000007450581,13.));
|
||||
#547=CARTESIAN_POINT('Origin',(98.500001475215,-5.00000007450581,13.));
|
||||
#548=CARTESIAN_POINT('',(97.050001475215,-5.00000007450581,0.));
|
||||
#549=CARTESIAN_POINT('',(97.050001475215,-5.00000007450581,0.));
|
||||
#550=CARTESIAN_POINT('Origin',(98.500001475215,-5.00000007450581,0.));
|
||||
#551=CARTESIAN_POINT('Origin',(-5.00000007450581,103.00000153482,0.));
|
||||
#552=CARTESIAN_POINT('',(-6.4500000745058,103.00000153482,13.));
|
||||
#553=CARTESIAN_POINT('Origin',(-5.00000007450581,103.00000153482,13.));
|
||||
#554=CARTESIAN_POINT('',(-6.4500000745058,103.00000153482,0.));
|
||||
#555=CARTESIAN_POINT('',(-6.4500000745058,103.00000153482,0.));
|
||||
#556=CARTESIAN_POINT('Origin',(-5.00000007450581,103.00000153482,0.));
|
||||
#557=CARTESIAN_POINT('Origin',(98.5000014603138,103.00000153482,0.));
|
||||
#558=CARTESIAN_POINT('',(97.0500014603138,103.00000153482,13.));
|
||||
#559=CARTESIAN_POINT('Origin',(98.5000014603138,103.00000153482,13.));
|
||||
#560=CARTESIAN_POINT('',(97.0500014603138,103.00000153482,0.));
|
||||
#561=CARTESIAN_POINT('',(97.0500014603138,103.00000153482,0.));
|
||||
#562=CARTESIAN_POINT('Origin',(98.5000014603138,103.00000153482,0.));
|
||||
#563=CARTESIAN_POINT('Origin',(93.5,98.,0.));
|
||||
#564=CARTESIAN_POINT('',(93.5,0.,3.));
|
||||
#565=CARTESIAN_POINT('',(93.5,0.,13.));
|
||||
#566=CARTESIAN_POINT('Origin',(-5.00000007450581,-5.00000007450581,0.));
|
||||
#567=CARTESIAN_POINT('',(-6.45000007450581,-5.00000007450581,13.));
|
||||
#568=CARTESIAN_POINT('Origin',(-5.00000007450581,-5.00000007450581,13.));
|
||||
#569=CARTESIAN_POINT('',(-6.45000007450581,-5.00000007450581,0.));
|
||||
#570=CARTESIAN_POINT('',(-6.45000007450581,-5.00000007450581,0.));
|
||||
#571=CARTESIAN_POINT('Origin',(-5.00000007450581,-5.00000007450581,0.));
|
||||
#572=CARTESIAN_POINT('Origin',(103.5,108.,0.));
|
||||
#573=CARTESIAN_POINT('',(103.5,108.,13.));
|
||||
#574=CARTESIAN_POINT('',(103.5,108.,13.));
|
||||
#575=CARTESIAN_POINT('',(103.5,108.,0.));
|
||||
#576=CARTESIAN_POINT('',(103.5,108.,0.));
|
||||
#577=CARTESIAN_POINT('',(-10.,108.,0.));
|
||||
#578=CARTESIAN_POINT('',(103.5,108.,0.));
|
||||
#579=CARTESIAN_POINT('',(-10.,108.,13.));
|
||||
#580=CARTESIAN_POINT('',(-10.,108.,0.));
|
||||
#581=CARTESIAN_POINT('',(103.5,108.,13.));
|
||||
#582=CARTESIAN_POINT('Origin',(103.5,-10.,0.));
|
||||
#583=CARTESIAN_POINT('',(103.5,-10.,0.));
|
||||
#584=CARTESIAN_POINT('',(103.5,-10.,0.));
|
||||
#585=CARTESIAN_POINT('',(103.5,-10.,13.));
|
||||
#586=CARTESIAN_POINT('',(103.5,-10.,13.));
|
||||
#587=CARTESIAN_POINT('',(103.5,-10.,0.));
|
||||
#588=CARTESIAN_POINT('Origin',(-10.,-10.,0.));
|
||||
#589=CARTESIAN_POINT('',(-10.,-10.,0.));
|
||||
#590=CARTESIAN_POINT('',(-10.,-10.,0.));
|
||||
#591=CARTESIAN_POINT('',(-10.,-10.,13.));
|
||||
#592=CARTESIAN_POINT('',(-10.,-10.,13.));
|
||||
#593=CARTESIAN_POINT('',(-10.,-10.,0.));
|
||||
#594=CARTESIAN_POINT('Origin',(-10.,108.,0.));
|
||||
#595=CARTESIAN_POINT('',(-10.,108.,0.));
|
||||
#596=CARTESIAN_POINT('',(-10.,108.,13.));
|
||||
#597=CARTESIAN_POINT('Origin',(46.75,49.,13.));
|
||||
#598=CARTESIAN_POINT('Origin',(46.75,49.,3.));
|
||||
#599=CARTESIAN_POINT('Origin',(46.75,49.,0.));
|
||||
#600=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#604,
|
||||
'DISTANCE_ACCURACY_VALUE',
|
||||
'Maximum model space distance between geometric entities at asserted c
|
||||
onnectivities');
|
||||
#601=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.01),#604,
|
||||
'DISTANCE_ACCURACY_VALUE',
|
||||
'Maximum model space distance between geometric entities at asserted c
|
||||
onnectivities');
|
||||
#602=(
|
||||
GEOMETRIC_REPRESENTATION_CONTEXT(3)
|
||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#600))
|
||||
GLOBAL_UNIT_ASSIGNED_CONTEXT((#604,#606,#607))
|
||||
REPRESENTATION_CONTEXT('','3D')
|
||||
);
|
||||
#603=(
|
||||
GEOMETRIC_REPRESENTATION_CONTEXT(3)
|
||||
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#601))
|
||||
GLOBAL_UNIT_ASSIGNED_CONTEXT((#604,#606,#607))
|
||||
REPRESENTATION_CONTEXT('','3D')
|
||||
);
|
||||
#604=(
|
||||
LENGTH_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT(.MILLI.,.METRE.)
|
||||
);
|
||||
#605=(
|
||||
LENGTH_UNIT()
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT($,.METRE.)
|
||||
);
|
||||
#606=(
|
||||
NAMED_UNIT(*)
|
||||
PLANE_ANGLE_UNIT()
|
||||
SI_UNIT($,.RADIAN.)
|
||||
);
|
||||
#607=(
|
||||
NAMED_UNIT(*)
|
||||
SI_UNIT($,.STERADIAN.)
|
||||
SOLID_ANGLE_UNIT()
|
||||
);
|
||||
#608=SHAPE_DEFINITION_REPRESENTATION(#609,#610);
|
||||
#609=PRODUCT_DEFINITION_SHAPE('',$,#612);
|
||||
#610=SHAPE_REPRESENTATION('',(#380),#602);
|
||||
#611=PRODUCT_DEFINITION_CONTEXT('part definition',#616,'design');
|
||||
#612=PRODUCT_DEFINITION('FusionComponent','FusionComponent',#613,#611);
|
||||
#613=PRODUCT_DEFINITION_FORMATION('',$,#618);
|
||||
#614=PRODUCT_RELATED_PRODUCT_CATEGORY('FusionComponent',
|
||||
'FusionComponent',(#618));
|
||||
#615=APPLICATION_PROTOCOL_DEFINITION('international standard',
|
||||
'automotive_design',2009,#616);
|
||||
#616=APPLICATION_CONTEXT(
|
||||
'Core Data for Automotive Mechanical Design Process');
|
||||
#617=PRODUCT_CONTEXT('part definition',#616,'mechanical');
|
||||
#618=PRODUCT('FusionComponent','FusionComponent',$,(#617));
|
||||
#619=PRESENTATION_STYLE_ASSIGNMENT((#620));
|
||||
#620=SURFACE_STYLE_USAGE(.BOTH.,#621);
|
||||
#621=SURFACE_SIDE_STYLE('',(#622));
|
||||
#622=SURFACE_STYLE_FILL_AREA(#623);
|
||||
#623=FILL_AREA_STYLE('Steel - Satin',(#624));
|
||||
#624=FILL_AREA_STYLE_COLOUR('Steel - Satin',#625);
|
||||
#625=COLOUR_RGB('Steel - Satin',0.627450980392157,0.627450980392157,0.627450980392157);
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
BIN
hackpads/N0PAD/cad/case/bottom.stl
Normal file
BIN
hackpads/N0PAD/cad/case/case.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
hackpads/N0PAD/cad/case/top.stl
Normal file
1554
hackpads/N0PAD/cad/plate-2024-10-06T07_43_05.166Z.dxf
Normal file
4016
hackpads/N0PAD/cad/top.step
Normal file
44
hackpads/N0PAD/firmware/KMK/main.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
print("RMS Titanic departing")
|
||||
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠜⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⠿⠿⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⡏⠁⠀⠀⠀⠀⠀⣀⣠⣤⣤⣶⣶⣶⣶⣶⣦⣤⡄⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣷⣄⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡧⠇⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣾⣮⣭⣿⡻⣽⣒⠀⣤⣜⣭⠐⢐⣒⠢⢰⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣏⣿⣿⣿⣿⣿⣿⡟⣾⣿⠂⢈⢿⣷⣞⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣷⣶⣾⡿⠿⣿⠗⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⠋⠉⠑⠀⠀⢘⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⡿⠟⢹⣿⣿⡇⢀⣶⣶⠴⠶⠀⠀⢽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⡿⠀⠀⢸⣿⣿⠀⠀⠣⠀⠀⠀⠀⠀⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀⠹⣿⣧⣀⠀⠀⠀⠀⡀⣴⠁⢘⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⠗⠂⠄⠀⣴⡟⠀⠀⡃⠀⠉⠉⠟⡿⣿⣿⣿⣿
|
||||
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⠾⠛⠂⢹⠀⠀⠀⢡⠀⠀⠀⠀⠀⠙⠛⠿⢿
|
||||
|
||||
import board
|
||||
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.scanners import DiodeOrientation
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
keyboard.col_pins = (board.GP6, board.GP29, board.GP28, board.GP27, board.GP26,)
|
||||
keyboard.row_pins = (board.GP2, board.GP1, board.GP0, board.GP7,)
|
||||
keyboard.encoder_handler.pins = (board.GP4, board.GP3, None, True, 2,)
|
||||
keyboard.diode_orientation = DiodeOrientation.COL2ROW
|
||||
|
||||
keyboard.keymap = [
|
||||
[KC.P7,][KC.P8,][KC.P9,][KC.NUMLOCK,]
|
||||
[KC.P4,][KC.P5,][KC.P6,][KC.PMNS,]
|
||||
[KC.P1,][KC.P2,][KC.P3,][KC.PPLS,]
|
||||
[KC.P0,][KC.PENT,]
|
||||
]
|
||||
|
||||
keyboard.encoder_handler.map = [ (KC.UP, KC.DOWN, KC.MSTP), ]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
22629
hackpads/N0PAD/pcb/N0PAD-brd.svg
Normal file
|
After Width: | Height: | Size: 451 KiB |
5882
hackpads/N0PAD/pcb/N0PAD-pcb-2.step
Normal file
5882
hackpads/N0PAD/pcb/N0PAD-pcb.step
Normal file
18565
hackpads/N0PAD/pcb/N0PAD.kicad_pcb
Normal file
83
hackpads/N0PAD/pcb/N0PAD.kicad_prl
Normal 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": "N0PAD.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
584
hackpads/N0PAD/pcb/N0PAD.kicad_pro
Normal 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": "N0PAD.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": "gerbers/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "N0PAD-pcb-2.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": [
|
||||
[
|
||||
"ba839921-44d7-4381-aaf4-a15d1c3227be",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
4896
hackpads/N0PAD/pcb/N0PAD.kicad_sch
Normal file
BIN
hackpads/N0PAD/pcb/gerbers.7z
Normal file
BIN
hackpads/N0PAD/pcb/gerbers_old.zip
Normal file
BIN
hackpads/N0PAD/pcb/pcb.png
Normal file
|
After Width: | Height: | Size: 337 KiB |
1713
hackpads/N0PAD/pcb/plots/N0PAD__Assembly.pdf
Normal file
BIN
hackpads/N0PAD/pcb/schematic.png
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
hackpads/N0PAD/production/bottom.stl
Normal file
BIN
hackpads/N0PAD/production/gerbers.zip
Normal file
44
hackpads/N0PAD/production/main.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
print("RMS Titanic departing")
|
||||
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠜⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⠿⠿⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⡏⠁⠀⠀⠀⠀⠀⣀⣠⣤⣤⣶⣶⣶⣶⣶⣦⣤⡄⠀⠀⠀⠀⢀⣴⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣷⣄⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡧⠇⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣾⣮⣭⣿⡻⣽⣒⠀⣤⣜⣭⠐⢐⣒⠢⢰⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣏⣿⣿⣿⣿⣿⣿⡟⣾⣿⠂⢈⢿⣷⣞⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣷⣶⣾⡿⠿⣿⠗⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⠋⠉⠑⠀⠀⢘⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⣿⡿⠟⢹⣿⣿⡇⢀⣶⣶⠴⠶⠀⠀⢽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⣿⣿⣿⡿⠀⠀⢸⣿⣿⠀⠀⠣⠀⠀⠀⠀⠀⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀⠹⣿⣧⣀⠀⠀⠀⠀⡀⣴⠁⢘⡙⢿⣿⣿⣿⣿⣿⣿⣿⣿
|
||||
# ⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⠗⠂⠄⠀⣴⡟⠀⠀⡃⠀⠉⠉⠟⡿⣿⣿⣿⣿
|
||||
# ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢷⠾⠛⠂⢹⠀⠀⠀⢡⠀⠀⠀⠀⠀⠙⠛⠿⢿
|
||||
|
||||
import board
|
||||
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.keys import KC
|
||||
from kmk.scanners import DiodeOrientation
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
keyboard.col_pins = (board.GP6, board.GP29, board.GP28, board.GP27, board.GP26,)
|
||||
keyboard.row_pins = (board.GP2, board.GP1, board.GP0, board.GP7,)
|
||||
keyboard.encoder_handler.pins = (board.GP4, board.GP3, None, True, 2,)
|
||||
keyboard.diode_orientation = DiodeOrientation.COL2ROW
|
||||
|
||||
keyboard.keymap = [
|
||||
[KC.P7,][KC.P8,][KC.P9,][KC.NUMLOCK,]
|
||||
[KC.P4,][KC.P5,][KC.P6,][KC.PMNS,]
|
||||
[KC.P1,][KC.P2,][KC.P3,][KC.PPLS,]
|
||||
[KC.P0,][KC.PENT,]
|
||||
]
|
||||
|
||||
keyboard.encoder_handler.map = [ (KC.UP, KC.DOWN, KC.MSTP), ]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
BIN
hackpads/N0PAD/production/top.stl
Normal file
53
hackpads/N0PAD/readme.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# N0BUDGET N0PAD
|
||||
|
||||
## !!!IMPORTANT NOTICE!!!
|
||||
### THIS HACKPAD WAS MADE DURING V1 BUT NOT ACCEPTED
|
||||
|
||||
### slack handle: spacevini8
|
||||
|
||||
## features
|
||||
|
||||
- pain
|
||||
- 14 awesome keys!
|
||||
- a knob! (not that kind, brits!)
|
||||
- heisengberg! (look on the PCB!)
|
||||
- and nothing else! because I'm lazy!
|
||||
|
||||
## cad model
|
||||
|
||||
it's literally just a brick!
|
||||
|
||||
[](http://github.com/spacevini8/N0PAD/blob/main/hackpads/N0PAD/cad/case/case.png?raw=true "it's a brick")
|
||||
|
||||
made in fusion 360 (pain!)
|
||||
|
||||
## pcb
|
||||
|
||||
My pcb made in KiCad! With some random images, like heisenberg, democracy, stuff like that.
|
||||
|
||||
PCB:
|
||||
|
||||
[](http://github.com/spacevini8/N0PAD/blob/main/hackpads/N0PAD/pcb/pcb.png?raw=true "jessie! we need to hack!")
|
||||
|
||||
Schematic:
|
||||
|
||||
[](https://github.com/spacevini8/N0PAD/blob/main/hackpads/N0PAD/pcb/schematic.png?raw=true "it's a schematic!")
|
||||
|
||||
## firmware
|
||||
|
||||
it's made in KMK, that's kinda it really, I really don't know what I'm doing!
|
||||
currently made to act as a number pad as I don't have one
|
||||
|
||||
# BOM:
|
||||
- 1x Seeed XIAO RP2040 (obviously)
|
||||
- 14x Cherry MX switches
|
||||
- 3x PCB (blue)
|
||||
- 15x Diodes
|
||||
- 14x Keycaps (blank)
|
||||
- 1x 3D Printed case
|
||||
- 4x Screws
|
||||
- 1x EC11 rotary encoder
|
||||
|
||||
## extra stuff
|
||||
|
||||
Please make the PCB blue if you can, ya know, because, heisenberg.
|
||||
BIN
hackpads/PANDAmonium-Components-Board/CAD/Full_Case.3mf
Normal file
4
hackpads/PANDAmonium-Components-Board/PCB/BOM.csv
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
"Id";"Designator";"Footprint";"Quantity";"Designation";"Supplier and ref";
|
||||
1;"SW6,SW9,SW1,SW4,SW7,SW2,SW5,SW3,SW8";"SW_Cherry_MX_1.00u_PCB";9;"SW_Push";;;
|
||||
2;"D1,D2";"LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm";2;"SK6812MINI";;;
|
||||
3;"U1";"XIAO-RP2040-DIP";1;"XIAO-RP2040-DIP";;;
|
||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
4867
hackpads/PANDAmonium-Components-Board/PCB/pandamonium.kicad_pcb
Normal file
584
hackpads/PANDAmonium-Components-Board/PCB/pandamonium.kicad_pro
Normal 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.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": "",
|
||||
"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": [
|
||||
[
|
||||
"dcdb37e6-78ac-4655-9eff-2f8fa35accc5",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
2951
hackpads/PANDAmonium-Components-Board/PCB/pandamonium.kicad_sch
Normal file
28
hackpads/PANDAmonium-Components-Board/README.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# PANDAmonium Components Board
|
||||
The PANDAmonium Components board is a panda themed macropad designed by me (kai pereira);
|
||||
|
||||
It's a simple 9 key layout with some fun LED's and silly design.
|
||||
|
||||
I'm really happy I did this project because it heavily inspired me to turn away from just software and build more hardware projects.
|
||||
|
||||
## What I want to use it for
|
||||
I want to use my macropad to potentially make some complicated VIM motions like search and replace or smth and maybe for optimizing the browser experience.
|
||||
|
||||
## Features
|
||||
- 9 keys
|
||||
- RGB LED's
|
||||
- Panda themed case
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## BOM
|
||||
|
||||
- 1x XIAO-RP2040-DIP
|
||||
- 9x Cherry MX Switches
|
||||
- 2x SK6812 MINI LED
|
||||
|
||||
Expanded BOM in /PCB/BOM.csv
|
||||
|
After Width: | Height: | Size: 221 KiB |
|
After Width: | Height: | Size: 294 KiB |
|
After Width: | Height: | Size: 123 KiB |
26
hackpads/PANDAmonium-Components-Board/firmware/firmware.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import board
|
||||
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import KeysScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.macros import Press, Release, Tap, Macros
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
macros = Macros()
|
||||
keyboard.modules.append(macros)
|
||||
|
||||
PINS = [board.D1, board.D2, board.D3, board.D4, board.D5, board.D7, board.D8, board.D9, board.D10]
|
||||
|
||||
keyboard.matrix = KeysScanner(
|
||||
pins=PINS,
|
||||
value_when_pressed=False,
|
||||
)
|
||||
|
||||
# I dont want to do macros quite yet because they're pretty complicated
|
||||
keyboard.keymap = [
|
||||
[KC.A, KC.DELETE, KC.MACRO("Hello world!"), KC.Macro(Press(KC.LCMD), Tap(KC.S), Release(KC.LCMD)),]
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
BIN
hackpads/PANDAmonium-Components-Board/production/Bottom Case.stl
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.8-8.0.8-0~ubuntu24.04.1} date 2025-02-20T07:28:28-0800
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2025-02-20T07:28:28-08:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.8-8.0.8-0~ubuntu24.04.1
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T1C0.0669
|
||||
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
|
||||
T2C0.1575
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X4.675Y-2.8125
|
||||
X4.675Y-3.5625
|
||||
X4.675Y-4.3125
|
||||
X5.075Y-2.8125
|
||||
X5.075Y-3.5625
|
||||
X5.075Y-4.3125
|
||||
X5.425Y-2.8125
|
||||
X5.425Y-3.5625
|
||||
X5.425Y-4.3125
|
||||
X5.825Y-2.8125
|
||||
X5.825Y-3.5625
|
||||
X5.825Y-4.3125
|
||||
X6.175Y-2.8125
|
||||
X6.175Y-3.5625
|
||||
X6.175Y-4.3125
|
||||
X6.575Y-2.8125
|
||||
X6.575Y-3.5625
|
||||
X6.575Y-4.3125
|
||||
T2
|
||||
X4.875Y-2.8125
|
||||
X4.875Y-3.5625
|
||||
X4.875Y-4.3125
|
||||
X5.625Y-2.8125
|
||||
X5.625Y-3.5625
|
||||
X5.625Y-4.3125
|
||||
X6.375Y-2.8125
|
||||
X6.375Y-3.5625
|
||||
X6.375Y-4.3125
|
||||
M30
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
M48
|
||||
; DRILL file {KiCad 8.0.8-8.0.8-0~ubuntu24.04.1} date 2025-02-20T07:28:28-0800
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2025-02-20T07:28:28-08:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,8.0.8-8.0.8-0~ubuntu24.04.1
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T1C0.0350
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.0591
|
||||
%
|
||||
G90
|
||||
G05
|
||||
T1
|
||||
X5.325Y-1.575
|
||||
X5.325Y-1.675
|
||||
X5.325Y-1.775
|
||||
X5.325Y-1.875
|
||||
X5.325Y-1.975
|
||||
X5.325Y-2.075
|
||||
X5.325Y-2.175
|
||||
X5.925Y-1.575
|
||||
X5.925Y-1.675
|
||||
X5.925Y-1.775
|
||||
X5.925Y-1.875
|
||||
X5.925Y-1.975
|
||||
X5.925Y-2.075
|
||||
X5.925Y-2.175
|
||||
T2
|
||||
X4.725Y-2.7125
|
||||
X4.725Y-3.4625
|
||||
X4.725Y-4.2125
|
||||
X4.975Y-2.6125
|
||||
X4.975Y-3.3625
|
||||
X4.975Y-4.1125
|
||||
X5.475Y-2.7125
|
||||
X5.475Y-3.4625
|
||||
X5.475Y-4.2125
|
||||
X5.725Y-2.6125
|
||||
X5.725Y-3.3625
|
||||
X5.725Y-4.1125
|
||||
X6.225Y-2.7125
|
||||
X6.225Y-3.4625
|
||||
X6.225Y-4.2125
|
||||
X6.475Y-2.6125
|
||||
X6.475Y-3.3625
|
||||
X6.475Y-4.1125
|
||||
M30
|
||||
BIN
hackpads/PANDAmonium-Components-Board/production/Top Case.stl
Normal file
26
hackpads/PANDAmonium-Components-Board/production/firmware.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import board
|
||||
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.keypad import KeysScanner
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.macros import Press, Release, Tap, Macros
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
macros = Macros()
|
||||
keyboard.modules.append(macros)
|
||||
|
||||
PINS = [board.D1, board.D2, board.D3, board.D4, board.D5, board.D7, board.D8, board.D9, board.D10]
|
||||
|
||||
keyboard.matrix = KeysScanner(
|
||||
pins=PINS,
|
||||
value_when_pressed=False,
|
||||
)
|
||||
|
||||
# I dont want to do macros quite yet because they're pretty complicated
|
||||
keyboard.keymap = [
|
||||
[KC.A, KC.DELETE, KC.MACRO("Hello world!"), KC.Macro(Press(KC.LCMD), Tap(KC.S), Release(KC.LCMD)),]
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
BIN
hackpads/PANDAmonium-Components-Board/production/gerbers.zip
Normal file
415529
hackpads/RGBar/CAD/KW-01 RGBar V1.step
Normal file
9
hackpads/RGBar/Firmware/KMK/boot.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import board
|
||||
|
||||
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
|
||||
from kmk.scanners import DiodeOrientation
|
||||
|
||||
class KMKKeyboard(_KMKKeyboard):
|
||||
col_pins = (board.D2, board.D3, board.D4, board.D5)
|
||||
row_pins = (board.D1, board.D7)
|
||||
diode_orientation = DiodeOrientation.ROW2COL
|
||||
103
hackpads/RGBar/Firmware/KMK/main.py
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
'''
|
||||
KW-01 RGBar V1
|
||||
Untested code for a 2x4 macropad using the XIAO RP2040.
|
||||
Currently supports simple numpad function. Blocked on hardware assembly.
|
||||
'''
|
||||
|
||||
import board
|
||||
import neopixel
|
||||
from screen_brightness_control import set_brightness, get_brightness
|
||||
from kmk.kmk_keyboard import KMKKeyboard
|
||||
from kmk.scanners.matrix import MatrixScanner, DiodeOrientation
|
||||
from kmk.keys import KC
|
||||
from kmk.modules.macros import Press, Release, Tap, Macros
|
||||
from kmk.modules.encoder import EncoderHandler
|
||||
|
||||
# Initialize the NeoPixel chain
|
||||
NUM_PIXELS = 8
|
||||
pixels = neopixel.NeoPixel(board.D6, NUM_PIXELS, auto_write=False)
|
||||
keys_pressed = []
|
||||
|
||||
# Define colors for each key
|
||||
colors = [
|
||||
(255, 0, 0), # Red
|
||||
(0, 255, 0), # Green
|
||||
(0, 0, 255), # Blue
|
||||
(255, 255, 0), # Yellow
|
||||
(0, 255, 255), # Cyan
|
||||
(255, 0, 255), # Magenta
|
||||
(255, 255, 255),# White
|
||||
(128, 0, 128) # Purple
|
||||
]
|
||||
|
||||
|
||||
# Encoder rotation
|
||||
def encoder_handler(direction):
|
||||
SCREEN_BRIGHTNESS = get_brightness()
|
||||
if direction == 1:
|
||||
# Increase brightness
|
||||
print("Increase brightness")
|
||||
SCREEN_BRIGHTNESS += 1
|
||||
set_brightness(SCREEN_BRIGHTNESS)
|
||||
elif direction == -1:
|
||||
# Decrease brightness
|
||||
print("Decrease brightness")
|
||||
SCREEN_BRIGHTNESS -= 1
|
||||
set_brightness(SCREEN_BRIGHTNESS)
|
||||
|
||||
# Neopixel lighting
|
||||
def update_keys():
|
||||
for i in range(NUM_PIXELS):
|
||||
if i in keys_pressed:
|
||||
pixels[i] = colors[i]
|
||||
else:
|
||||
pixels[i] = (0, 0, 0)
|
||||
pixels.show()
|
||||
|
||||
def press(key):
|
||||
keys_pressed.append(key.index)
|
||||
update_keys()
|
||||
return Press(key)
|
||||
|
||||
def release(key):
|
||||
keys_pressed.remove(key.index)
|
||||
update_keys()
|
||||
return Release(key)
|
||||
|
||||
keyboard = KMKKeyboard()
|
||||
|
||||
macros = Macros()
|
||||
keyboard.modules.append(macros)
|
||||
|
||||
# Matrix definitions
|
||||
ROW_PINS = [board.D1, board.D7]
|
||||
COL_PINS = [board.D2, board.D3, board.D4, board.D5]
|
||||
|
||||
# Matrix scanner
|
||||
keyboard.matrix = MatrixScanner(
|
||||
cols=COL_PINS,
|
||||
rows=ROW_PINS,
|
||||
diode_orientation=DiodeOrientation.ROW2COL
|
||||
)
|
||||
|
||||
# Encoder definition
|
||||
ENCODER_PINS = (board.D9, board.D10)
|
||||
|
||||
# Encoder handler
|
||||
encoder = EncoderHandler(ENCODER_PINS, encoder_handler)
|
||||
keyboard.modules.append(encoder)
|
||||
|
||||
# Here you define the buttons corresponding to the matrix
|
||||
# Look here for keycodes: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/keycodes.md
|
||||
# And here for macros: https://github.com/KMKfw/kmk_firmware/blob/main/docs/en/macros.md
|
||||
keyboard.keymap = [
|
||||
[KC.N1, KC.N2, KC.N3, KC.N4],
|
||||
[KC.N5, KC.N6, KC.N7, KC.N8]
|
||||
]
|
||||
|
||||
macros.press = press
|
||||
macros.release = release
|
||||
|
||||
# Start kmk!
|
||||
if __name__ == '__main__':
|
||||
keyboard.go()
|
||||
1
hackpads/RGBar/Firmware/README.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
KMK port stand-in code awaiting hardware testing.
|
||||
14790
hackpads/RGBar/PCB/Hackpad Circuit Schematic.kicad_pcb
Normal file
83
hackpads/RGBar/PCB/Hackpad Circuit Schematic.kicad_prl
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
{
|
||||
"board": {
|
||||
"active_layer": 48,
|
||||
"active_layer_preset": "",
|
||||
"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": "803feff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Hackpad Circuit Schematic.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
582
hackpads/RGBar/PCB/Hackpad Circuit Schematic.kicad_pro
Normal file
|
|
@ -0,0 +1,582 @@
|
|||
{
|
||||
"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.049999999999999996,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"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.049999999999999996,
|
||||
"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.09999999999999999,
|
||||
"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.09999999999999999,
|
||||
"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.09999999999999999,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.09999999999999999,
|
||||
"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",
|
||||
"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.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.7999999999999999,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.09999999999999999,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.005,
|
||||
"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 Circuit Schematic.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": "Hackpad Circuit Schematic.step",
|
||||
"svg": "",
|
||||
"vrml": "Hackpad Circuit Schematic.wrl"
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"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": [
|
||||
[
|
||||
"cd369e69-d5f6-4093-9f57-c9ccd4282edf",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
6789
hackpads/RGBar/PCB/Hackpad Circuit Schematic.kicad_sch
Normal file
5
hackpads/RGBar/PCB/sym-lib-table
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
(sym_lib_table
|
||||
(version 7)
|
||||
(lib (name "OPL")(type "KiCad")(uri "${KIPRJMOD}/OPL_Kicad_Library-master/Seeed Studio XIAO Series Library/Seeed_Studio_XIAO_Series.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "1N4148")(type "KiCad")(uri "C:/Users/kalew/Downloads/1N4148/1N4148.kicad_sym")(options "")(descr ""))
|
||||
)
|
||||