Merge pull request #632 from CoffeeCoder1/dawpad

Add DawPad
This commit is contained in:
Alex Ren 2025-03-13 16:41:00 -04:00 committed by GitHub
commit 85d0f9fad2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 157176 additions and 0 deletions

15
.gitmodules vendored
View file

@ -12,6 +12,21 @@
path = hackpads/Ambrylight/firmware
url = https://github.com/pmnlla/zmk-board-cfg
branch = ambrylight
[submodule "hackpads/bongopad/pcb/KiCad-SSD1306-128x64"]
path = hackpads/bongopad/pcb/KiCad-SSD1306-128x64
url = https://github.com/pforrmi/KiCad-SSD1306-128x64
[submodule "hackpads/dawpad/pcb/libraries/MX_V2"]
path = hackpads/dawpad/pcb/libraries/MX_V2
url = https://github.com/ai03-2725/MX_V2
[submodule "hackpads/dawpad/pcb/libraries/OPL_Kicad_Library"]
path = hackpads/dawpad/pcb/libraries/OPL_Kicad_Library
url = https://github.com/Seeed-Studio/OPL_Kicad_Library.git
[submodule "hackpads/tabbyhack_k4/pcb/libraries/MX_V2"]
path = hackpads/tabbyhack_k4/pcb/libraries/MX_V2
url = https://github.com/ai03-2725/MX_V2
[submodule "hackpads/tabbyhack_k4/pcb/libraries/OPL_Kicad_Library"]
path = hackpads/tabbyhack_k4/pcb/libraries/OPL_Kicad_Library
url = https://github.com/Seeed-Studio/OPL_Kicad_Library
[submodule "hackpads/n16-remote"]
path = hackpads/n16-remote
url = https://github.com/DJ-Laser/n16-remot

2
hackpads/dawpad/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
StenoPad-backups
*.lck

36
hackpads/dawpad/README.md Normal file
View file

@ -0,0 +1,36 @@
# DawPad
![PCB Render](https://github.com/user-attachments/assets/7b59db36-3e2d-4628-bedd-b27dfa3b1bc2)
This is a small MIDI controller designed to make it a bit easier to control a DAW. It won't really do anything on its own, but with a good input map it will be a nice extenison of the DAW interface (I can see it being used as a controller for a few audio channels - the knobs could be used for gains, and the buttons could be channel parameters like mute, as well as a couple other things like playback controls).
## PCB
I'm pretty happy with how the PCB turned out for this. This is the first PCB that I'm actually getting made, and it's also the most complicated one that I've designed by far. I tried to keep things pretty neat, and I managed to keep everything reasonably compact while still keeping pretty much everything I could through-hole, which I'm much more comfortable with soldering.
![PCB Schematic](https://github.com/user-attachments/assets/5df3af07-ee74-4963-803d-1f5e063a1c76)
![PCB Layout](https://github.com/user-attachments/assets/08c3af90-4070-4fa1-94d4-e2376163b0e2)
## Firmware
The firmware for the DawPad is built in Arduino, using the [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html) library for MIDI functionality. At the moment, it likely doesn't really work at all, but a lot of the (likely) broken stuff is related to the I/O expander, which I can't really debug without the actual hardware. Some more detailed information about building this can be found in the firmware README.
## Case
The case for the DawPad is designed in Onshape (you can find a link to the document in the CAD README). I don't really know what I'm doing when it comes to CAD, so it's definitely a bit messy, but it should work. The case is designed to be 3D printed, and is bolted together with a couple M3 screws.
![image](https://github.com/user-attachments/assets/a7793793-4ef6-4b50-baef-528941c3cd3b)
## BOM
Here's the components needed to make this.
* 1x XIAO RP2040
* 1x MCP23017
* 12x 1N4148 DO-35 Diodes
* 2x 4.7k THT Resistor
* 12x Cherry MX switches
* 4x EC11 Rotary Encoder (preferably one without detents and with a reasonably high resolution)
* 4x SK6812 MINI (regular mount)
* 12x SK6812 MINI-E (reverse mount)

View file

@ -0,0 +1,3 @@
# DawPad CAD
I designed the case for the DawPad in Onshape, which you can find [here](https://cad.onshape.com/documents/c7175c5f1a4ca0cb72624a5c/w/6e2b9db7ac4b4769267f0874/e/2397240a351e4ca483ae7554?renderMode=0&uiState=67bdc28b9c552b495ee51c69).

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*.ino]
indent_style = space
indent_size = 2

View file

@ -0,0 +1,140 @@
#include <Control_Surface.h>
#include <AH/Arduino-Wrapper.h>
#include <AH/Hardware/ExtendedInputOutput/ExtendedInputOutput.hpp>
#include <AH/Hardware/RegisterEncoders.hpp>
#include <Adafruit_MCP23X17.h>
#include <Adafruit_NeoPixel.h>
// MCP configuration
const int MCP_PIN_INTA = 7;
const int MCP_PIN_INTB = 7;
// Encoder pins [A, B]
const int ENCODER_COUNT = 4;
const int ENCODER_PINS[ENCODER_COUNT][2] = {
{0, 1},
{2, 3},
{4, 5},
{6, 7},
};
// Key matrix
const int MATRIX_ROW_COUNT = 3;
const int MATRIX_COL_COUNT = 4;
const int MATRIX_ROWS[MATRIX_ROW_COUNT] = {
8,
9,
10,
};
const int MATRIX_COLS[MATRIX_COL_COUNT] = {
11,
12,
13,
14,
};
const MIDIAddress BUTTON_ADDRESSES[3][4] {
{
{MIDI_Notes::A[0], Channel_1},
{MIDI_Notes::B[0], Channel_1},
{MIDI_Notes::C[0], Channel_1},
{MIDI_Notes::D[0], Channel_1},
},
{
{MIDI_Notes::E[0], Channel_1},
{MIDI_Notes::F[0], Channel_1},
{MIDI_Notes::G[0], Channel_1},
{MIDI_Notes::A[1], Channel_1},
},
{
{MIDI_Notes::B[1], Channel_1},
{MIDI_Notes::C[1], Channel_1},
{MIDI_Notes::D[1], Channel_1},
{MIDI_Notes::E[1], Channel_1},
},
};
// Encoder switch pins
const int ENCODER_SW_PINS[4] = {
0,
1,
2,
3,
};
// LED configuration
const int LED_COUNT = 16;
const int LED_PIN = 6;
//////////
// MIDI interface
USBMIDI_Interface midi;
// Hardware objects
Adafruit_MCP23X17 mcp;
Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// Encoders
using RegisterEncoderType = RegisterEncoders<uint16_t, 4, int32_t, false>;
RegisterEncoderType encs;
void setup() {
// Set up LEDs
pixels.begin();
// Set up the MCP
if (!mcp.begin_I2C()) {
// If I2C setup failed, flash the first knob red forever.
while (true) {
pixels.setPixelColor(0, pixels.Color(255, 0, 0));
pixels.show();
delay(1000);
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(1000);
}
}
mcp.setupInterrupts(false, false, LOW);
// Set up the MCP interrupt pins
pinMode(MCP_PIN_INTA, INPUT);
pinMode(MCP_PIN_INTB, INPUT);
// Set up the encoder pins
for (int encoderIndex = 0; encoderIndex < ENCODER_COUNT; encoderIndex++) {
for (int pinIndex = 0; pinIndex <= 1; pinIndex++) {
int pin = ENCODER_PINS[encoderIndex][pinIndex];
mcp.pinMode(pin, INPUT_PULLUP);
mcp.setupInterruptPin(pin, CHANGE);
}
}
}
void loop() {
// Read from encoders
if (!digitalRead(MCP_PIN_INTA)) {
encs.update(mcp.getCapturedInterrupt());
delay(100); // Debounce
mcp.clearInterrupts();
}
for (uint8_t row = 0; row < MATRIX_ROW_COUNT; row++) {
mcp.digitalWrite(MATRIX_ROWS[row], HIGH);
if (!digitalRead(MCP_PIN_INTB)) {
uint16_t pins = mcp.getCapturedInterrupt();
for (uint8_t col = 0; col < MATRIX_COL_COUNT; col++) {
if (pins & (1 << MATRIX_COLS[col])) {
midi.sendNoteOn(BUTTON_ADDRESSES[row][col], 0x7F);
}
}
}
mcp.digitalWrite(row, LOW);
mcp.clearInterrupts();
}
}

View file

@ -0,0 +1,9 @@
# DawPad Firmware
The firmware for the DawPad is built in Arduino, using the [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html) library for MIDI functionality.
Dependencies
* [Control-Surface](https://tttapa.github.io/Control-Surface/Doxygen/index.html)
* [Adafruit Neopixel](https://github.com/adafruit/Adafruit_NeoPixel)
* [Adafruit MCP23017](https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,114 @@
{
"board": {
"active_layer": 37,
"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,
"shapes": 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,
41
],
"visible_layers": "7ffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "DawPad.kicad_prl",
"version": 3
},
"net_inspector_panel": {
"col_hidden": [],
"col_order": [],
"col_widths": [],
"custom_group_rules": [],
"expanded_rows": [],
"filter_by_net_name": true,
"filter_by_netclass": true,
"filter_text": "",
"group_by_constraint": false,
"group_by_netclass": false,
"show_unconnected_nets": false,
"show_zero_pad_nets": false,
"sort_ascending": true,
"sorting_column": -1
},
"project": {
"files": []
},
"schematic": {
"selection_filter": {
"graphics": true,
"images": true,
"labels": true,
"lockedItems": false,
"otherItems": true,
"pins": true,
"symbols": true,
"text": true,
"wires": true
}
}
}

View file

@ -0,0 +1,609 @@
{
"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_pairs": [],
"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": "error",
"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": "DawPad.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "../production/",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 0,
"bom_export_filename": "",
"bom_fmt_presets": [],
"bom_fmt_settings": {
"field_delimiter": ",",
"keep_line_breaks": false,
"keep_tabs": false,
"name": "CSV",
"ref_delimiter": ",",
"ref_range_delimiter": "",
"string_delimiter": "\""
},
"bom_presets": [],
"bom_settings": {
"exclude_dnp": false,
"fields_ordered": [
{
"group_by": false,
"label": "Reference",
"name": "Reference",
"show": true
},
{
"group_by": true,
"label": "Value",
"name": "Value",
"show": true
},
{
"group_by": false,
"label": "Datasheet",
"name": "Datasheet",
"show": true
},
{
"group_by": false,
"label": "Footprint",
"name": "Footprint",
"show": true
},
{
"group_by": false,
"label": "Qty",
"name": "${QUANTITY}",
"show": true
},
{
"group_by": true,
"label": "DNP",
"name": "${DNP}",
"show": true
},
{
"group_by": false,
"label": "#",
"name": "${ITEM_NUMBER}",
"show": false
},
{
"group_by": false,
"label": "Sim.Device",
"name": "Sim.Device",
"show": false
},
{
"group_by": false,
"label": "Sim.Pins",
"name": "Sim.Pins",
"show": false
},
{
"group_by": false,
"label": "Description",
"name": "Description",
"show": false
}
],
"filter_string": "",
"group_symbols": true,
"name": "",
"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": [
[
"3a5860f7-fb48-455b-8008-559bf5276a58",
"Root"
]
],
"text_variables": {}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
(fp_lib_table
(version 7)
(lib (name "MX_Hotswap")(type "KiCad")(uri "${KIPRJMOD}/libraries/MX_V2/MX_Hotswap.pretty")(options "")(descr ""))
(lib (name "Seeed Studio XIAO Series Library")(type "KiCad")(uri "${KIPRJMOD}/libraries/OPL_Kicad_Library/Seeed Studio XIAO Series Library")(options "")(descr ""))
(lib (name "Switch_Misc")(type "KiCad")(uri "${KIPRJMOD}/libraries/MX_V2/Switch_Misc.pretty")(options "")(descr ""))
(lib (name "SK6812MINI-E")(type "KiCad")(uri "${KIPRJMOD}/libraries/SK6812MINI-E.pretty")(options "")(descr ""))
)

@ -0,0 +1 @@
Subproject commit 0b379eebbeb66c7fd6e82e400b47958ad695614e

@ -0,0 +1 @@
Subproject commit e061eb5cff70caf5aa39b7672edf533b7647f66a

View file

@ -0,0 +1,198 @@
(footprint "SK6812MINI-E"
(version 20240108)
(generator "pcbnew")
(generator_version "8.0")
(layer "F.Cu")
(property "Reference" "REF**"
(at 0 2.1 0)
(unlocked yes)
(layer "F.SilkS")
(uuid "b88284fb-aaa4-42d6-9cad-a972e703847a")
(effects
(font
(size 0.7 0.7)
(thickness 0.15)
)
)
)
(property "Value" "SK6812-MINI-E"
(at 0 -0.5 0)
(unlocked yes)
(layer "F.SilkS")
(hide yes)
(uuid "f39cdc37-60ce-429a-b3e2-aa8b995dec58")
(effects
(font
(size 1 1)
(thickness 0.15)
)
)
)
(property "Footprint" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "d234705b-3108-4bab-9522-a4cf9ccb2635")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Datasheet" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "8bf330b9-74b6-4648-9435-1c6528dfbc45")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(property "Description" ""
(at 0 0 0)
(layer "F.Fab")
(hide yes)
(uuid "0eca6a33-882a-4b27-8f0b-bafbd09f61fe")
(effects
(font
(size 1.27 1.27)
(thickness 0.15)
)
)
)
(attr through_hole)
(fp_poly
(pts
(xy 2.8 -1.4) (xy 2.2 -1.4) (xy 2.2 -2)
)
(stroke
(width 0.1)
(type solid)
)
(fill solid)
(layer "F.SilkS")
(uuid "d6167f7d-a14f-40d6-967b-9af1e73cb3fb")
)
(fp_line
(start -1.6 -1.4)
(end 1.6 -1.4)
(stroke
(width 0.12)
(type solid)
)
(layer "Cmts.User")
(uuid "156060ac-56fb-40cd-ad7f-f6d782f0113d")
)
(fp_line
(start -1.6 1.4)
(end -1.6 -1.4)
(stroke
(width 0.12)
(type solid)
)
(layer "Cmts.User")
(uuid "06f735ab-4565-4a94-812d-7b33af5edb5e")
)
(fp_line
(start 1.6 -1.4)
(end 1.6 1.4)
(stroke
(width 0.12)
(type solid)
)
(layer "Cmts.User")
(uuid "89906bd8-c208-4976-9481-1f82e820825d")
)
(fp_line
(start 1.6 1.4)
(end -1.6 1.4)
(stroke
(width 0.12)
(type solid)
)
(layer "Cmts.User")
(uuid "d8f3c9c2-7ef8-48fa-aaa1-446802cdc075")
)
(fp_line
(start -1.7 -1.5)
(end 1.7 -1.5)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "a7296c89-e37a-49e0-9eec-e43cb4f4fbe0")
)
(fp_line
(start -1.7 1.5)
(end -1.7 -1.5)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "0d0cf35e-3eec-4340-a306-9a8605c43fcc")
)
(fp_line
(start 1.7 -1.5)
(end 1.7 1.5)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "eb85ee1e-3df6-479d-b0f9-c263eb650062")
)
(fp_line
(start 1.7 1.5)
(end -1.7 1.5)
(stroke
(width 0.12)
(type solid)
)
(layer "Edge.Cuts")
(uuid "ed21ccd9-74a6-47d4-9c97-c71afbd5ee26")
)
(pad "1" smd rect
(at -2.6 -0.75)
(size 1.8 0.82)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "4d38ce85-6493-490c-9a84-0708ba0fe35e")
)
(pad "2" smd roundrect
(at 2.6 -0.75)
(size 1.8 0.82)
(layers "F.Cu" "F.Paste" "F.Mask")
(roundrect_rratio 0)
(chamfer_ratio 0.2)
(chamfer top_right)
(uuid "686a830c-3078-4363-b8a6-a13372992f00")
)
(pad "3" smd rect
(at 2.6 0.75)
(size 1.8 0.82)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "26377afe-6623-4419-aa1c-3c85ec60980b")
)
(pad "4" smd rect
(at -2.6 0.75)
(size 1.8 0.82)
(layers "F.Cu" "F.Paste" "F.Mask")
(uuid "b4407596-3d45-4321-b92f-e6ca5004a7cc")
)
(model "${KIPRJMOD}/libraries/SK6812MINI-E.pretty/SK6812MINI-E.step"
(offset
(xyz 0 0 0)
)
(scale
(xyz 1 1 1)
)
(rotate
(xyz 90 0 0)
)
)
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
(sym_lib_table
(version 7)
(lib (name "Seeed Studio XIAO Series")(type "KiCad")(uri "${KIPRJMOD}/libraries/OPL_Kicad_Library/Seeed Studio XIAO Series Library/Seeed_Studio_XIAO_Series.kicad_sym")(options "")(descr ""))
)

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.