11
.gitignore
vendored
11
.gitignore
vendored
@@ -1,2 +1,13 @@
|
|||||||
.pio
|
.pio
|
||||||
.vscode
|
.vscode
|
||||||
|
*.lck
|
||||||
|
|
||||||
|
Schematics/Block-Party/Block-Party-Main-Board/production/
|
||||||
|
Schematics/Block-Party/Block-Party-Cube-Top-Board/production
|
||||||
|
Schematics/Block-Party/Block-Party-Cube-Bottom-Board/production
|
||||||
|
|
||||||
|
Schematics/Block-Party/Block-Party-Main-Board/Block-Party-Main-Board-backups/
|
||||||
|
Schematics/Block-Party/Block-Party-Cube-Bottom-Board/Block-Party-Bottom-Board-backups/
|
||||||
|
Schematics/Block-Party/Block-Party-Cube-Top-Board/Block-Party-Cube-Top-Board-backups/
|
||||||
|
|
||||||
|
platformio-local.ini
|
||||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "lib/SerialMessage"]
|
||||||
|
path = lib/SerialMessage
|
||||||
|
url = https://github.com/Cynopolis/SerialMessage.git
|
||||||
10
README.md
10
README.md
@@ -15,6 +15,11 @@ When the physical user removes a block from the board, the corresponding digital
|
|||||||
When the VR user hovers over or picks up a digital cube, the corresponding physical cube changes color to show the physical user what the VR user is doing.
|
When the VR user hovers over or picks up a digital cube, the corresponding physical cube changes color to show the physical user what the VR user is doing.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
### Repository Setup
|
||||||
|
When the repository is first cloned you will need to initialize all of its submodules.
|
||||||
|
|
||||||
|
In the terminal type: `git submodule update --init --recursive` which will initalize all of the submodules.
|
||||||
|
|
||||||
### Board Assemble
|
### Board Assemble
|
||||||
#### Parts List
|
#### Parts List
|
||||||
- Foam core (scavenged)
|
- Foam core (scavenged)
|
||||||
@@ -52,6 +57,9 @@ wiring diagram for the cube is in the `documentation` directory.
|
|||||||
- Adafruit’s Neopixel library
|
- Adafruit’s Neopixel library
|
||||||
- Arduino libraries
|
- Arduino libraries
|
||||||
|
|
||||||
|
### Bluetooth Module
|
||||||
|
On v0.1 of the board, a seperate bluetooth module (HC-05) is being used for bluetooth. This module needs to be programmed when first plugged in. To program the module, disconnect it from power and hold the "EN" button on the module. (The button should be the only button on the HC-05 module). While still holding down the button, reconnect the module to the ESP32. Let go of the button and then press the ESP32's reset button. Wait 5 seconds while still holding down the "EN" button on the module, then release the button, power cycle the module, and you're done.
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
- Power up the board and pair it with the headset over bluetooth.
|
- Power up the board and pair it with the headset over bluetooth.
|
||||||
- Build and load the Unity project to the headset.
|
- Build and load the Unity project to the headset.
|
||||||
@@ -112,7 +120,7 @@ Description Set the colors for one of the stacks.
|
|||||||
- Red1, Green1, Blue1 correspond with the color of the first cube in the stack and so on. These values can be between 0-255.
|
- Red1, Green1, Blue1 correspond with the color of the first cube in the stack and so on. These values can be between 0-255.
|
||||||
You can add as many colors as you want, but they wont display if the corresponding cube doesn't physically exist.
|
You can add as many colors as you want, but they wont display if the corresponding cube doesn't physically exist.
|
||||||
|
|
||||||
### COmmand Name: `GoToIdle`
|
### Command Name: `GoToIdle`
|
||||||
Command Number: `3`
|
Command Number: `3`
|
||||||
|
|
||||||
Format Example `!3;`
|
Format Example `!3;`
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -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": "Block-Party-Bottom-Board.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,716 @@
|
|||||||
|
{
|
||||||
|
"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.09999999999999999,
|
||||||
|
"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.15,
|
||||||
|
"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": 1.0,
|
||||||
|
"height": 9.5,
|
||||||
|
"width": 1.05
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.15,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.15,
|
||||||
|
"silk_text_upright": false,
|
||||||
|
"zones": {
|
||||||
|
"min_clearance": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"diff_pair_dimensions": [],
|
||||||
|
"drc_exclusions": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"rule_severities": {
|
||||||
|
"annular_width": "ignore",
|
||||||
|
"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": "warning",
|
||||||
|
"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.04,
|
||||||
|
"min_connection": 0.0,
|
||||||
|
"min_copper_edge_clearance": 0.0,
|
||||||
|
"min_hole_clearance": 0.09999999999999999,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.19999999999999998,
|
||||||
|
"min_microvia_drill": 0.09999999999999999,
|
||||||
|
"min_resolved_spokes": 1,
|
||||||
|
"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_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"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": "Block-Party-Bottom-Board.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.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"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": "../PCB Models/Block-Party-Bottom-PCB.step",
|
||||||
|
"svg": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "#",
|
||||||
|
"name": "${ITEM_NUMBER}",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Arrow Part Number",
|
||||||
|
"name": "Arrow Part Number",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Arrow Price/Stock",
|
||||||
|
"name": "Arrow Price/Stock",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Availability",
|
||||||
|
"name": "Availability",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Check_prices",
|
||||||
|
"name": "Check_prices",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Description_1",
|
||||||
|
"name": "Description_1",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Height",
|
||||||
|
"name": "Height",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MANUFACTURER",
|
||||||
|
"name": "MANUFACTURER",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"name": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MF",
|
||||||
|
"name": "MF",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MP",
|
||||||
|
"name": "MP",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Manufacturer_Name",
|
||||||
|
"name": "Manufacturer_Name",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Manufacturer_Part_Number",
|
||||||
|
"name": "Manufacturer_Part_Number",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Mouser Part Number",
|
||||||
|
"name": "Mouser Part Number",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Mouser Price/Stock",
|
||||||
|
"name": "Mouser Price/Stock",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PARTREV",
|
||||||
|
"name": "PARTREV",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Package",
|
||||||
|
"name": "Package",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Price",
|
||||||
|
"name": "Price",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Purchase-URL",
|
||||||
|
"name": "Purchase-URL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "STANDARD",
|
||||||
|
"name": "STANDARD",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "SnapEDA_Link",
|
||||||
|
"name": "SnapEDA_Link",
|
||||||
|
"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": [
|
||||||
|
[
|
||||||
|
"2141435d-34b8-43f3-bf65-e696e1b6d80b",
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
{"AUTO TRANSLATE": true, "EXCLUDE DNP": false, "EXTRA_LAYERS": ""}
|
||||||
94438
Schematics/Block-Party/Block-Party-Cube-Bottom-Board/fp-info-cache
Normal file
94438
Schematics/Block-Party/Block-Party-Cube-Bottom-Board/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "adafruit-jst-4328")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/adafruit-jst-4328.pretty")(options "")(descr ""))
|
||||||
|
)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
(sym_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "4328")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/adafruit-jst-4328/4328.kicad_sym")(options "")(descr ""))
|
||||||
|
)
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"active_layer": 31,
|
||||||
|
"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": "Block-Party-Cube-Top-Board.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,676 @@
|
|||||||
|
{
|
||||||
|
"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.09999999999999999,
|
||||||
|
"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.15,
|
||||||
|
"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.15,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.15,
|
||||||
|
"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.0,
|
||||||
|
"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_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"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": [
|
||||||
|
"Quinn_lib"
|
||||||
|
],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "Block-Party-Cube-Top-Board.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.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"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": "../../../../../../Downloads/Block-Party-Cube-Top-Board.step",
|
||||||
|
"svg": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "#",
|
||||||
|
"name": "${ITEM_NUMBER}",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Availability",
|
||||||
|
"name": "Availability",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Check_prices",
|
||||||
|
"name": "Check_prices",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Description_1",
|
||||||
|
"name": "Description_1",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MANUFACTURER",
|
||||||
|
"name": "MANUFACTURER",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"name": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MF",
|
||||||
|
"name": "MF",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MP",
|
||||||
|
"name": "MP",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PARTREV",
|
||||||
|
"name": "PARTREV",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Package",
|
||||||
|
"name": "Package",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Price",
|
||||||
|
"name": "Price",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Purchase-URL",
|
||||||
|
"name": "Purchase-URL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "STANDARD",
|
||||||
|
"name": "STANDARD",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "SnapEDA_Link",
|
||||||
|
"name": "SnapEDA_Link",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Description",
|
||||||
|
"name": "Description",
|
||||||
|
"show": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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": [
|
||||||
|
[
|
||||||
|
"1e9bcb59-abda-4050-8555-8eda44a8099c",
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
{"AUTO TRANSLATE": true, "EXCLUDE DNP": false, "EXTRA_LAYERS": ""}
|
||||||
94396
Schematics/Block-Party/Block-Party-Cube-Top-Board/fp-info-cache
Normal file
94396
Schematics/Block-Party/Block-Party-Cube-Top-Board/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "adafruit-jst-4328")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/adafruit-jst-4328.pretty")(options "")(descr ""))
|
||||||
|
)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
(sym_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "4328")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/adafruit-jst-4328/4328.kicad_sym")(options "")(descr ""))
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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": "Block-Party-Main-Board.kicad_prl",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"files": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,746 @@
|
|||||||
|
{
|
||||||
|
"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.09999999999999999,
|
||||||
|
"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.15,
|
||||||
|
"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.0,
|
||||||
|
"height": 0.8,
|
||||||
|
"width": 1.65
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.15,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.15,
|
||||||
|
"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.0,
|
||||||
|
"min_hole_clearance": 0.25,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.19999999999999998,
|
||||||
|
"min_microvia_drill": 0.09999999999999999,
|
||||||
|
"min_resolved_spokes": 1,
|
||||||
|
"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_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"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": "Block-Party-Main-Board.kicad_pro",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_settings": {
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"bus_width": 12,
|
||||||
|
"clearance": 0.12,
|
||||||
|
"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.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"wire_width": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"net_colors": null,
|
||||||
|
"netclass_assignments": null,
|
||||||
|
"netclass_patterns": []
|
||||||
|
},
|
||||||
|
"pcbnew": {
|
||||||
|
"last_paths": {
|
||||||
|
"gencad": "",
|
||||||
|
"idf": "",
|
||||||
|
"netlist": "",
|
||||||
|
"plot": "Manufacturing Files/",
|
||||||
|
"pos_files": "Manufacturing Files/",
|
||||||
|
"specctra_dsn": "",
|
||||||
|
"step": "../PCB Models/Block-Party-Main-Board.step",
|
||||||
|
"svg": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"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": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Availability",
|
||||||
|
"name": "Availability",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "CUI_purchase_URL",
|
||||||
|
"name": "CUI_purchase_URL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Check_prices",
|
||||||
|
"name": "Check_prices",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "DATASHEET-URL",
|
||||||
|
"name": "DATASHEET-URL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Description_1",
|
||||||
|
"name": "Description_1",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "IR-UL",
|
||||||
|
"name": "IR-UL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "IR-VDE",
|
||||||
|
"name": "IR-VDE",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MANUFACTURER",
|
||||||
|
"name": "MANUFACTURER",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"name": "MAXIMUM_PACKAGE_HEIGHT",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MF",
|
||||||
|
"name": "MF",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MOUNT",
|
||||||
|
"name": "MOUNT",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "MP",
|
||||||
|
"name": "MP",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PART-NUMBER",
|
||||||
|
"name": "PART-NUMBER",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PARTREV",
|
||||||
|
"name": "PARTREV",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PINS",
|
||||||
|
"name": "PINS",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "PITCH",
|
||||||
|
"name": "PITCH",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Package",
|
||||||
|
"name": "Package",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Price",
|
||||||
|
"name": "Price",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Purchase-URL",
|
||||||
|
"name": "Purchase-URL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "STANDARD",
|
||||||
|
"name": "STANDARD",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "SnapEDA_Link",
|
||||||
|
"name": "SnapEDA_Link",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "TYPE",
|
||||||
|
"name": "TYPE",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "WIRE",
|
||||||
|
"name": "WIRE",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "WORKING-VOLTAGE-UL",
|
||||||
|
"name": "WORKING-VOLTAGE-UL",
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "WORKING-VOLTAGE-VDE",
|
||||||
|
"name": "WORKING-VOLTAGE-VDE",
|
||||||
|
"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": [
|
||||||
|
[
|
||||||
|
"4100c4a7-2a4e-4286-a196-244fb7659f20",
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
{"AUTO TRANSLATE": true, "EXCLUDE DNP": false, "EXTRA_LAYERS": ""}
|
||||||
94739
Schematics/Block-Party/Block-Party-Main-Board/fp-info-cache
Normal file
94739
Schematics/Block-Party/Block-Party-Main-Board/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "2p 3")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/2p 3.pretty")(options "")(descr ""))
|
||||||
|
)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
(sym_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "691214110002S")(type "KiCad")(uri "C:/Users/Quinn/Documents/Projects/Block-Party-Firmware/Schematics/PCB Components/2p 3.5mm terminal block/691214110002S.kicad_sym")(options "")(descr ""))
|
||||||
|
)
|
||||||
43270
Schematics/Block-Party/PCB Models/Block-Party-Bottom-PCB.step
Normal file
43270
Schematics/Block-Party/PCB Models/Block-Party-Bottom-PCB.step
Normal file
File diff suppressed because it is too large
Load Diff
3213
Schematics/Block-Party/PCB Models/Block-Party-Cube-Top-Board.step
Normal file
3213
Schematics/Block-Party/PCB Models/Block-Party-Cube-Top-Board.step
Normal file
File diff suppressed because it is too large
Load Diff
159155
Schematics/Block-Party/PCB Models/Block-Party-Main-Board.step
Normal file
159155
Schematics/Block-Party/PCB Models/Block-Party-Main-Board.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,205 @@
|
|||||||
|
(footprint "AFC20-S04BCC-00"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -0.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "ef653084-1344-4c63-a537-3a07704f1a79")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "AFC20-S04BCC-00"
|
||||||
|
(at 0 1 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "70ef1587-5854-4844-be92-e4d502b0a3d8")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "c13e11ec-83dd-4d52-9b99-ac7d39efc245")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "d7b8c6a3-fe75-4417-8fe1-0fbd37cfa8af")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "6ca4e152-b3d2-40bf-aff0-91291ff7e8f1")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_line
|
||||||
|
(start -6 -5)
|
||||||
|
(end 6 -5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "fe9bce57-bf9e-46e7-970a-5407e4cb1167")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -6 -3.5)
|
||||||
|
(end -6 -5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "70763ec4-8800-46ce-864c-56e207749615")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -6 3)
|
||||||
|
(end -6 0.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "cd2fca95-9f55-4446-8398-b205fc0f3111")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -4 3)
|
||||||
|
(end -6 3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "95f01029-326a-40dd-b774-b1da0c2ce401")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 6 -5)
|
||||||
|
(end 6 -3.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "27bd4c55-5e8b-43ba-af9a-6a7fec90addf")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 6 0.5)
|
||||||
|
(end 6 3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7d8eb6fb-e397-4354-8c16-087e45e3343a")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 6 3)
|
||||||
|
(end 4 3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "35a1027e-0d64-493d-b88a-e39491714186")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -7.5 -5.5)
|
||||||
|
(end 7.5 5)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "70d81eec-0cae-4a19-b444-69ea39082365")
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}"
|
||||||
|
(at 0 2.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "9cf36b8a-e9c4-4171-b327-7542137bb445")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at -3 1.53)
|
||||||
|
(size 0.85 6)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "873aa7f0-5ac8-4f09-8a80-5b093621427e")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at -1 1.53)
|
||||||
|
(size 0.85 6)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "9473b65b-0293-41b5-8c6c-f344ecb69caf")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at 1 1.53)
|
||||||
|
(size 0.85 6)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "4d2beb83-cdb0-4d1f-a4a0-bf06e0d87100")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at 3 1.53)
|
||||||
|
(size 0.85 6)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "5c62d4fc-0ddc-47c2-b247-1849fea5a47d")
|
||||||
|
)
|
||||||
|
(pad "6" smd rect
|
||||||
|
(at -6.05 -1.53)
|
||||||
|
(size 1.5 3)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "441b1b30-16ea-4d7a-8292-a21eeb9540f8")
|
||||||
|
)
|
||||||
|
(pad "6" smd rect
|
||||||
|
(at 6.05 -1.53)
|
||||||
|
(size 1.5 3)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "23136732-92d4-403c-81c5-f337876d1197")
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,311 @@
|
|||||||
|
(footprint "Bottom Block Connector"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -20.78 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "fa49df0b-d18c-4512-9523-57e0b2315dad")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "Bottom Block Connector"
|
||||||
|
(at 0 -19.28 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "ba1e0610-1238-4776-9acc-3f52fc1ac274")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "1f7754c3-0bc9-4893-a63e-67771568052c")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "da409b30-e1f4-4d76-8e59-cb494ec03ae2")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "fa75d831-f30a-4afe-9bbe-0671e18ba5ee")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_rect
|
||||||
|
(start -10.27626 4.399468)
|
||||||
|
(end -3.679314 9.610596)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "26876452-1aad-496c-91c1-54c216c1f0fa")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -10.242595 -9.65)
|
||||||
|
(end -3.75 -4.44204)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "5aadfba4-fca6-4aa2-bc49-d105e305b9be")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start 3.75 -9.564666)
|
||||||
|
(end 10.290258 -4.427982)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "83f74773-f638-4e7c-bd7c-cd82f2e7036d")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start 3.75 4.350763)
|
||||||
|
(end 10.307438 9.607703)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "b01dcf19-0eb6-4d29-aa4e-a7b1143d471c")
|
||||||
|
)
|
||||||
|
(fp_text user "GND"
|
||||||
|
(at -8.5 -3.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "28e44a97-a2cd-4fc2-a283-05bcb1154a59")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "SENSE"
|
||||||
|
(at 4.5 -3.347092 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "61f94c83-6733-4d41-97e5-cb61a66dc368")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "+5V"
|
||||||
|
(at 5 4.545433 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7e61648c-d99a-4e13-8b97-ac3853af5633")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "DIN"
|
||||||
|
(at -8 4.752044 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "adeee4b3-d76d-4419-a3e0-16a24b919636")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}"
|
||||||
|
(at 0 -17.78 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "bfeb8936-2605-46ae-99c2-f611443a4579")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at -7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "67f10c74-799d-45f0-9caf-f7788f5f662e")
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at -7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "B.Cu" "B.Paste" "B.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "101e8ad9-224f-46b3-87f4-ad0e56bc0bc4")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at 7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "a5b1f81b-cb2b-416c-b453-ea4304670bb1")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at 7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "B.Cu" "B.Paste" "B.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "06364b91-e27a-453c-825d-4c93c7f54252")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at -7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "da72c725-260f-4450-853e-3474c2ff991f")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at -7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "B.Cu" "B.Paste" "B.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "0697be5b-a96c-486b-a801-75d3591a3309")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at 7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "53b0381f-8039-47a9-b28f-377cffe7060a")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at 7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "B.Cu" "B.Paste" "B.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "da7ec61f-94ae-47b7-b5fb-1e456a9d5374")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at -9.65 -7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "060b8b3e-fa15-49b4-8d73-14375c0ad64d")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at -9.65 7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "8657d410-6933-4ef5-8bc6-dad62152a522")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at -4.35 -7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "7ba24e8b-3606-431c-90c0-b5288e924826")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at -4.35 7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "bf5ae15e-77f9-41b2-b4a1-11208440dc69")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at 4.35 -7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "58c148af-646d-410d-8f4b-e2c155e36e89")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at 4.35 7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "52bdcb57-2483-42a3-b7ed-90b871e5022d")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at 9.65 -7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "b580ebb5-5d3c-468c-915f-dab729108be2")
|
||||||
|
)
|
||||||
|
(pad "5" thru_hole oval
|
||||||
|
(at 9.65 7)
|
||||||
|
(size 1.05 4)
|
||||||
|
(drill oval 1 5)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "3931fdca-ef11-473c-98f8-cf6439321437")
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
(footprint "Top Block Connector"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -15.24 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "e17cc5d5-dfe8-4b7c-b3a4-be94e94fcbb6")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "Top Block Connector"
|
||||||
|
(at 0 -13.74 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "4cfe916b-8b6d-4956-b041-31da01915788")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "b1f4a813-7f3f-466e-9e58-908afa98f313")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "90c9e94a-3962-4774-bed2-69f37effcfad")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "fbe17dc0-816a-4054-9d0f-378593d7ea01")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_rect
|
||||||
|
(start -25 -25)
|
||||||
|
(end 25 25)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "02d89982-2879-49da-992f-c4d987f0fd39")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -9.044238 -9.06015)
|
||||||
|
(end 9.076061 9.048037)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "d9ab0ef7-1407-4bc4-abba-b68eb0549242")
|
||||||
|
)
|
||||||
|
(fp_text user "+5V"
|
||||||
|
(at -9 5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "0fefd787-ac44-4dd8-80f5-55865fa18581")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "GND"
|
||||||
|
(at 5.5 -3.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "2c5437a9-0d9d-41e2-8b42-7c4e1c9d7810")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "DOUT"
|
||||||
|
(at 5 4.869823 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "41c5b424-fdbd-4dff-86cd-70ab2ec756bb")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "SENSE"
|
||||||
|
(at -9.5 -3.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "94cbbe95-193a-4977-9974-403aeb880dff")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}"
|
||||||
|
(at 0 -12.24 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "da8bc0ee-d0b9-42f3-a60b-7849c17eba14")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at 7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(uuid "94a1ad47-6c3e-4acd-bb59-8651a160cd1e")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at -7 -7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(uuid "fc4230ad-d73f-42c7-a2e5-c77ff242b0a7")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at 7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(uuid "087c465a-b29c-48e0-aa73-2cdb236c23b3")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at -7 7)
|
||||||
|
(size 4 4)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(uuid "ced72edf-782b-4880-9519-3ecdfcb50fb9")
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,317 @@
|
|||||||
|
(footprint "USB_C-0015IPX6-00"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(descr "USB Type C Receptacle, GCT, power-only, 6P, top mounted, horizontal, 3A, 1.9mm stake: https://gct.co/files/drawings/usb4125.pdf")
|
||||||
|
(tags "USB C Type-C receptacle power-only charging-only 6P 6C right angled")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -5.1 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "95c2ba4d-6f60-4594-9ea9-52fbf5601365")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "USB_C-0015IPX6-00"
|
||||||
|
(at 0 4.725 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "36f32ef8-742f-42a9-978b-4071d547df0a")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "48452a1e-b6b6-483b-a480-2e5b426c1f66")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "831d5ba0-7b98-47b7-b119-a23e98ef81b5")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "a7f3feb9-aa8e-4769-9084-30fd557400fa")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_line
|
||||||
|
(start -5 -3)
|
||||||
|
(end -5 -2)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "2467febb-d5ab-4f13-ba78-1f2459adc73d")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -5 0.5)
|
||||||
|
(end -5 1)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "04917f94-e61a-4c18-8712-ddba3eb18db4")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -5 3.5)
|
||||||
|
(end -5 4)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "a13a0b5e-d319-4f8a-9f2d-efa23569d340")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -5 4)
|
||||||
|
(end 5 4)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "3104cbec-4990-4bc9-bcab-58b8f648253c")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -4 4)
|
||||||
|
(end -4 5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "2a416804-d4a5-4c93-a467-e64b6cb63e47")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -4 5)
|
||||||
|
(end 4 5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7adc40c1-0ae8-40f3-93bd-a365cd792d77")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.5 -3)
|
||||||
|
(end -5 -3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "0793ac5b-0e39-4bac-9727-2273bdad68bc")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4 5)
|
||||||
|
(end 4 4)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "57cb3702-2187-497d-907a-9c9b2b7bd109")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 5 -3)
|
||||||
|
(end 3.5 -3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "3398e8c7-f41e-4b88-888a-b136675d4e20")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 5 -2)
|
||||||
|
(end 5 -3)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "e2517eca-c269-4917-8e4a-5166d1603332")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 5 1)
|
||||||
|
(end 5 0.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "d7b9862c-993d-46c0-ad4e-538c7a8f2d66")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 5 4)
|
||||||
|
(end 5 3.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "f88237bc-d487-4689-b306-2a2931b6ffdc")
|
||||||
|
)
|
||||||
|
(fp_rect
|
||||||
|
(start -5.5 -3.5)
|
||||||
|
(end 5.5 5.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "dda2e047-5cdf-4070-be01-062d2e931eaf")
|
||||||
|
)
|
||||||
|
(pad "" np_thru_hole circle
|
||||||
|
(at -3.241 -0.523 90)
|
||||||
|
(size 1 1)
|
||||||
|
(drill 1.05)
|
||||||
|
(layers "F&B.Cu")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "c373b8be-eb90-4ce5-984f-b8b1394e4995")
|
||||||
|
)
|
||||||
|
(pad "" np_thru_hole circle
|
||||||
|
(at 3.258 -0.523 90)
|
||||||
|
(size 1 1)
|
||||||
|
(drill 1.05)
|
||||||
|
(layers "F&B.Cu")
|
||||||
|
(clearance 0.001)
|
||||||
|
(uuid "ae958a68-ee80-42f0-b00b-a52a9db0d9a8")
|
||||||
|
)
|
||||||
|
(pad "7" thru_hole oval
|
||||||
|
(at -4.9 -0.623)
|
||||||
|
(size 1.1 2)
|
||||||
|
(drill oval 0.6 1.3)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "1aac6f43-0bb8-49ea-98c0-65703e932fa2")
|
||||||
|
)
|
||||||
|
(pad "7" thru_hole oval
|
||||||
|
(at -4.9 2.377)
|
||||||
|
(size 1.1 2)
|
||||||
|
(drill oval 0.6 1.3)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "37897aa5-083e-4a3d-bd12-b6005c8b7f8c")
|
||||||
|
)
|
||||||
|
(pad "7" thru_hole oval
|
||||||
|
(at 4.9 -0.623)
|
||||||
|
(size 1.1 2)
|
||||||
|
(drill oval 0.6 1.3)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "7fde82e7-ab02-4666-a527-4b2a1817dc0b")
|
||||||
|
)
|
||||||
|
(pad "7" thru_hole oval
|
||||||
|
(at 4.9 2.378)
|
||||||
|
(size 1.1 2)
|
||||||
|
(drill oval 0.6 1.3)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "2c2d820c-2239-4091-8155-2cf15f14a17a")
|
||||||
|
)
|
||||||
|
(pad "A5" smd rect
|
||||||
|
(at -0.491 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "5b7cd6fb-d260-4792-892d-e6503b08a70f")
|
||||||
|
)
|
||||||
|
(pad "A9" smd rect
|
||||||
|
(at 1.509 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "266ca991-f73c-49b1-b44d-00b5f93990c5")
|
||||||
|
)
|
||||||
|
(pad "A12" smd rect
|
||||||
|
(at 2.75 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "75605fe6-1dcb-45f1-956c-0be2c3154e56")
|
||||||
|
)
|
||||||
|
(pad "B5" smd rect
|
||||||
|
(at 0.509 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "1d7d450f-ccbb-44f8-b6bb-d1dc6eabafff")
|
||||||
|
)
|
||||||
|
(pad "B9" smd rect
|
||||||
|
(at -1.491 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "f6f59208-cd25-461c-9a35-79341aa13e6c")
|
||||||
|
)
|
||||||
|
(pad "B12" smd rect
|
||||||
|
(at -2.75 -2.378 90)
|
||||||
|
(size 1.65 0.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(clearance 0.001)
|
||||||
|
(thermal_bridge_angle 45)
|
||||||
|
(uuid "6354e3b0-f7fb-44ed-b9cd-9a64f3a9a374")
|
||||||
|
)
|
||||||
|
(model "${KICAD8_3DMODEL_DIR}/Connector_USB.3dshapes/USB_C_Receptacle_GCT_USB4125-xx-x-0190_6P_TopMnt_Horizontal.wrl"
|
||||||
|
(offset
|
||||||
|
(xyz 0 0 0)
|
||||||
|
)
|
||||||
|
(scale
|
||||||
|
(xyz 1 1 1)
|
||||||
|
)
|
||||||
|
(rotate
|
||||||
|
(xyz 0 0 0)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
(footprint "XL-1615RGBC-WS2812B" (version 20221018) (generator pcbnew)
|
||||||
|
(layer "F.Cu")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference "REF**" (at 0 -12.7 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.1)))
|
||||||
|
(tstamp 1cc34f35-467d-48b2-b5a7-97fe61aa7aed)
|
||||||
|
)
|
||||||
|
(fp_text value "XL-1615RGBC-WS2812B" (at 0 -11.2 unlocked) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 6be87cd0-00f5-4446-85cd-8570400250b6)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}" (at 0 -9.7 unlocked) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 831430c3-a7d9-4cba-b68b-8926bf5c1176)
|
||||||
|
)
|
||||||
|
(fp_line (start -0.8 -0.85) (end 0.8 -0.85)
|
||||||
|
(stroke (width 0.1) (type default)) (layer "F.SilkS") (tstamp e0ed9aac-88bf-4fea-9fd3-008546fcf5b1))
|
||||||
|
(fp_line (start -0.8 -0.07) (end -0.8 0.07)
|
||||||
|
(stroke (width 0.1) (type default)) (layer "F.SilkS") (tstamp 6208798a-0569-445c-b1ba-7d5c66b0d1e8))
|
||||||
|
(fp_line (start -0.8 0.85) (end 0.8 0.85)
|
||||||
|
(stroke (width 0.1) (type default)) (layer "F.SilkS") (tstamp 59820e28-c7ea-4011-a69c-9c11511b75b3))
|
||||||
|
(fp_line (start 0.8 -0.07) (end 0.8 0.07)
|
||||||
|
(stroke (width 0.1) (type default)) (layer "F.SilkS") (tstamp c37cd534-8dc2-475e-bb84-4d1556dc7032))
|
||||||
|
(fp_poly
|
||||||
|
(pts
|
||||||
|
(xy -0.282535 -0.017658)
|
||||||
|
(xy 0.005886 -0.22956)
|
||||||
|
(xy 0.005886 0.217788)
|
||||||
|
)
|
||||||
|
|
||||||
|
(stroke (width 0.1) (type solid)) (fill solid) (layer "F.SilkS") (tstamp 0be5f571-678c-4658-9678-257ddbe063b1))
|
||||||
|
(pad "1" smd rect (at -0.75 -0.45) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(thermal_bridge_angle 45) (tstamp 763cdd37-22cc-4626-bf91-dca80ff2d9e3))
|
||||||
|
(pad "2" smd rect (at 0.75 -0.45) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(thermal_bridge_angle 45) (tstamp f7aa557d-2994-4dc7-b37b-75f842414428))
|
||||||
|
(pad "3" smd rect (at -0.75 0.45) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(thermal_bridge_angle 45) (tstamp 118bd5f1-9fb9-4bd5-822d-6816257701a9))
|
||||||
|
(pad "4" smd rect (at 0.75 0.45) (size 0.8 0.65) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(thermal_bridge_angle 45) (tstamp 14e0004c-bdcc-4e07-9796-ab52b0e5cf96))
|
||||||
|
)
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
(footprint "YTC-A1001LF-04A"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -0.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7dc1773f-6e9f-45f2-b100-4f5aa1dd9694")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "YTC-A1001LF-04A"
|
||||||
|
(at 0 1 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "c0df5bb6-1406-45ad-b121-58cbf8da0a44")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "28eeb0fb-cad5-4833-8cbf-d8b592d402a8")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "c4001410-3bb4-4028-91a4-cca150598e0e")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "1368bffd-293d-45a3-a23d-3f06fa47110a")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_text user "${REFERENCE}"
|
||||||
|
(at 0 2.5 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "270ae68c-3059-4d9c-bb1e-d97c9cc488af")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
111
Schematics/Block-Party/Project-Libraries/symbols/Quinn_lib.bak
Normal file
111
Schematics/Block-Party/Project-Libraries/symbols/Quinn_lib.bak
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
|
||||||
|
(symbol "Bottom_Block" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (at 2.54 1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "Bottom_Block_0_1"
|
||||||
|
(rectangle (start 0 0) (end 6.35 -12.7)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "Bottom_Block_1_1"
|
||||||
|
(pin power_in line (at -2.54 -11.43 0) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -2.54 -8.89 0) (length 2.54)
|
||||||
|
(name "SIG" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -2.54 -6.35 0) (length 2.54)
|
||||||
|
(name "DIN" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at -2.54 -3.81 0) (length 2.54)
|
||||||
|
(name "+5V" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -2.54 -1.27 0) (length 2.54)
|
||||||
|
(name "HOLE" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "5" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (at 0 -2.54 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1_0_1"
|
||||||
|
(rectangle (start -1.27 -1.27) (end 1.27 -3.81)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1_1_1"
|
||||||
|
(pin input line (at -3.81 -2.54 0) (length 2.54)
|
||||||
|
(name "" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "LED" (at -1.27 1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B_0_1"
|
||||||
|
(rectangle (start -3.81 -2.54) (end 5.08 -7.62)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B_1_1"
|
||||||
|
(text "XL-1615RGBC-WS2812B" (at 7.62 -1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(pin output line (at -6.35 -3.81 0) (length 2.54)
|
||||||
|
(name "DO" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 7.62 -3.81 180) (length 2.54)
|
||||||
|
(name "VDD" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at -6.35 -6.35 0) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at 7.62 -6.35 180) (length 2.54)
|
||||||
|
(name "DI" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
(kicad_symbol_lib (version 20220914) (generator kicad_symbol_editor)
|
||||||
|
(symbol "Bottom_Block" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (at 2.54 1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "Bottom_Block_0_1"
|
||||||
|
(rectangle (start 0 0) (end 6.35 -12.7)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "Bottom_Block_1_1"
|
||||||
|
(pin power_in line (at -2.54 -11.43 0) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -2.54 -8.89 0) (length 2.54)
|
||||||
|
(name "SIG" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -2.54 -6.35 0) (length 2.54)
|
||||||
|
(name "DIN" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at -2.54 -3.81 0) (length 2.54)
|
||||||
|
(name "+5V" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -2.54 -1.27 0) (length 2.54)
|
||||||
|
(name "HOLE" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "5" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (at 0 -2.54 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1_0_1"
|
||||||
|
(rectangle (start -1.27 -1.27) (end 1.27 -3.81)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "HDR-M-2.54_1x1_1_1"
|
||||||
|
(pin input line (at -3.81 -2.54 0) (length 2.54)
|
||||||
|
(name "" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "Top_Block" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "Top_Block_0_1"
|
||||||
|
(rectangle (start 0 -2.54) (end 6.35 -12.7)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "Top_Block_1_1"
|
||||||
|
(pin power_out line (at -2.54 -3.81 0) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at -2.54 -6.35 0) (length 2.54)
|
||||||
|
(name "SIG" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin output line (at -2.54 -8.89 0) (length 2.54)
|
||||||
|
(name "DOUT" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_out line (at -2.54 -11.43 0) (length 2.54)
|
||||||
|
(name "+5V" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B" (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "LED" (at -1.27 1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Value" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(property "Footprint" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "" (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) hide)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B_0_1"
|
||||||
|
(rectangle (start -3.81 -2.54) (end 5.08 -7.62)
|
||||||
|
(stroke (width 0) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "XL-1615RGBC-WS2812B_1_1"
|
||||||
|
(text "XL-1615RGBC-WS2812B" (at 7.62 -1.27 0)
|
||||||
|
(effects (font (size 1.27 1.27)))
|
||||||
|
)
|
||||||
|
(pin output line (at -6.35 -3.81 0) (length 2.54)
|
||||||
|
(name "DO" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 7.62 -3.81 180) (length 2.54)
|
||||||
|
(name "VDD" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin power_in line (at -6.35 -6.35 0) (length 2.54)
|
||||||
|
(name "GND" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "3" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin input line (at 7.62 -6.35 180) (length 2.54)
|
||||||
|
(name "DI" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "4" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
(footprint 691214110002S (layer F.Cu) (tedit 6623D2C3)
|
||||||
|
(descr "<b>WR-TBL Serie 2141S - 3.50 mm Horizontal Entry Modular w. Rising Cage Clamp<br></b>Max Height =9.1mm , Pitch 3.5mm , 2 Pins")
|
||||||
|
(fp_text reference REF** (at 0.0 -5.135 0) (layer F.SilkS)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value 691214110002S (at 4.755 4.865 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad 1 thru_hole circle (at -1.75 0.0) (size 1.65 1.65) (drill 1.1) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad 2 thru_hole circle (at 1.75 0.0) (size 1.65 1.65) (drill 1.1) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(fp_line (start -3.5 3.5) (end 3.5 3.5) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -3.5 -3.8) (end 3.5 -3.8) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -3.5 3.5) (end -3.5 -3.8) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 4.1 2.0) (end 4.1 1.318) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 4.1 -2.378) (end 4.1 -3.412) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 -3.8) (end 3.5 -3.15) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 -2.64) (end 3.5 1.55) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 2.0) (end 3.5 3.5) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 -3.15) (end 4.1 -3.412) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 -2.64) (end 4.1 -2.378) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 2.0) (end 4.1 2.0) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 3.5 1.55) (end 4.1 1.318) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -3.6 -3.9) (end 3.6 -3.9) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 -3.9) (end 3.6 -3.25) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 -3.25) (end 4.2 -3.512) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 4.2 -3.512) (end 4.2 -2.278) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 4.2 -2.278) (end 3.6 -2.54) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 -2.54) (end 3.6 1.45) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 1.45) (end 4.2 1.2) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 4.2 1.2) (end 4.2 2.1) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 4.2 2.1) (end 3.6 2.1) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 2.1) (end 3.6 3.6) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start 3.6 3.6) (end -3.6 3.6) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start -3.6 3.6) (end -3.6 -3.9) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_poly
|
||||||
|
(pts
|
||||||
|
(xy -3.75 -4.05)
|
||||||
|
(xy 4.35 -4.05)
|
||||||
|
(xy 4.35 3.75)
|
||||||
|
(xy -3.75 3.75)
|
||||||
|
) (layer F.CrtYd) (width 0.1)
|
||||||
|
)
|
||||||
|
(fp_circle (center -2.6 -1.6) (end -2.5 -1.6) (layer F.SilkS) (width 0.4))
|
||||||
|
)
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
|
||||||
|
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
|
||||||
|
(symbol "691214110002S" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (id 0) (at -4.88 -0.922 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom right))
|
||||||
|
)
|
||||||
|
(property "Value" "691214110002S" (id 1) (at -4.83 -2.58 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom right))
|
||||||
|
)
|
||||||
|
(property "Footprint" "691214110002S:691214110002S" (id 2) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "WIRE" "30 to 16 (AWG) 0.05 to 1.31 (mm²)" (id 4) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Description" "\nWire-To-Board Terminal Block [Würth Elektronik] 691214110002S Wire-To-Board Terminal Block\n" (id 5) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Package" "None" (id 6) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=8068166&manufacturer=Wurth Electronics&part_name=691214110002S&search_term=3.5mm terminal block" (id 7) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MOUNT" "SMT" (id 8) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "IR-VDE" "10A" (id 9) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "IR-UL" "10A" (id 10) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "SnapEDA_Link" "https://www.snapeda.com/parts/691214110002S/Wurth+Electronics+Inc/view-part/?ref=snap" (id 11) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Availability" "In Stock" (id 12) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "WORKING-VOLTAGE-UL" "300V (AC)" (id 13) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "PINS" "2" (id 14) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MF" "Wurth Electronics" (id 15) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "DATASHEET-URL" "https://www.we-online.com/redexpert/spec/691214110002S?ae" (id 16) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MP" "691214110002S" (id 17) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "PITCH" "3.5mm" (id 18) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "PART-NUMBER" "691214110002S" (id 19) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "WORKING-VOLTAGE-VDE" "130V (AC)" (id 20) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "TYPE" "Horizontal" (id 21) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Price" "None" (id 22) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Check_prices" "https://www.snapeda.com/parts/691214110002S/Wurth+Electronics+Inc/view-part/?ref=eda" (id 23) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(symbol "691214110002S_0_0"
|
||||||
|
(polyline
|
||||||
|
(pts (xy -2.54 -1.778) (xy -2.54 -2.54)) (stroke (width 0.254))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts (xy 0.0 -1.778) (xy 0.0 -2.54)) (stroke (width 0.254))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts (xy -2.286 -1.016) (xy -2.794 -1.524)) (stroke (width 0.1524))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts (xy 0.254 -1.016) (xy -0.254 -1.524)) (stroke (width 0.1524))
|
||||||
|
)
|
||||||
|
(circle (center -2.54 -1.27) (radius 0.508)
|
||||||
|
(stroke (width 0.254)) (fill (type none))
|
||||||
|
)
|
||||||
|
(circle (center 0.0 -1.27) (radius 0.508)
|
||||||
|
(stroke (width 0.254)) (fill (type none))
|
||||||
|
)
|
||||||
|
(rectangle (start -3.81 -2.54) (end 1.27 -2.22044604925e-16)
|
||||||
|
(stroke (width 0.254)) (fill (type background))
|
||||||
|
)
|
||||||
|
(pin passive line (at -2.54 -5.08 90.0) (length 2.54)
|
||||||
|
(name "~"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line (at 0.0 -5.08 90.0) (length 2.54)
|
||||||
|
(name "~"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
9302
Schematics/PCB Components/2p 3.5mm terminal block/691214110002S.step
Normal file
9302
Schematics/PCB Components/2p 3.5mm terminal block/691214110002S.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>
|
||||||
347
Schematics/PCB Components/2p 3.pretty/691214110002S.kicad_mod
Normal file
347
Schematics/PCB Components/2p 3.pretty/691214110002S.kicad_mod
Normal file
@@ -0,0 +1,347 @@
|
|||||||
|
(footprint "691214110002S"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(descr "<b>WR-TBL Serie 2141S - 3.50 mm Horizontal Entry Modular w. Rising Cage Clamp<br></b>Max Height =9.1mm , Pitch 3.5mm , 2 Pins")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at 0 -5.135 0)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "bebeb84c-2e7a-4e6f-bef8-3ce1fa4f9173")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "691214110002S"
|
||||||
|
(at 4.755 4.865 0)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "dd684d07-9ac0-45c8-a77b-a8aad4132616")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "bf1e1f03-0ea1-4b4d-9dfb-54c39e3663cc")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "fb5f2841-0e42-496d-9af8-a7b971d24c88")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "bc41eaff-783a-42a9-9f09-06c6ee5e5916")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_line
|
||||||
|
(start -3.6 -3.9)
|
||||||
|
(end 3.6 -3.9)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "540baf80-574a-4e31-94e5-f3815f38e3e6")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.6 3.6)
|
||||||
|
(end -3.6 -3.9)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "3bf7a506-a392-4f18-9e25-a1ab0b25ca84")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 -3.9)
|
||||||
|
(end 3.6 -3.25)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "649c0e50-7f55-4414-9983-b82f2beb04e4")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 -3.25)
|
||||||
|
(end 4.2 -3.512)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "bedd90f8-de71-44a0-8088-36105d3a8c8a")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 -2.54)
|
||||||
|
(end 3.6 1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "05d8a329-ade8-4553-8fd9-5f41405e17de")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 1.45)
|
||||||
|
(end 4.2 1.2)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "2f464a73-8aee-4b6e-9dfd-84e7e7e1ddea")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 2.1)
|
||||||
|
(end 3.6 3.6)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "8f1f27f8-a8fa-43fd-9e1e-2393e9f6dd1c")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.6 3.6)
|
||||||
|
(end -3.6 3.6)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "8ca26fcb-2b81-4976-ac59-fabb5c4d5ba4")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.2 -3.512)
|
||||||
|
(end 4.2 -2.278)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "3592f0c4-20be-4910-b8a0-66d2fcde9c4b")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.2 -2.278)
|
||||||
|
(end 3.6 -2.54)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "8cbe667a-6375-4e4e-9712-439cb82c15d7")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.2 1.2)
|
||||||
|
(end 4.2 2.1)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "643a2bfb-80bc-463d-b46d-fb809c5b45ad")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.2 2.1)
|
||||||
|
(end 3.6 2.1)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "dae148cf-7f19-498b-b7ff-1981c5048cce")
|
||||||
|
)
|
||||||
|
(fp_circle
|
||||||
|
(center -2.6 -1.6)
|
||||||
|
(end -2.5 -1.6)
|
||||||
|
(stroke
|
||||||
|
(width 0.4)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "7a9373ec-f5c2-4b80-b8cb-5f9f26173d75")
|
||||||
|
)
|
||||||
|
(fp_poly
|
||||||
|
(pts
|
||||||
|
(xy -3.75 -4.05) (xy 4.35 -4.05) (xy 4.35 3.75) (xy -3.75 3.75)
|
||||||
|
)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill solid)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "cfe2149f-b711-4768-99e7-ae4197e2cc6f")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.5 -3.8)
|
||||||
|
(end 3.5 -3.8)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "7d047a6f-dc2d-4a86-8518-5b24bd668dee")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.5 3.5)
|
||||||
|
(end -3.5 -3.8)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "f61f916b-271a-4c0e-860a-ca2e0f65f799")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.5 3.5)
|
||||||
|
(end 3.5 3.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "bdf755e7-77fe-45be-a006-e85da8753dc3")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 -3.8)
|
||||||
|
(end 3.5 -3.15)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "6f0d43fb-c989-480a-a6f4-bcb528b42d1c")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 -3.15)
|
||||||
|
(end 4.1 -3.412)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "9425e0a9-f9da-4cb9-9475-3fd32605b23a")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 -2.64)
|
||||||
|
(end 3.5 1.55)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "55a231a6-2a43-4b22-aa71-0c9905a7a320")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 -2.64)
|
||||||
|
(end 4.1 -2.378)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "b35016ea-edf6-49c3-a0f0-4d06b5236ca3")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 1.55)
|
||||||
|
(end 4.1 1.318)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "1406b1b7-b7fd-4465-9c18-b045e0752eb1")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 2)
|
||||||
|
(end 3.5 3.5)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "cc381400-1534-4157-a728-1a091b61d554")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.5 2)
|
||||||
|
(end 4.1 2)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "8583bc79-ffed-42db-865d-f4e8a549f011")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.1 -2.378)
|
||||||
|
(end 4.1 -3.412)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "3cfd6a72-23fb-4f36-8c9a-eefcca2ac324")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 4.1 2)
|
||||||
|
(end 4.1 1.318)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "063bb2f1-dc33-43fd-b4bd-5f76997223b4")
|
||||||
|
)
|
||||||
|
(pad "1" thru_hole circle
|
||||||
|
(at -1.75 0)
|
||||||
|
(size 1.65 1.65)
|
||||||
|
(drill 1.1)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "becb2f29-67cd-4338-b363-fbab6946176b")
|
||||||
|
)
|
||||||
|
(pad "2" thru_hole circle
|
||||||
|
(at 1.75 0)
|
||||||
|
(size 1.65 1.65)
|
||||||
|
(drill 1.1)
|
||||||
|
(layers "*.Cu" "*.Mask")
|
||||||
|
(remove_unused_layers no)
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "5826bbea-291e-4a37-a12f-12c663f79204")
|
||||||
|
)
|
||||||
|
)
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
(footprint "XCVR_ESP32-S3-DEVKITC-1-N8R2" (version 20221018) (generator pcbnew)
|
||||||
|
(layer "F.Cu")
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_text reference "REF**" (at -9.775 -39.605) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp e37c4557-e19a-436c-9392-0c409ef8b7ee)
|
||||||
|
)
|
||||||
|
(fp_text value "XCVR_ESP32-S3-DEVKITC-1-N8R2" (at 4.83 33.255) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp b9669fce-20d2-4e5a-a154-193379887f45)
|
||||||
|
)
|
||||||
|
(fp_line (start -12.7 -31.37) (end 12.7 -31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 439a63f2-c2f3-4742-ab57-2d2dbc0dadd1))
|
||||||
|
(fp_line (start -12.7 31.37) (end -12.7 -31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp f16d7f33-c35b-445e-ae17-aa41c3efc60c))
|
||||||
|
(fp_line (start 12.7 -31.37) (end 12.7 31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 4e25a1ef-6aeb-420b-b0ba-0df09f56b127))
|
||||||
|
(fp_line (start 12.7 31.37) (end -12.7 31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 4bac60aa-7389-4274-a42e-32de689c7408))
|
||||||
|
(fp_line (start -12.95 -37.92) (end -12.95 32.21)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 46ecf523-359a-4535-b0bc-8969a277e83c))
|
||||||
|
(fp_line (start -12.95 32.21) (end 12.95 32.21)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 63cab19f-fdae-447f-a860-7c304e441e81))
|
||||||
|
(fp_line (start 12.95 -37.92) (end -12.95 -37.92)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 90b414d6-2e7a-4c54-9588-27ede336b3d0))
|
||||||
|
(fp_line (start 12.95 32.21) (end 12.95 -37.92)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d3823e5c-4c03-45d7-8b85-740d6ad25630))
|
||||||
|
(fp_line (start -12.7 -31.37) (end 12.7 -31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 7235c27d-339f-488e-9f56-de2127b9a3f3))
|
||||||
|
(fp_line (start -12.7 31.37) (end -12.7 -31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 69b0b5cd-1c86-4ffb-a4fc-62c086152146))
|
||||||
|
(fp_line (start 12.7 -31.37) (end 12.7 31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp c4dfc13d-a4cc-4882-88e8-b6911a315637))
|
||||||
|
(fp_line (start 12.7 31.37) (end -12.7 31.37)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 5cb943d6-e832-4199-8259-80d9b06120a9))
|
||||||
|
(pad "J1_1" thru_hole rect (at -11.43 -29.97) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp ceda7013-c2c6-469e-8268-2d1d1b1fa12a))
|
||||||
|
(pad "J1_2" thru_hole circle (at -11.43 -27.43) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 16b39f6e-b5fc-478c-9607-bd98bd533333))
|
||||||
|
(pad "J1_3" thru_hole circle (at -11.43 -24.89) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 02e378a9-96a9-4dd6-8fab-64e1c0215a56))
|
||||||
|
(pad "J1_4" thru_hole circle (at -11.43 -22.35) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp c4cf8352-0ca7-48d1-b62c-a2894d046c23))
|
||||||
|
(pad "J1_5" thru_hole circle (at -11.43 -19.81) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp c5e11a22-197d-4717-b90d-e3cd086670c5))
|
||||||
|
(pad "J1_6" thru_hole circle (at -11.43 -17.27) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp e3b74571-d645-4fb1-b6bf-dcbfcdb632c1))
|
||||||
|
(pad "J1_7" thru_hole circle (at -11.43 -14.73) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp fb7df6df-c032-4501-a6a5-1546bc60a6a3))
|
||||||
|
(pad "J1_8" thru_hole circle (at -11.43 -12.19) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 5363f573-924e-49ba-b4ac-0032a99f2bc2))
|
||||||
|
(pad "J1_9" thru_hole circle (at -11.43 -9.65) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp a12232bd-d5be-41e9-b2b6-f04f89770ef6))
|
||||||
|
(pad "J1_10" thru_hole circle (at -11.43 -7.11) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 6b98e792-6649-4b16-8291-ff6055ab6b3a))
|
||||||
|
(pad "J1_11" thru_hole circle (at -11.43 -4.57) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp c87372e6-9f02-4302-bb45-428f93cc5d88))
|
||||||
|
(pad "J1_12" thru_hole circle (at -11.43 -2.03) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 6537ff6f-5786-4d78-96c0-86e31753aab2))
|
||||||
|
(pad "J1_13" thru_hole circle (at -11.43 0.51) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 34b40b80-c6ac-4559-b929-75e3b7272a9f))
|
||||||
|
(pad "J1_14" thru_hole circle (at -11.43 3.05) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 9907999c-452a-4865-b4db-09e17244625d))
|
||||||
|
(pad "J1_15" thru_hole circle (at -11.43 5.59) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp ed75d1ef-de83-4cc1-af2d-dd09aefa17e3))
|
||||||
|
(pad "J1_16" thru_hole circle (at -11.43 8.13) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 20778e46-4030-454a-84da-0155334aac2d))
|
||||||
|
(pad "J1_17" thru_hole circle (at -11.43 10.67) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 5d157cc4-078a-413a-9d59-b5689cf5a66b))
|
||||||
|
(pad "J1_18" thru_hole circle (at -11.43 13.21) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 42ca8ecf-d32e-4aff-8f53-87674d95574d))
|
||||||
|
(pad "J1_19" thru_hole circle (at -11.43 15.75) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp a5404de6-1685-463a-8ac5-08f184ed6739))
|
||||||
|
(pad "J1_20" thru_hole circle (at -11.43 18.29) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 589ce21e-941a-4761-a05b-98de849034f0))
|
||||||
|
(pad "J1_21" thru_hole circle (at -11.43 20.83) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp aa2903d9-8a20-4ad3-8f0a-25d8a14a3dca))
|
||||||
|
(pad "J1_22" thru_hole circle (at -11.43 23.37) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp d345ca06-f89d-48b2-86d9-0f0b9589a683))
|
||||||
|
(pad "J3_1" thru_hole circle (at 11.43 -29.97) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 3fc1f168-a979-4925-ad0b-af9d9d4fac5b))
|
||||||
|
(pad "J3_2" thru_hole circle (at 11.43 -27.43) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 150ecef7-f8c2-4fac-a08e-85926a56ac0a))
|
||||||
|
(pad "J3_3" thru_hole circle (at 11.43 -24.89) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 7b95fc4d-26fa-4a7c-9050-9cbccd256c6d))
|
||||||
|
(pad "J3_4" thru_hole circle (at 11.43 -22.35) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp ff844e90-b5de-4875-af0a-97d0c95e3490))
|
||||||
|
(pad "J3_5" thru_hole circle (at 11.43 -19.81) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 0e39082c-4d04-4eca-9e47-09fa49f85827))
|
||||||
|
(pad "J3_6" thru_hole circle (at 11.43 -17.27) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 34a80db4-a3d8-423f-a7dd-8d1be8d2ecc0))
|
||||||
|
(pad "J3_7" thru_hole circle (at 11.43 -14.73) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 7ac3bb61-b349-44f4-812c-889459825469))
|
||||||
|
(pad "J3_8" thru_hole circle (at 11.43 -12.19) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp e3d1085a-b927-4fcb-9b48-ab2b6c54b312))
|
||||||
|
(pad "J3_9" thru_hole circle (at 11.43 -9.65) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp af9da3ac-9212-46d7-b9d9-406b22bc5225))
|
||||||
|
(pad "J3_10" thru_hole circle (at 11.43 -7.11) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 387624c7-805c-4100-8ee5-d97aa2508c74))
|
||||||
|
(pad "J3_11" thru_hole circle (at 11.43 -4.57) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp e083d049-1475-4753-9d8a-643fa29e4fc5))
|
||||||
|
(pad "J3_12" thru_hole circle (at 11.43 -2.03) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 02de6982-42c8-42f7-a035-7decaf546cf0))
|
||||||
|
(pad "J3_13" thru_hole circle (at 11.43 0.51) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 9324a7be-d676-4c81-8573-84b8ab844864))
|
||||||
|
(pad "J3_14" thru_hole circle (at 11.43 3.05) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp bec25a70-5d89-4408-8aff-a48acd918a14))
|
||||||
|
(pad "J3_15" thru_hole circle (at 11.43 5.59) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp dcfb09fc-c5a4-42fc-9606-55ff3717839d))
|
||||||
|
(pad "J3_16" thru_hole circle (at 11.43 8.13) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp f9f48047-8fec-4c0b-ac01-ae0c9b774659))
|
||||||
|
(pad "J3_17" thru_hole circle (at 11.43 10.67) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 635a5be6-e107-4480-aa73-c774c4527c21))
|
||||||
|
(pad "J3_18" thru_hole circle (at 11.43 13.21) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp d5faa50b-7bf9-4b29-ace3-d79daec1045b))
|
||||||
|
(pad "J3_19" thru_hole circle (at 11.43 15.75) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp b00316e7-8f1e-41a3-9e33-53dacb4588ef))
|
||||||
|
(pad "J3_20" thru_hole circle (at 11.43 18.29) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp b2b058b4-b56b-4196-b5e1-92d9bd6c5852))
|
||||||
|
(pad "J3_21" thru_hole circle (at 11.43 20.83) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 8d1aaab1-0a60-4736-810d-9eda24acfb03))
|
||||||
|
(pad "J3_22" thru_hole circle (at 11.43 23.37) (size 1.53 1.53) (drill 1.02) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 7b37d7b6-2345-490b-8492-21051fad9ad2))
|
||||||
|
)
|
||||||
@@ -0,0 +1,407 @@
|
|||||||
|
|
||||||
|
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
|
||||||
|
(symbol "ESP32-S3-DEVKITC-1-N8R2" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "U" (id 0) (at -17.78 35.56 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify top left))
|
||||||
|
)
|
||||||
|
(property "Value" "ESP32-S3-DEVKITC-1-N8R2" (id 1) (at -17.78 -35.56 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom left))
|
||||||
|
)
|
||||||
|
(property "Footprint" "ESP32-S3-DEVKITC-1-N8R2:XCVR_ESP32-S3-DEVKITC-1-N8R2" (id 2) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MF" "Espressif Systems" (id 4) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Description" "\nWiFi Development Tools - 802.11 (Engineering Samples Only) ESP32-S3 General-Purpose Development Board, ESP32-S3-WROOM-1-N8R2, with Pin Header\n" (id 5) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Package" "None" (id 6) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Price" "None" (id 7) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Check_prices" "https://www.snapeda.com/parts/ESP32-S3-DEVKITC-1-N8R2/Espressif+Systems/view-part/?ref=eda" (id 8) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "STANDARD" "Manufacturer Recommendations" (id 9) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "PARTREV" "V1" (id 10) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "SnapEDA_Link" "https://www.snapeda.com/parts/ESP32-S3-DEVKITC-1-N8R2/Espressif+Systems/view-part/?ref=snap" (id 11) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MP" "ESP32-S3-DEVKITC-1-N8R2" (id 12) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=8918256&manufacturer=Espressif Systems&part_name=ESP32-S3-DEVKITC-1-N8R2&search_term=None" (id 13) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Availability" "In Stock" (id 14) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MANUFACTURER" "Espressif" (id 15) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(symbol "ESP32-S3-DEVKITC-1-N8R2_0_0"
|
||||||
|
(rectangle (start -17.78 -33.02) (end 17.78 33.02)
|
||||||
|
(stroke (width 0.254)) (fill (type background))
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 27.94 180.0) (length 5.08)
|
||||||
|
(name "3V3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 27.94 180.0) (length 5.08)
|
||||||
|
(name "3V3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin input line (at -22.86 25.4 0) (length 5.08)
|
||||||
|
(name "RST"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 17.78 0) (length 5.08)
|
||||||
|
(name "GPIO1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_4"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 15.24 0) (length 5.08)
|
||||||
|
(name "GPIO2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_5"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 10.16 0) (length 5.08)
|
||||||
|
(name "GPIO4"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_4"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 12.7 0) (length 5.08)
|
||||||
|
(name "GPIO3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_13"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 7.62 0) (length 5.08)
|
||||||
|
(name "GPIO5"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_5"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 5.08 0) (length 5.08)
|
||||||
|
(name "GPIO6"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_6"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 2.54 0) (length 5.08)
|
||||||
|
(name "GPIO7"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_7"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 0.0 0) (length 5.08)
|
||||||
|
(name "GPIO8"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_12"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -2.54 0) (length 5.08)
|
||||||
|
(name "GPIO9"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_15"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -5.08 0) (length 5.08)
|
||||||
|
(name "GPIO10"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_16"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -7.62 0) (length 5.08)
|
||||||
|
(name "GPIO11"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_17"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -10.16 0) (length 5.08)
|
||||||
|
(name "GPIO12"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_18"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -12.7 0) (length 5.08)
|
||||||
|
(name "GPIO13"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_19"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -15.24 0) (length 5.08)
|
||||||
|
(name "GPIO14"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_20"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -17.78 0) (length 5.08)
|
||||||
|
(name "GPIO15"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_8"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -20.32 0) (length 5.08)
|
||||||
|
(name "GPIO16"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_9"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -22.86 0) (length 5.08)
|
||||||
|
(name "GPIO17"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_10"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -25.4 0) (length 5.08)
|
||||||
|
(name "GPIO18"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_11"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 20.32 0) (length 5.08)
|
||||||
|
(name "GPIO0"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_14"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 -30.48 180.0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_22"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 -30.48 180.0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 -30.48 180.0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_21"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 -30.48 180.0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_22"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at 22.86 30.48 180.0) (length 5.08)
|
||||||
|
(name "5V0"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_21"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 2.54 180.0) (length 5.08)
|
||||||
|
(name "GPIO48"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_16"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 5.08 180.0) (length 5.08)
|
||||||
|
(name "GPIO47"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_17"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 7.62 180.0) (length 5.08)
|
||||||
|
(name "GPIO46"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J1_14"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 10.16 180.0) (length 5.08)
|
||||||
|
(name "GPIO45"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_15"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -22.86 -27.94 0) (length 5.08)
|
||||||
|
(name "GPIO21"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_18"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -25.4 180.0) (length 5.08)
|
||||||
|
(name "USB_D+/GPIO20"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_19"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -22.86 180.0) (length 5.08)
|
||||||
|
(name "USB_D-/GPIO19"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_20"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -17.78 180.0) (length 5.08)
|
||||||
|
(name "U0RXD/GPIO44"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -15.24 180.0) (length 5.08)
|
||||||
|
(name "U0TXD/GPIO43"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -10.16 180.0) (length 5.08)
|
||||||
|
(name "MTMS/GPIO42"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_6"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -7.62 180.0) (length 5.08)
|
||||||
|
(name "MTDI/GPIO41"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_7"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -5.08 180.0) (length 5.08)
|
||||||
|
(name "MTDO/GPIO40"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_8"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 -2.54 180.0) (length 5.08)
|
||||||
|
(name "MTCK/GPIO39"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_9"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 12.7 180.0) (length 5.08)
|
||||||
|
(name "GPIO38"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_10"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 15.24 180.0) (length 5.08)
|
||||||
|
(name "GPIO37"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_11"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 17.78 180.0) (length 5.08)
|
||||||
|
(name "GPIO36"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_12"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at 22.86 20.32 180.0) (length 5.08)
|
||||||
|
(name "GPIO35"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "J3_13"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
(footprint XCVR_ESP32-S3-DEVKITC-1-N8R2 (layer F.Cu) (tedit 65C7A7CE)
|
||||||
|
(descr "")
|
||||||
|
(fp_text reference REF** (at -9.775 -39.605 0) (layer F.SilkS)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value XCVR_ESP32-S3-DEVKITC-1-N8R2 (at 4.83 33.255 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad J1_22 thru_hole circle (at -11.43 23.37) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_22 thru_hole circle (at 11.43 23.37) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_21 thru_hole circle (at -11.43 20.83) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_20 thru_hole circle (at -11.43 18.29) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_19 thru_hole circle (at -11.43 15.75) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_18 thru_hole circle (at -11.43 13.21) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_17 thru_hole circle (at -11.43 10.67) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_16 thru_hole circle (at -11.43 8.13) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_15 thru_hole circle (at -11.43 5.59) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_14 thru_hole circle (at -11.43 3.05) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_13 thru_hole circle (at -11.43 0.51) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_12 thru_hole circle (at -11.43 -2.03) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_11 thru_hole circle (at -11.43 -4.57) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_10 thru_hole circle (at -11.43 -7.11) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_9 thru_hole circle (at -11.43 -9.65) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_8 thru_hole circle (at -11.43 -12.19) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_7 thru_hole circle (at -11.43 -14.73) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_6 thru_hole circle (at -11.43 -17.27) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_5 thru_hole circle (at -11.43 -19.81) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_4 thru_hole circle (at -11.43 -22.35) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_3 thru_hole circle (at -11.43 -24.89) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_2 thru_hole circle (at -11.43 -27.43) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J1_1 thru_hole rect (at -11.43 -29.97) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_21 thru_hole circle (at 11.43 20.83) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_20 thru_hole circle (at 11.43 18.29) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_19 thru_hole circle (at 11.43 15.75) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_18 thru_hole circle (at 11.43 13.21) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_17 thru_hole circle (at 11.43 10.67) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_16 thru_hole circle (at 11.43 8.13) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_15 thru_hole circle (at 11.43 5.59) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_14 thru_hole circle (at 11.43 3.05) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_13 thru_hole circle (at 11.43 0.51) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_12 thru_hole circle (at 11.43 -2.03) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_11 thru_hole circle (at 11.43 -4.57) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_10 thru_hole circle (at 11.43 -7.11) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_9 thru_hole circle (at 11.43 -9.65) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_8 thru_hole circle (at 11.43 -12.19) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_7 thru_hole circle (at 11.43 -14.73) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_6 thru_hole circle (at 11.43 -17.27) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_5 thru_hole circle (at 11.43 -19.81) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_4 thru_hole circle (at 11.43 -22.35) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_3 thru_hole circle (at 11.43 -24.89) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_2 thru_hole circle (at 11.43 -27.43) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad J3_1 thru_hole circle (at 11.43 -29.97) (size 1.53 1.53) (drill 1.02) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(fp_line (start -12.7 31.37) (end -12.7 -31.37) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -12.7 -31.37) (end 12.7 -31.37) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 12.7 -31.37) (end 12.7 31.37) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 12.7 31.37) (end -12.7 31.37) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -12.7 31.37) (end -12.7 -31.37) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -12.7 -31.37) (end 12.7 -31.37) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start 12.7 -31.37) (end 12.7 31.37) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start 12.7 31.37) (end -12.7 31.37) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -12.95 -37.92) (end -12.95 32.21) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -12.95 32.21) (end 12.95 32.21) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 12.95 32.21) (end 12.95 -37.92) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 12.95 -37.92) (end -12.95 -37.92) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_circle (center -13.716 -29.972) (end -13.616 -29.972) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_circle (center -13.716 -29.972) (end -13.616 -29.972) (layer F.Fab) (width 0.2))
|
||||||
|
)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>
|
||||||
9
Schematics/PCB Components/KiCad/1N4007W.dcm
Normal file
9
Schematics/PCB Components/KiCad/1N4007W.dcm
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
EESchema-DOCLIB Version 2.0
|
||||||
|
#
|
||||||
|
$CMP 1N4007W
|
||||||
|
D Marking Code A1-A7 Simplified outline SOD-123FL and symbol Marking Code A1-A7 Simplified outline SOD-123FL and symbol
|
||||||
|
K
|
||||||
|
F https://datasheet.lcsc.com/szlcsc/Shandong-Jingdao-Microelectronics-1N4007W_C108803.pdf
|
||||||
|
$ENDCMP
|
||||||
|
#
|
||||||
|
#End Doc Library
|
||||||
36
Schematics/PCB Components/KiCad/1N4007W.kicad_mod
Normal file
36
Schematics/PCB Components/KiCad/1N4007W.kicad_mod
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
(module "1N4007W" (layer F.Cu)
|
||||||
|
(descr "1N4007W-1")
|
||||||
|
(tags "Diode")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference D** (at 0.000 -0) (layer F.SilkS)
|
||||||
|
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||||
|
)
|
||||||
|
(fp_text user %R (at 0.000 -0) (layer F.Fab)
|
||||||
|
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||||
|
)
|
||||||
|
(fp_text value "1N4007W" (at 0.000 -0) (layer F.SilkS) hide
|
||||||
|
(effects (font (size 1.27 1.27) (thickness 0.254)))
|
||||||
|
)
|
||||||
|
(fp_line (start -1.4 0.9) (end 1.4 0.9) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.4 0.9) (end 1.4 -0.9) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start 1.4 -0.9) (end -1.4 -0.9) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -1.4 -0.9) (end -1.4 0.9) (layer F.Fab) (width 0.1))
|
||||||
|
(fp_line (start -3.2 -1.9) (end 3.2 -1.9) (layer F.CrtYd) (width 0.1))
|
||||||
|
(fp_line (start 3.2 -1.9) (end 3.2 1.9) (layer F.CrtYd) (width 0.1))
|
||||||
|
(fp_line (start 3.2 1.9) (end -3.2 1.9) (layer F.CrtYd) (width 0.1))
|
||||||
|
(fp_line (start -3.2 1.9) (end -3.2 -1.9) (layer F.CrtYd) (width 0.1))
|
||||||
|
(fp_line (start -0.6 0.9) (end 0.9 0.9) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start -0.9 -0.9) (end 0.9 -0.9) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start -1.6 -1.5) (end -1.6 -1.5) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start -1.6 -1.4) (end -1.6 -1.4) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_line (start -1.6 -1.5) (end -1.6 -1.4) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_arc (start -1.6 -1.45) (end -1.600 -1.5) (angle -180) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_arc (start -1.6 -1.45) (end -1.600 -1.4) (angle -180) (layer F.SilkS) (width 0.2))
|
||||||
|
(pad 1 smd rect (at -1.600 -0 90) (size 1.200 1.200) (layers F.Cu F.Paste F.Mask))
|
||||||
|
(pad 2 smd rect (at 1.600 -0 90) (size 1.200 1.200) (layers F.Cu F.Paste F.Mask))
|
||||||
|
(model 1N4007W.stp
|
||||||
|
(at (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
82
Schematics/PCB Components/KiCad/1N4007W.kicad_sym
Normal file
82
Schematics/PCB Components/KiCad/1N4007W.kicad_sym
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
(kicad_symbol_lib (version 20211014) (generator SamacSys_ECAD_Model)
|
||||||
|
(symbol "1N4007W" (in_bom yes) (on_board yes) (pin_names hide)
|
||||||
|
(property "Reference" "D" (at 11.43 5.08 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top))
|
||||||
|
)
|
||||||
|
(property "Value" "1N4007W" (at 11.43 2.54 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top))
|
||||||
|
)
|
||||||
|
(property "Footprint" "1N4007W" (at 11.43 -97.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Datasheet" "https://datasheet.lcsc.com/szlcsc/Shandong-Jingdao-Microelectronics-1N4007W_C108803.pdf" (at 11.43 -197.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "ki_description" "Marking Code A1-A7 Simplified outline SOD-123FL and symbol Marking Code A1-A7 Simplified outline SOD-123FL and symbol" (at 11.43 -297.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Height" "1.1" (at 11.43 -397.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Manufacturer_Name" "Jingdao Microelectronics" (at 11.43 -497.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Manufacturer_Part_Number" "1N4007W" (at 11.43 -597.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Mouser Part Number" "" (at 11.43 -697.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Mouser Price/Stock" "" (at 11.43 -797.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Arrow Part Number" "" (at 11.43 -897.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(property "Arrow Price/Stock" "" (at 11.43 -997.46 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify left top) hide)
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts
|
||||||
|
(xy 5.08 2.54)
|
||||||
|
(xy 5.08 -2.54)
|
||||||
|
)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts
|
||||||
|
(xy 2.54 0)
|
||||||
|
(xy 5.08 0)
|
||||||
|
)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts
|
||||||
|
(xy 10.16 0)
|
||||||
|
(xy 12.7 0)
|
||||||
|
)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type none))
|
||||||
|
)
|
||||||
|
(polyline
|
||||||
|
(pts
|
||||||
|
(xy 5.08 0)
|
||||||
|
(xy 10.16 2.54)
|
||||||
|
(xy 10.16 -2.54)
|
||||||
|
(xy 5.08 0)
|
||||||
|
)
|
||||||
|
(stroke (width 0.254) (type default))
|
||||||
|
(fill (type outline))
|
||||||
|
)
|
||||||
|
(pin passive line (at 0 0 0) (length 2.54)
|
||||||
|
(name "K" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "1" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
(pin passive line (at 15.24 0 180) (length 2.54)
|
||||||
|
(name "A" (effects (font (size 1.27 1.27))))
|
||||||
|
(number "2" (effects (font (size 1.27 1.27))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
28
Schematics/PCB Components/KiCad/1N4007W.lib
Normal file
28
Schematics/PCB Components/KiCad/1N4007W.lib
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
EESchema-LIBRARY Version 2.3
|
||||||
|
#encoding utf-8
|
||||||
|
#SamacSys ECAD Model 1N4007W
|
||||||
|
#/15683950/1324718/2.50/2/4/Diode
|
||||||
|
DEF 1N4007W D 0 30 Y Y 1 F N
|
||||||
|
F0 "D" 450 200 50 H V L CNN
|
||||||
|
F1 "1N4007W" 450 100 50 H V L CNN
|
||||||
|
F2 "1N4007W" 450 0 50 H I L CNN
|
||||||
|
F3 "https://datasheet.lcsc.com/szlcsc/Shandong-Jingdao-Microelectronics-1N4007W_C108803.pdf" 450 -100 50 H I L CNN
|
||||||
|
F4 "Marking Code A1-A7 Simplified outline SOD-123FL and symbol Marking Code A1-A7 Simplified outline SOD-123FL and symbol" 450 -200 50 H I L CNN "Description"
|
||||||
|
F5 "1.1" 450 -300 50 H I L CNN "Height"
|
||||||
|
F6 "Jingdao Microelectronics" 450 -400 50 H I L CNN "Manufacturer_Name"
|
||||||
|
F7 "1N4007W" 450 -500 50 H I L CNN "Manufacturer_Part_Number"
|
||||||
|
F8 "" 450 -600 50 H I L CNN "Mouser Part Number"
|
||||||
|
F9 "" 450 -700 50 H I L CNN "Mouser Price/Stock"
|
||||||
|
F10 "" 450 -800 50 H I L CNN "Arrow Part Number"
|
||||||
|
F11 "" 450 -900 50 H I L CNN "Arrow Price/Stock"
|
||||||
|
DRAW
|
||||||
|
X ~ 1 0 0 100 R 50 50 0 0 P
|
||||||
|
X ~ 2 600 0 100 L 50 50 0 0 P
|
||||||
|
P 2 0 1 6 200 100 200 -100 N
|
||||||
|
P 2 0 1 6 100 0 200 0 N
|
||||||
|
P 2 0 1 6 400 0 500 0 N
|
||||||
|
P 4 0 1 10 200 0 400 100 400 -100 200 0 F
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
||||||
46
Schematics/PCB Components/KiCad/1N4007W.mod
Normal file
46
Schematics/PCB Components/KiCad/1N4007W.mod
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
PCBNEW-LibModule-V1 2024-02-10 02:59:28
|
||||||
|
# encoding utf-8
|
||||||
|
Units mm
|
||||||
|
$INDEX
|
||||||
|
1N4007W
|
||||||
|
$EndINDEX
|
||||||
|
$MODULE 1N4007W
|
||||||
|
Po 0 0 0 15 65c6e690 00000000 ~~
|
||||||
|
Li 1N4007W
|
||||||
|
Cd 1N4007W-1
|
||||||
|
Kw Diode
|
||||||
|
Sc 0
|
||||||
|
At SMD
|
||||||
|
AR
|
||||||
|
Op 0 0 0
|
||||||
|
T0 0.000 -0 1.27 1.27 0 0.254 N V 21 N "D**"
|
||||||
|
T1 0.000 -0 1.27 1.27 0 0.254 N I 21 N "1N4007W"
|
||||||
|
DS -1.4 0.9 1.4 0.9 0.1 24
|
||||||
|
DS 1.4 0.9 1.4 -0.9 0.1 24
|
||||||
|
DS 1.4 -0.9 -1.4 -0.9 0.1 24
|
||||||
|
DS -1.4 -0.9 -1.4 0.9 0.1 24
|
||||||
|
DS -3.2 -1.9 3.2 -1.9 0.1 24
|
||||||
|
DS 3.2 -1.9 3.2 1.9 0.1 24
|
||||||
|
DS 3.2 1.9 -3.2 1.9 0.1 24
|
||||||
|
DS -3.2 1.9 -3.2 -1.9 0.1 24
|
||||||
|
DS -0.6 0.9 0.9 0.9 0.2 21
|
||||||
|
DS -0.9 -0.9 0.9 -0.9 0.2 21
|
||||||
|
DS -1.6 -1.5 -1.6 -1.5 0.2 21
|
||||||
|
DS -1.6 -1.4 -1.6 -1.4 0.2 21
|
||||||
|
DS -1.6 -1.5 -1.6 -1.4 0.2 21
|
||||||
|
DA -1.6 -1.45 -1.600 -1.5 -1800 0.2 21
|
||||||
|
DA -1.6 -1.45 -1.600 -1.4 -1800 0.2 21
|
||||||
|
$PAD
|
||||||
|
Po -1.600 -0
|
||||||
|
Sh "1" R 1.200 1.200 0 0 900
|
||||||
|
At SMD N 00888000
|
||||||
|
Ne 0 ""
|
||||||
|
$EndPAD
|
||||||
|
$PAD
|
||||||
|
Po 1.600 -0
|
||||||
|
Sh "2" R 1.200 1.200 0 0 900
|
||||||
|
At SMD N 00888000
|
||||||
|
Ne 0 ""
|
||||||
|
$EndPAD
|
||||||
|
$EndMODULE 1N4007W
|
||||||
|
$EndLIBRARY
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
(footprint "CUI_UJC-HP-3-SMT-TR" (version 20221018) (generator pcbnew)
|
||||||
|
(layer "F.Cu")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference "REF**" (at -2 -3.25) (layer "F.SilkS")
|
||||||
|
(effects (font (size 0.787402 0.787402) (thickness 0.15)))
|
||||||
|
(tstamp d2f73f21-9da3-496e-a111-ed95f146d8e6)
|
||||||
|
)
|
||||||
|
(fp_text value "CUI_UJC-HP-3-SMT-TR" (at 5 -2) (layer "F.Fab")
|
||||||
|
(effects (font (size 0.787402 0.787402) (thickness 0.15)))
|
||||||
|
(tstamp d93062b2-6fa7-431b-a6c6-19b117ed9a7c)
|
||||||
|
)
|
||||||
|
(fp_line (start -4.47 2.45) (end -4.47 1.35)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 32c93c20-bf9d-4cae-a149-e2e0101421c3))
|
||||||
|
(fp_line (start -4.47 6.4) (end -4.47 5.15)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 9a7fa7a0-94d8-4474-b7bb-c05b38acbab9))
|
||||||
|
(fp_line (start -4.47 6.4) (end 4.47 6.4)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 5b3d18ec-0b0f-49e3-b1ab-50178befd510))
|
||||||
|
(fp_line (start 4.47 2.45) (end 4.47 1.35)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 15fb6149-5711-483a-b229-42dc8cda6cee))
|
||||||
|
(fp_line (start 4.47 6.4) (end 4.47 5.15)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.SilkS") (tstamp 03d5fd61-1702-4d4d-bf28-0cc2dec69406))
|
||||||
|
(fp_line (start -5.07 -1.25) (end -5.07 6.65)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a71ae403-ec36-41f4-89de-c3d26b42fea3))
|
||||||
|
(fp_line (start -5.07 6.65) (end 5.07 6.65)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d2a1434c-e90b-4e43-962e-4628571aacd6))
|
||||||
|
(fp_line (start 5.07 -1.25) (end -5.07 -1.25)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 740fabfa-b99e-49fc-b019-bfca7d7e24b0))
|
||||||
|
(fp_line (start 5.07 6.65) (end 5.07 -1.25)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9657e666-c2fa-40c1-998f-f818d7da8217))
|
||||||
|
(fp_line (start -4.47 -0.5) (end -4.47 6.4)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 21af92ac-0558-43a5-95bc-fb27a2a83449))
|
||||||
|
(fp_line (start -4.47 6.4) (end 4.47 6.4)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp ba7d7151-1861-48e9-9086-1b3333080209))
|
||||||
|
(fp_line (start 4.47 -0.5) (end -4.47 -0.5)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp 7e20855c-8212-4906-9feb-2686e539a9a0))
|
||||||
|
(fp_line (start 4.47 6.4) (end 4.47 -0.5)
|
||||||
|
(stroke (width 0.127) (type solid)) (layer "F.Fab") (tstamp aced7fb4-7f92-4006-a908-eaa61058e988))
|
||||||
|
(pad "A5" smd rect (at -0.5 -0.005 90) (size 1.15 0.7) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 51234865-1237-4c67-8adb-c8ae70e6f3bf))
|
||||||
|
(pad "A9" smd rect (at 1.52 -0.005 90) (size 1.15 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 5f84affa-04b1-4a6d-a7e9-90f3a11756ef))
|
||||||
|
(pad "A12" smd rect (at 2.75 -0.005 90) (size 1.15 0.9) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 2bfaa8ec-82d8-4348-a2e4-86a8c32d8ee4))
|
||||||
|
(pad "B5" smd rect (at 0.5 -0.005 90) (size 1.15 0.7) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp f35f15c0-d55e-436f-8568-ff43bc5a186f))
|
||||||
|
(pad "B9" smd rect (at -1.52 -0.005 90) (size 1.15 0.8) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp b8e57222-757a-4191-8b36-469c371264a9))
|
||||||
|
(pad "B12" smd rect (at -2.75 -0.005 90) (size 1.15 0.9) (layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 638bfb32-3315-4b31-8ed8-806180d5b571))
|
||||||
|
(pad "S1" thru_hole oval (at -4.32 0) (size 1 2) (drill oval 0.5 1.2) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 943bb2e4-c787-4a5b-a7a5-dac491f96c73))
|
||||||
|
(pad "S2" thru_hole oval (at 4.32 0) (size 1 2) (drill oval 0.5 1.2) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp fab4501a-1f83-40ba-be97-431df7c04a32))
|
||||||
|
(pad "S3" thru_hole oval (at -4.32 3.8) (size 1 2) (drill oval 0.5 1.2) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 1e84bf00-6efd-4e41-b5be-8ae18d3c8954))
|
||||||
|
(pad "S4" thru_hole oval (at 4.32 3.8) (size 1 2) (drill oval 0.5 1.2) (layers "*.Cu" "*.Mask")
|
||||||
|
(solder_mask_margin 0.102) (tstamp 65ca0f9e-a988-4010-a4e0-748bd8111b28))
|
||||||
|
)
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
(footprint CUI_UJC-HP-3-SMT-TR (layer F.Cu) (tedit 65CADA51)
|
||||||
|
(descr "")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference REF** (at -2.0 -3.25 0) (layer F.SilkS)
|
||||||
|
(effects (font (size 0.787401574803 0.787401574803) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value CUI_UJC-HP-3-SMT-TR (at 5.0 -2.0 0) (layer F.Fab)
|
||||||
|
(effects (font (size 0.787401574803 0.787401574803) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad B5 smd rect (at 0.5 -0.005 90.0) (size 1.15 0.7) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad A5 smd rect (at -0.5 -0.005 90.0) (size 1.15 0.7) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad B9 smd rect (at -1.52 -0.005 90.0) (size 1.15 0.8) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad A9 smd rect (at 1.52 -0.005 90.0) (size 1.15 0.8) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad B12 smd rect (at -2.75 -0.005 90.0) (size 1.15 0.9) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad A12 smd rect (at 2.75 -0.005 90.0) (size 1.15 0.9) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad S1 thru_hole oval (at -4.32 0.0) (size 1.0 2.0) (drill oval 0.5 1.2) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad S2 thru_hole oval (at 4.32 0.0) (size 1.0 2.0) (drill oval 0.5 1.2) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad S3 thru_hole oval (at -4.32 3.8) (size 1.0 2.0) (drill oval 0.5 1.2) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(pad S4 thru_hole oval (at 4.32 3.8) (size 1.0 2.0) (drill oval 0.5 1.2) (layers *.Cu *.Mask) (solder_mask_margin 0.102))
|
||||||
|
(fp_line (start -4.47 -0.5) (end -4.47 6.4) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -4.47 6.4) (end 4.47 6.4) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 4.47 6.4) (end 4.47 -0.5) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 4.47 -0.5) (end -4.47 -0.5) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -4.47 6.4) (end 4.47 6.4) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start 4.47 2.45) (end 4.47 1.35) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start 4.47 6.4) (end 4.47 5.15) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -4.47 2.45) (end -4.47 1.35) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -4.47 6.4) (end -4.47 5.15) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -5.07 -1.25) (end -5.07 6.65) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -5.07 6.65) (end 5.07 6.65) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 5.07 6.65) (end 5.07 -1.25) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 5.07 -1.25) (end -5.07 -1.25) (layer F.CrtYd) (width 0.05))
|
||||||
|
)
|
||||||
@@ -0,0 +1,141 @@
|
|||||||
|
|
||||||
|
(kicad_symbol_lib (version 20211014) (generator kicad_symbol_editor)
|
||||||
|
(symbol "UJC-HP-3-SMT-TR" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
|
||||||
|
(property "Reference" "J" (id 0) (at -7.62 8.89 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom left))
|
||||||
|
)
|
||||||
|
(property "Value" "UJC-HP-3-SMT-TR" (id 1) (at -7.62 -11.43 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify top left))
|
||||||
|
)
|
||||||
|
(property "Footprint" "UJC-HP-3-SMT-TR:CUI_UJC-HP-3-SMT-TR" (id 2) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MF" "CUI Devices" (id 4) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MAXIMUM_PACKAGE_HEIGHT" "3.16mm" (id 5) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Package" "Package" (id 6) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Price" "None" (id 7) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Check_prices" "https://www.snapeda.com/parts/UJC-HP-3-SMT-TR/CUI+Devices/view-part/?ref=eda" (id 8) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "STANDARD" "Manufacturer recommendations" (id 9) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "PARTREV" "04/30/2020" (id 10) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "SnapEDA_Link" "https://www.snapeda.com/parts/UJC-HP-3-SMT-TR/CUI+Devices/view-part/?ref=snap" (id 11) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MP" "UJC-HP-3-SMT-TR" (id 12) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=4722774&manufacturer=CUI Devices&part_name=UJC-HP-3-SMT-TR&search_term=usb c" (id 13) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Description" "Type C, 20 Vdc, 3 A, Right Angle, Surface Mount, Black Insulator, Power-Only USB Receptacle" (id 14) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "CUI_purchase_URL" "https://www.cuidevices.com/product/interconnect/connectors/usb-connectors/ujc-hp-3-smt-tr?utm_source=snapeda.com&utm_medium=referral&utm_campaign=snapedaBOM" (id 15) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "Availability" "In Stock" (id 16) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(property "MANUFACTURER" "CUI Devices" (id 17) (at 0 0 0)
|
||||||
|
(effects (font (size 1.27 1.27)) (justify bottom) hide)
|
||||||
|
)
|
||||||
|
(symbol "UJC-HP-3-SMT-TR_0_0"
|
||||||
|
(rectangle (start -7.62 -10.16) (end 7.62 7.62)
|
||||||
|
(stroke (width 0.254)) (fill (type background))
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -12.7 5.08 0) (length 5.08)
|
||||||
|
(name "CC1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "A5"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin bidirectional line (at -12.7 2.54 0) (length 5.08)
|
||||||
|
(name "CC2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "B5"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at -12.7 0.0 0) (length 5.08)
|
||||||
|
(name "V-BUS"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "A9"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at -12.7 0.0 0) (length 5.08)
|
||||||
|
(name "V-BUS"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "B9"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at -12.7 -2.54 0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "A12"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin power_in line (at -12.7 -2.54 0) (length 5.08)
|
||||||
|
(name "GND"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "B12"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line (at -12.7 -7.62 0) (length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "S1"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line (at -12.7 -7.62 0) (length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "S2"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line (at -12.7 -7.62 0) (length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "S3"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line (at -12.7 -7.62 0) (length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
(number "S4"
|
||||||
|
(effects (font (size 1.016 1.016)))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
15668
Schematics/PCB Components/UJC-HP-3-SMT-TR/UJC-HP-3-SMT-TR.step
Normal file
15668
Schematics/PCB Components/UJC-HP-3-SMT-TR/UJC-HP-3-SMT-TR.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>
|
||||||
@@ -0,0 +1,259 @@
|
|||||||
|
(footprint "ADAFRUIT_4328"
|
||||||
|
(version 20240108)
|
||||||
|
(generator "pcbnew")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(layer "F.Cu")
|
||||||
|
(property "Reference" "REF**"
|
||||||
|
(at -0.475 -3.535 0)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "778fcf08-dfa3-4a34-a9da-7791a9e390f2")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "ADAFRUIT_4328"
|
||||||
|
(at 4.605 4.435 0)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "29751dd4-7a94-4b41-8cef-22b297fbf14a")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1 1)
|
||||||
|
(thickness 0.15)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "c959e1de-eec8-40b5-9393-6cac7b42d8f1")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "87ec8df1-da1b-4a23-bc15-26ffad62ebc4")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(unlocked yes)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(hide yes)
|
||||||
|
(uuid "f0b3461a-6334-48ca-96f6-7b33e2967d7d")
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(attr smd)
|
||||||
|
(fp_line
|
||||||
|
(start -3 1.45)
|
||||||
|
(end -3 0.47)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "8253909a-2daf-43a3-a5e3-3b521a1c414d")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -2.12 1.45)
|
||||||
|
(end -3 1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "b392e591-4b70-448a-9688-44858eaf6002")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -1.88 -1.45)
|
||||||
|
(end 1.88 -1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "3f47d738-ed4e-4688-8e73-2ee5eb021b6c")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3 1.45)
|
||||||
|
(end 2.12 1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "5bda9700-4772-4b55-8cf9-c698bc662677")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3 1.45)
|
||||||
|
(end 3 0.47)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "f49fbc9d-5a65-40b5-9cc4-4e201eea30ed")
|
||||||
|
)
|
||||||
|
(fp_circle
|
||||||
|
(center -1.5 3.25)
|
||||||
|
(end -1.4 3.25)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.SilkS")
|
||||||
|
(uuid "acf7795d-8647-4715-9282-b183bdfa6377")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.65 -1.9)
|
||||||
|
(end -3.65 2.8)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "f5f00223-0311-4598-ad96-1c564cbcd1b8")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3.65 2.8)
|
||||||
|
(end 3.65 2.8)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "b2a7218d-6277-442f-a67f-522dbf77346c")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.65 -1.9)
|
||||||
|
(end -3.65 -1.9)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "9618b57c-a689-4083-9edd-44cf0d67dcf2")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3.65 2.8)
|
||||||
|
(end 3.65 -1.9)
|
||||||
|
(stroke
|
||||||
|
(width 0.05)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.CrtYd")
|
||||||
|
(uuid "a7052b9f-4ba7-4d7f-9fb3-f246e4ab9984")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3 -1.45)
|
||||||
|
(end 3 -1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "5b7dfed7-1d0c-44a4-b5d9-df82d93eba46")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start -3 1.45)
|
||||||
|
(end -3 -1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "44f17a4e-986d-40ee-8d3c-d54fa576822e")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3 -1.45)
|
||||||
|
(end 3 1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "6cac9ae9-adfa-4362-98c1-b62876d45498")
|
||||||
|
)
|
||||||
|
(fp_line
|
||||||
|
(start 3 1.45)
|
||||||
|
(end -3 1.45)
|
||||||
|
(stroke
|
||||||
|
(width 0.127)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "384265dd-ea8f-4f23-a78d-77f98dc9d50d")
|
||||||
|
)
|
||||||
|
(fp_circle
|
||||||
|
(center -1.5 3.25)
|
||||||
|
(end -1.4 3.25)
|
||||||
|
(stroke
|
||||||
|
(width 0.2)
|
||||||
|
(type solid)
|
||||||
|
)
|
||||||
|
(fill none)
|
||||||
|
(layer "F.Fab")
|
||||||
|
(uuid "af464435-8aaf-4b61-9d38-fdc6b1f40931")
|
||||||
|
)
|
||||||
|
(pad "1" smd rect
|
||||||
|
(at -1.5 1.775)
|
||||||
|
(size 0.6 1.55)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "c233329c-6dbd-4a9c-a486-f527284ad809")
|
||||||
|
)
|
||||||
|
(pad "2" smd rect
|
||||||
|
(at -0.5 1.775)
|
||||||
|
(size 0.6 1.55)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "cfbeb9dd-e379-4c4b-960e-f5131501e3f2")
|
||||||
|
)
|
||||||
|
(pad "3" smd rect
|
||||||
|
(at 0.5 1.775)
|
||||||
|
(size 0.6 1.55)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "f2d9734f-fdb6-43fe-b58b-1487ba5f978f")
|
||||||
|
)
|
||||||
|
(pad "4" smd rect
|
||||||
|
(at 1.5 1.775)
|
||||||
|
(size 0.6 1.55)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "8d8bf53e-c3b4-4487-806b-d9dda1b8141c")
|
||||||
|
)
|
||||||
|
(pad "SH1" smd rect
|
||||||
|
(at -2.8 -0.75)
|
||||||
|
(size 1.2 1.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "e2561fc5-96f6-43c1-bc13-f379e4d68ca0")
|
||||||
|
)
|
||||||
|
(pad "SH2" smd rect
|
||||||
|
(at 2.8 -0.75)
|
||||||
|
(size 1.2 1.8)
|
||||||
|
(layers "F.Cu" "F.Paste" "F.Mask")
|
||||||
|
(solder_mask_margin 0.102)
|
||||||
|
(uuid "1075fce8-e433-4891-899f-f12225a5e8b6")
|
||||||
|
)
|
||||||
|
)
|
||||||
354
Schematics/PCB Components/adafruit-jst-4328/4328.bak
Normal file
354
Schematics/PCB Components/adafruit-jst-4328/4328.bak
Normal file
@@ -0,0 +1,354 @@
|
|||||||
|
(kicad_symbol_lib
|
||||||
|
(version 20231120)
|
||||||
|
(generator "kicad_symbol_editor")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(symbol "4328"
|
||||||
|
(pin_names
|
||||||
|
(offset 1.016)
|
||||||
|
)
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "J"
|
||||||
|
(at -6.35 11.43 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "4328"
|
||||||
|
(at -6.604 -10.414 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "4328:ADAFRUIT_4328"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MF" "Adafruit"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MAXIMUM_PACKAGE_HEIGHT" "4.25mm"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Package" "None"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Price" "None"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Check_prices" "https://www.snapeda.com/parts/4328/Adafruit+Industries/view-part/?ref=eda"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "STANDARD" "Manufacturer Recommendations"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "PARTREV" "23/3/21"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "SnapEDA_Link" "https://www.snapeda.com/parts/4328/Adafruit+Industries/view-part/?ref=snap"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MP" "4328"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=12414535&manufacturer=Adafruit&part_name=4328&search_term=jst sh 4-pin"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description_1" "\nAdafruit Accessories JST SH 4-pin Vertical Connector (10-pack) - Qwiic Compatible\n"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Availability" "In Stock"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MANUFACTURER" "Adafruit"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "4328_0_0"
|
||||||
|
(rectangle
|
||||||
|
(start -6.35 -7.62)
|
||||||
|
(end 6.35 10.16)
|
||||||
|
(stroke
|
||||||
|
(width 0.254)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type background)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 -0.3175)
|
||||||
|
(end -4.1275 0.3175)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 2.2225)
|
||||||
|
(end -4.1275 2.8575)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 4.7625)
|
||||||
|
(end -4.1275 5.3975)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 7.3025)
|
||||||
|
(end -4.1275 7.9375)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 7.62 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 2.54 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "3"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 0 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "4"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 -5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "SH1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 -5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "SH2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
354
Schematics/PCB Components/adafruit-jst-4328/4328.kicad_sym
Normal file
354
Schematics/PCB Components/adafruit-jst-4328/4328.kicad_sym
Normal file
@@ -0,0 +1,354 @@
|
|||||||
|
(kicad_symbol_lib
|
||||||
|
(version 20231120)
|
||||||
|
(generator "kicad_symbol_editor")
|
||||||
|
(generator_version "8.0")
|
||||||
|
(symbol "4328"
|
||||||
|
(pin_names
|
||||||
|
(offset 1.016)
|
||||||
|
)
|
||||||
|
(exclude_from_sim no)
|
||||||
|
(in_bom yes)
|
||||||
|
(on_board yes)
|
||||||
|
(property "Reference" "J"
|
||||||
|
(at -6.35 11.43 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Value" "4328"
|
||||||
|
(at -6.604 -10.414 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify left bottom)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Footprint" "4328:ADAFRUIT_4328"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Datasheet" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description" ""
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MF" "Adafruit"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MAXIMUM_PACKAGE_HEIGHT" "4.25mm"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Package" "None"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Price" "None"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Check_prices" "https://www.snapeda.com/parts/4328/Adafruit+Industries/view-part/?ref=eda"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "STANDARD" "Manufacturer Recommendations"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "PARTREV" "23/3/21"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "SnapEDA_Link" "https://www.snapeda.com/parts/4328/Adafruit+Industries/view-part/?ref=snap"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MP" "4328"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Purchase-URL" "https://www.snapeda.com/api/url_track_click_mouser/?unipart_id=12414535&manufacturer=Adafruit&part_name=4328&search_term=jst sh 4-pin"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Description_1" "\nAdafruit Accessories JST SH 4-pin Vertical Connector (10-pack) - Qwiic Compatible\n"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "Availability" "In Stock"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(property "MANUFACTURER" "Adafruit"
|
||||||
|
(at 0 0 0)
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.27 1.27)
|
||||||
|
)
|
||||||
|
(justify bottom)
|
||||||
|
(hide yes)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(symbol "4328_0_0"
|
||||||
|
(rectangle
|
||||||
|
(start -6.35 -7.62)
|
||||||
|
(end 6.35 10.16)
|
||||||
|
(stroke
|
||||||
|
(width 0.254)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type background)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 -0.3175)
|
||||||
|
(end -4.1275 0.3175)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 2.2225)
|
||||||
|
(end -4.1275 2.8575)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 4.7625)
|
||||||
|
(end -4.1275 5.3975)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(rectangle
|
||||||
|
(start -5.715 7.3025)
|
||||||
|
(end -4.1275 7.9375)
|
||||||
|
(stroke
|
||||||
|
(width 0.1)
|
||||||
|
(type default)
|
||||||
|
)
|
||||||
|
(fill
|
||||||
|
(type outline)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 7.62 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 2.54 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "3"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "3"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 0 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "4"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "4"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 -5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "SH1"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(pin passive line
|
||||||
|
(at -10.16 -5.08 0)
|
||||||
|
(length 5.08)
|
||||||
|
(name "SHIELD"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(number "SH2"
|
||||||
|
(effects
|
||||||
|
(font
|
||||||
|
(size 1.016 1.016)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
8553
Schematics/PCB Components/adafruit-jst-4328/4328.step
Normal file
8553
Schematics/PCB Components/adafruit-jst-4328/4328.step
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
(footprint ADAFRUIT_4328 (layer F.Cu) (tedit 6623CA2B)
|
||||||
|
(descr "")
|
||||||
|
(attr smd)
|
||||||
|
(fp_text reference REF** (at -0.475 -3.535 0) (layer F.SilkS)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(fp_text value ADAFRUIT_4328 (at 4.605 4.435 0) (layer F.Fab)
|
||||||
|
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||||
|
)
|
||||||
|
(pad SH2 smd rect (at 2.8 -0.75) (size 1.2 1.8) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad SH1 smd rect (at -2.8 -0.75) (size 1.2 1.8) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad 4 smd rect (at 1.5 1.775) (size 0.6 1.55) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad 3 smd rect (at 0.5 1.775) (size 0.6 1.55) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad 2 smd rect (at -0.5 1.775) (size 0.6 1.55) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(pad 1 smd rect (at -1.5 1.775) (size 0.6 1.55) (layers F.Cu F.Mask F.Paste) (solder_mask_margin 0.102))
|
||||||
|
(fp_line (start 3.0 -1.45) (end 3.0 1.45) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 3.0 1.45) (end -3.0 1.45) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -3.0 1.45) (end -3.0 -1.45) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start -3.0 -1.45) (end 3.0 -1.45) (layer F.Fab) (width 0.127))
|
||||||
|
(fp_line (start 3.0 1.45) (end 3.0 0.47) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -2.12 1.45) (end -3.0 1.45) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start 3.0 1.45) (end 2.12 1.45) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -3.0 1.45) (end -3.0 0.47) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -1.88 -1.45) (end 1.88 -1.45) (layer F.SilkS) (width 0.127))
|
||||||
|
(fp_line (start -3.65 -1.9) (end -3.65 2.8) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start -3.65 2.8) (end 3.65 2.8) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 3.65 2.8) (end 3.65 -1.9) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_line (start 3.65 -1.9) (end -3.65 -1.9) (layer F.CrtYd) (width 0.05))
|
||||||
|
(fp_circle (center -1.5 3.25) (end -1.4 3.25) (layer F.SilkS) (width 0.2))
|
||||||
|
(fp_circle (center -1.5 3.25) (end -1.4 3.25) (layer F.Fab) (width 0.2))
|
||||||
|
)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE HTML><html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="0; url=https://www.snapeda.com/about/import/#"> <script type="text/javascript">window.location.href="https://www.snapeda.com/about/import/#" </script> <title>Page Redirection</title> </head> <body> If you are not redirected automatically, follow this <a href="https://www.snapeda.com/about/import/#">link to the import guide</a>. </body></html>
|
||||||
104
Schematics/bom2grouped_csv_jlcpcb.xsl
Normal file
104
Schematics/bom2grouped_csv_jlcpcb.xsl
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<!--XSL style sheet to convert EESCHEMA XML Partlist Format to grouped CSV BOM Format
|
||||||
|
Copyright (C) 2014, Wolf Walter.
|
||||||
|
Copyright (C) 2013, Stefan Helmert.
|
||||||
|
Copyright (C) 2018, Kicad developers.
|
||||||
|
Copyright (C) 2019, arturo182.
|
||||||
|
GPL v2.
|
||||||
|
|
||||||
|
Functionality:
|
||||||
|
Generation of JLCPCB PCBA compatible BOM
|
||||||
|
|
||||||
|
How to use this is explained in eeschema.pdf chapter 14. You enter a command line into the
|
||||||
|
netlist exporter using a new (custom) tab in the netlist export dialog.
|
||||||
|
The command line is
|
||||||
|
xsltproc -o "%O.csv" "FullPathToFile/bom2grouped_csv_jlcpcb.xsl" "%I"
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
@package
|
||||||
|
Generates a JLCPCB PCBA service compatible BOM
|
||||||
|
|
||||||
|
Functionality:
|
||||||
|
* Generate a comma separated value BOM list (csv file type).
|
||||||
|
* Components are sorted by ref and grouped by same value+footprint
|
||||||
|
One value per line
|
||||||
|
Fields are
|
||||||
|
Comment,Designator,Footprint,LCSC
|
||||||
|
|
||||||
|
The command line is
|
||||||
|
xsltproc -o "%O.csv" "full_path/bom2grouped_csv_jlcpcb.xsl" "%I"
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE xsl:stylesheet [
|
||||||
|
<!ENTITY nl "
"> <!--new line CR, LF, or LF, your choice -->
|
||||||
|
]>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
<xsl:output method="text"/>
|
||||||
|
|
||||||
|
<xsl:variable name="digits" select="'1234567890'" />
|
||||||
|
|
||||||
|
<!-- for matching grouping of footprint and value combination -->
|
||||||
|
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(footprint, '-', value)" />
|
||||||
|
|
||||||
|
<!-- for table head and empty table fields-->
|
||||||
|
<xsl:key name="headentr" match="field" use="@name"/>
|
||||||
|
|
||||||
|
<!-- main part -->
|
||||||
|
<xsl:template match="/export">
|
||||||
|
<xsl:text>Comment,Designator,Footprint,LCSC</xsl:text>
|
||||||
|
<!-- all table entries -->
|
||||||
|
<xsl:apply-templates select="components"/>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="components">
|
||||||
|
<!-- for Muenchian grouping of footprint and value combination -->
|
||||||
|
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(footprint, '-', value))[1]) = 1]">
|
||||||
|
<xsl:sort select="@ref" />
|
||||||
|
<xsl:text>&nl;</xsl:text>
|
||||||
|
<xsl:text>"</xsl:text><xsl:value-of select="value"/><xsl:text>","</xsl:text>
|
||||||
|
<!-- list of all references -->
|
||||||
|
<xsl:for-each select="key('partTypeByValueAndFootprint', concat(footprint, '-', value))">
|
||||||
|
<!-- strip non-digits from reference and sort based on remaining number -->
|
||||||
|
<xsl:sort select="translate(@ref, translate(@ref, $digits, ''), '')" data-type="number" />
|
||||||
|
<xsl:value-of select="@ref"/>
|
||||||
|
<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
<xsl:text>","</xsl:text>
|
||||||
|
|
||||||
|
<xsl:value-of select="footprint"/><xsl:text>","</xsl:text>
|
||||||
|
<xsl:value-of select="fields/field[@name='LCSC']"/><xsl:text>"</xsl:text>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- table entries with dynamic table head -->
|
||||||
|
<xsl:template match="fields">
|
||||||
|
|
||||||
|
<!-- remember current fields section -->
|
||||||
|
<xsl:variable name="fieldvar" select="field"/>
|
||||||
|
|
||||||
|
<!-- for all existing head entries -->
|
||||||
|
<xsl:for-each select="/export/components/comp/fields/field[generate-id(.) = generate-id(key('headentr',@name)[1])]">
|
||||||
|
<xsl:variable name="allnames" select="@name"/>
|
||||||
|
<xsl:text>,"</xsl:text>
|
||||||
|
|
||||||
|
<!-- for all field entries in the remembered fields section -->
|
||||||
|
<xsl:for-each select="$fieldvar">
|
||||||
|
|
||||||
|
<!-- only if this field entry exists in this fields section -->
|
||||||
|
<xsl:if test="@name=$allnames">
|
||||||
|
<!-- content of the field -->
|
||||||
|
<xsl:value-of select="."/>
|
||||||
|
</xsl:if>
|
||||||
|
<!--
|
||||||
|
If it does not exist, use an empty cell in output for this row.
|
||||||
|
Every non-blank entry is assigned to its proper column.
|
||||||
|
-->
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<xsl:text>"</xsl:text>
|
||||||
|
</xsl:for-each>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
@@ -4,32 +4,67 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#include <cstdint>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
#include "PINOUT.h"
|
#include "PINOUT.h"
|
||||||
#include "CubeStack.h"
|
#include "BoardTypes.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
|
||||||
|
// define some important buffer sizes
|
||||||
|
static constexpr uint32_t SERIAL_ARG_LENGTH{15};
|
||||||
|
static constexpr uint32_t SERIAL_CHAR_LENGTH{SERIAL_ARG_LENGTH*10};
|
||||||
|
|
||||||
// define the physical dimensions of the board
|
// define the physical dimensions of the board
|
||||||
#define BOARD_WIDTH 3
|
static constexpr uint32_t BOARD_WIDTH{3};
|
||||||
#define BOARD_LENGTH 3
|
static constexpr uint32_t BOARD_LENGTH{3};
|
||||||
#define BOARD_HEIGHT 3
|
static constexpr uint32_t BOARD_HEIGHT{3};
|
||||||
|
|
||||||
|
static constexpr V3D<uint32_t> BOARD_DIMENSIONS{BOARD_WIDTH, BOARD_LENGTH, BOARD_HEIGHT};
|
||||||
|
|
||||||
// define the number of stacks
|
// define the number of stacks
|
||||||
#define NUMBER_STACKS BOARD_WIDTH * BOARD_LENGTH
|
static constexpr uint32_t NUMBER_STACKS{BOARD_WIDTH * BOARD_LENGTH};
|
||||||
|
|
||||||
// define the CubeStacks
|
// define the CubeStacks
|
||||||
CubeStack stack1(STACK1_ADC_PIN, STACK1_LED_PIN, BOARD_HEIGHT);
|
static BOARD_TYPES::CubeStack stack1{
|
||||||
CubeStack stack2(STACK2_ADC_PIN, STACK2_LED_PIN, BOARD_HEIGHT);
|
.adcPin=STACK1_ADC_PIN,
|
||||||
CubeStack stack3(STACK3_ADC_PIN, STACK3_LED_PIN, BOARD_HEIGHT);
|
.ledPin=STACK1_LED_PIN
|
||||||
CubeStack stack4(STACK4_ADC_PIN, STACK4_LED_PIN, BOARD_HEIGHT);
|
};
|
||||||
CubeStack stack5(STACK5_ADC_PIN, STACK5_LED_PIN, BOARD_HEIGHT);
|
static BOARD_TYPES::CubeStack stack2{
|
||||||
CubeStack stack6(STACK6_ADC_PIN, STACK6_LED_PIN, BOARD_HEIGHT);
|
.adcPin=STACK2_ADC_PIN,
|
||||||
CubeStack stack7(STACK7_ADC_PIN, STACK7_LED_PIN, BOARD_HEIGHT);
|
.ledPin=STACK2_LED_PIN
|
||||||
CubeStack stack8(STACK8_ADC_PIN, STACK8_LED_PIN, BOARD_HEIGHT);
|
};
|
||||||
CubeStack stack9(STACK9_ADC_PIN, STACK9_LED_PIN, BOARD_HEIGHT);
|
static BOARD_TYPES::CubeStack stack3{
|
||||||
|
.adcPin=STACK3_ADC_PIN,
|
||||||
// define the array of stacks
|
.ledPin=STACK3_LED_PIN
|
||||||
CubeStack * stacks[] = {
|
};
|
||||||
&stack1, &stack2, &stack3,
|
static BOARD_TYPES::CubeStack stack4{
|
||||||
&stack4, &stack5, &stack6,
|
.adcPin=STACK4_ADC_PIN,
|
||||||
&stack7, &stack8, &stack9
|
.ledPin=STACK4_LED_PIN
|
||||||
|
};
|
||||||
|
static BOARD_TYPES::CubeStack stack5{
|
||||||
|
.adcPin=STACK5_ADC_PIN,
|
||||||
|
.ledPin=STACK5_LED_PIN
|
||||||
|
};
|
||||||
|
static BOARD_TYPES::CubeStack stack6{
|
||||||
|
.adcPin=STACK6_ADC_PIN,
|
||||||
|
.ledPin=STACK6_LED_PIN
|
||||||
|
};
|
||||||
|
static BOARD_TYPES::CubeStack stack7{
|
||||||
|
.adcPin=STACK7_ADC_PIN,
|
||||||
|
.ledPin=STACK7_LED_PIN
|
||||||
|
};
|
||||||
|
static BOARD_TYPES::CubeStack stack8{
|
||||||
|
.adcPin=STACK8_ADC_PIN,
|
||||||
|
.ledPin=STACK8_LED_PIN
|
||||||
|
};
|
||||||
|
static BOARD_TYPES::CubeStack stack9{
|
||||||
|
.adcPin=STACK9_ADC_PIN,
|
||||||
|
.ledPin=STACK9_LED_PIN
|
||||||
|
};
|
||||||
|
|
||||||
|
static std::array<BOARD_TYPES::CubeStack, NUMBER_STACKS> stacks{
|
||||||
|
stack1, stack2, stack3,
|
||||||
|
stack4, stack5, stack6,
|
||||||
|
stack7, stack8, stack9
|
||||||
};
|
};
|
||||||
13
include/COMMANDS.h
Normal file
13
include/COMMANDS.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief These are the serial commands that the board supports
|
||||||
|
*/
|
||||||
|
enum Commands : uint8_t{
|
||||||
|
BoardState = 0,
|
||||||
|
PING = 1,
|
||||||
|
SetStackColors = 2,
|
||||||
|
GoToIdle = 3
|
||||||
|
};
|
||||||
@@ -5,40 +5,47 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
// Stack pins
|
||||||
// Stack 1 pins
|
// Stack 1 pins
|
||||||
#define STACK1_ADC_PIN 34
|
static constexpr uint8_t STACK1_ADC_PIN{6};
|
||||||
#define STACK1_LED_PIN 5
|
static constexpr uint8_t STACK1_LED_PIN{11};
|
||||||
|
|
||||||
// Stack 2 pins
|
// Stack 2 pins
|
||||||
#define STACK2_ADC_PIN 39
|
static constexpr uint8_t STACK2_ADC_PIN{16};
|
||||||
#define STACK2_LED_PIN 18
|
static constexpr uint8_t STACK2_LED_PIN{14};
|
||||||
|
|
||||||
// Stack 3 pins
|
// Stack 3 pins
|
||||||
#define STACK3_ADC_PIN 36
|
static constexpr uint8_t STACK3_ADC_PIN{8};
|
||||||
#define STACK3_LED_PIN 19
|
static constexpr uint8_t STACK3_LED_PIN{45};
|
||||||
|
|
||||||
// Stack 4 pins
|
// Stack 4 pins
|
||||||
#define STACK4_ADC_PIN 35
|
static constexpr uint8_t STACK4_ADC_PIN{5};
|
||||||
#define STACK4_LED_PIN 17
|
static constexpr uint8_t STACK4_LED_PIN{10};
|
||||||
|
|
||||||
// Stack 5 pins
|
// Stack 5 pins
|
||||||
#define STACK5_ADC_PIN 32
|
static constexpr uint8_t STACK5_ADC_PIN{15};
|
||||||
#define STACK5_LED_PIN 16
|
static constexpr uint8_t STACK5_LED_PIN{13};
|
||||||
|
|
||||||
// Stack 6 pins
|
// Stack 6 pins
|
||||||
#define STACK6_ADC_PIN 33
|
static constexpr uint8_t STACK6_ADC_PIN{18};
|
||||||
#define STACK6_LED_PIN 4
|
static constexpr uint8_t STACK6_LED_PIN{38};
|
||||||
|
|
||||||
// Stack 7 pins
|
// Stack 7 pins
|
||||||
#define STACK7_ADC_PIN 25
|
static constexpr uint8_t STACK7_ADC_PIN{4};
|
||||||
#define STACK7_LED_PIN 0
|
static constexpr uint8_t STACK7_LED_PIN{9};
|
||||||
|
|
||||||
// Stack 8 pins
|
// Stack 8 pins
|
||||||
#define STACK8_ADC_PIN 26
|
static constexpr uint8_t STACK8_ADC_PIN{7};
|
||||||
#define STACK8_LED_PIN 2
|
static constexpr uint8_t STACK8_LED_PIN{12};
|
||||||
|
|
||||||
|
|
||||||
// Stack 9 pins
|
// Stack 9 pins
|
||||||
#define STACK9_ADC_PIN 27
|
static constexpr uint8_t STACK9_ADC_PIN{17};
|
||||||
#define STACK9_LED_PIN 15
|
static constexpr uint8_t STACK9_LED_PIN{37};
|
||||||
|
|
||||||
|
// Bluetooth module configuration pins
|
||||||
|
static constexpr uint8_t BT_STATE_PIN{2};
|
||||||
|
static constexpr uint8_t BT_EN_PIN{3};
|
||||||
|
|
||||||
|
|||||||
80
include/Vector3D.h
Normal file
80
include/Vector3D.h
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
template <typename Type>
|
||||||
|
class V3D{
|
||||||
|
public:
|
||||||
|
constexpr V3D(const V3D& other):
|
||||||
|
x(other.x),
|
||||||
|
y(other.y),
|
||||||
|
z(other.z){
|
||||||
|
static_assert(std::is_arithmetic<Type>::value, "Type must be a number");
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr V3D(Type x=0, Type y=0, Type z=0):
|
||||||
|
x(x),
|
||||||
|
y(y),
|
||||||
|
z(z){
|
||||||
|
static_assert(std::is_arithmetic<Type>::value, "Type must be a number");
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename OtherType>
|
||||||
|
constexpr V3D(const V3D<OtherType> other):
|
||||||
|
x(static_cast<Type>(other.x)),
|
||||||
|
y(static_cast<Type>(other.y)),
|
||||||
|
z(static_cast<Type>(other.z)){
|
||||||
|
static_assert(std::is_arithmetic<Type>::value, "Type must be a number");
|
||||||
|
static_assert(std::is_arithmetic<OtherType>::value, "OtherType must be a number");
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D& operator=(const V3D &other){
|
||||||
|
this->x = other.x;
|
||||||
|
this->y = other.y;
|
||||||
|
this->z = other.z;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D& operator+=(const V3D &other){
|
||||||
|
this->x += other.x;
|
||||||
|
this->y += other.y;
|
||||||
|
this->z += other.z;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D& operator-=(const V3D &other){
|
||||||
|
this->x -= other.x;
|
||||||
|
this->y -= other.y;
|
||||||
|
this->z -= other.z;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D& operator/=(const Type scalar){
|
||||||
|
if(scalar == 0){
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
this->x /= scalar;
|
||||||
|
this->y /= scalar;
|
||||||
|
this->z /= scalar;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D& operator*=(const Type scalar){
|
||||||
|
this->x *= scalar;
|
||||||
|
this->y *= scalar;
|
||||||
|
this->z *= scalar;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const V3D &other){
|
||||||
|
return this->x == other.x && this->y == other.y && this->z == other.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
float magnitude(){
|
||||||
|
return std::sqrt(static_cast<float>(this->x * this->x + this->y * this->y + this->z * this->z));
|
||||||
|
}
|
||||||
|
Type x;
|
||||||
|
Type y;
|
||||||
|
Type z;
|
||||||
|
};
|
||||||
252
lib/Animator/Animation.h
Normal file
252
lib/Animator/Animation.h
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "AnimationTypes.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
#include "Animator.h"
|
||||||
|
|
||||||
|
using namespace ANIMATION_TYPES;
|
||||||
|
|
||||||
|
namespace AnimationHelpers{
|
||||||
|
V3D<uint8_t> red{255,0,0};
|
||||||
|
V3D<uint8_t> green{0,255,0};
|
||||||
|
V3D<uint8_t> blue{0,0,255};
|
||||||
|
V3D<uint8_t> cyan{0,255,255};
|
||||||
|
V3D<uint8_t> magenta{255,0,255};
|
||||||
|
|
||||||
|
Cell CreateCell(float x_percent, float y_percent, float z_percent, const V3D<uint8_t> &color){
|
||||||
|
float continuousMaxValue{static_cast<float>(std::numeric_limits<uint32_t>::max())};
|
||||||
|
Cell cell{
|
||||||
|
.position = V3D<uint32_t>{
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*x_percent),
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*y_percent),
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*z_percent)
|
||||||
|
},
|
||||||
|
.color = color
|
||||||
|
};
|
||||||
|
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace RotatingCubes{
|
||||||
|
using namespace AnimationHelpers;
|
||||||
|
|
||||||
|
AnimationFrame frame1{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(1,0.5,0,green),
|
||||||
|
CreateCell(0,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame2{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0.5,0,red),
|
||||||
|
CreateCell(1,0,0,green),
|
||||||
|
CreateCell(0.5,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(500)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame3{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,1,0,red),
|
||||||
|
CreateCell(0.5,0,0,green),
|
||||||
|
CreateCell(1,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame4{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0.5,1,0,red),
|
||||||
|
CreateCell(0,0,0,green),
|
||||||
|
CreateCell(1,0.5,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(500)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame5{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(1,1,0,red),
|
||||||
|
CreateCell(0,0.5,0,green),
|
||||||
|
CreateCell(1,0,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame6{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(1,0.5,0,red),
|
||||||
|
CreateCell(0,1,0,green),
|
||||||
|
CreateCell(0.5,0,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(500)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame7{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(1,0,0,red),
|
||||||
|
CreateCell(0.5,1,0,green),
|
||||||
|
CreateCell(0,0,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame8{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0.5,0,0,red),
|
||||||
|
CreateCell(1,1,0,green),
|
||||||
|
CreateCell(0,0.5,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(500)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame9{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(1,0.5,0,green),
|
||||||
|
CreateCell(0,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1)
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<AnimationFrame> rotating{
|
||||||
|
frame1, // 0
|
||||||
|
frame2, // 1
|
||||||
|
frame3, // 2
|
||||||
|
frame4, // 3
|
||||||
|
frame5, // 4
|
||||||
|
frame6, // 5
|
||||||
|
frame7, // 6
|
||||||
|
frame8, // 7
|
||||||
|
frame9, // 8
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace RisingCubes{
|
||||||
|
using namespace AnimationHelpers;
|
||||||
|
|
||||||
|
AnimationFrame frame1{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,cyan),
|
||||||
|
CreateCell(0,1,0.5,green),
|
||||||
|
CreateCell(1,0,1,blue),
|
||||||
|
CreateCell(0.5,0.5,0.5,red),
|
||||||
|
CreateCell(1,1,0,magenta)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(800)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame2{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0.5,cyan),
|
||||||
|
CreateCell(0,1,1,green),
|
||||||
|
CreateCell(1,0,0.5,blue),
|
||||||
|
CreateCell(0.5,0.5,0,red),
|
||||||
|
CreateCell(1,1,0.5,magenta)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(800)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame3{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,1,cyan),
|
||||||
|
CreateCell(0,1,0.5,green),
|
||||||
|
CreateCell(1,0,0,blue),
|
||||||
|
CreateCell(0.5,0.5,0.5,red),
|
||||||
|
CreateCell(1,1,1,magenta)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(800)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame4{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0.5,cyan),
|
||||||
|
CreateCell(0,1,0,green),
|
||||||
|
CreateCell(1,0,0.5,blue),
|
||||||
|
CreateCell(0.5,0.5,1,red),
|
||||||
|
CreateCell(1,1,0.5,magenta)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(800)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame5{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,cyan),
|
||||||
|
CreateCell(0,1,0.5,green),
|
||||||
|
CreateCell(1,0,1,blue),
|
||||||
|
CreateCell(0.5,0.5,0.5,red),
|
||||||
|
CreateCell(1,1,0,magenta)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame00{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0.0,0.0,1.0,V3D<uint8_t>(128.0,128.0,255.0)),
|
||||||
|
CreateCell(0.5,0.0,1.0,V3D<uint8_t>(128.0,128.0,255.0)),
|
||||||
|
CreateCell(1.0,0.0,0.0,V3D<uint8_t>(255.0,118.0,205.0)),
|
||||||
|
CreateCell(1.0,0.0,0.5,V3D<uint8_t>(255.0,118.0,205.0)),
|
||||||
|
CreateCell(1.0,0.0,1.0,V3D<uint8_t>(255.0,116.0,0.0)),
|
||||||
|
CreateCell(1.0,0.5,1.0,V3D<uint8_t>(183.0,0.0,255.0)),
|
||||||
|
CreateCell(1.0,1.0,1.0,V3D<uint8_t>(183.0,0.0,255.0))
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame frame01{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0.0,0.0,1.0,V3D<uint8_t>(255.0,255.0,171.0)),
|
||||||
|
CreateCell(0.5,0.0,1.0,V3D<uint8_t>(255.0,255.0,171.0)),
|
||||||
|
CreateCell(1.0,0.0,0.0,V3D<uint8_t>(0.0,195.0,88.0)),
|
||||||
|
CreateCell(1.0,0.0,0.5,V3D<uint8_t>(0.0,195.0,88.0)),
|
||||||
|
CreateCell(1.0,0.0,1.0,V3D<uint8_t>(0.0,195.0,88.0)),
|
||||||
|
CreateCell(1.0,0.5,1.0,V3D<uint8_t>(112.0,222.0,255.0)),
|
||||||
|
CreateCell(1.0,1.0,1.0,V3D<uint8_t>(112.0,222.0,255.0))
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(1000)
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<AnimationFrame> rising{
|
||||||
|
frame00, frame01, frame00
|
||||||
|
// frame1, // 0
|
||||||
|
// frame2, // 1
|
||||||
|
// frame3, // 2
|
||||||
|
// frame4, // 3
|
||||||
|
// frame5
|
||||||
|
};
|
||||||
|
}
|
||||||
33
lib/Animator/AnimationTypes.h
Normal file
33
lib/Animator/AnimationTypes.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "Vector3D.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
namespace ANIMATION_TYPES{
|
||||||
|
// for cube spots which aren't defined in a key frame,
|
||||||
|
// you can have the controller automatically interpolate a color
|
||||||
|
enum FillInterpolation{
|
||||||
|
NO_FILL, // if not specified, the cube color will be black
|
||||||
|
CLOSEST_COLOR, // The cube color will be the same color as the cube closest to it
|
||||||
|
LINEAR_WEIGHTED_DISTANCE, // the cube color will be an average of all specified cube colors weighted by the linear distance to this cube
|
||||||
|
SQUARE_WEIGHTED_DISTANCE // same as linear, but further colors have exponentially less impact on the color
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FrameInterpolation{
|
||||||
|
SNAP, // After the delay, snap to the next key frame
|
||||||
|
FADE // over the course of the delay, fade to the next frame
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Cell{
|
||||||
|
V3D<uint32_t> position;
|
||||||
|
V3D<uint32_t> color;
|
||||||
|
};
|
||||||
|
|
||||||
|
// this contains all of the information to specify exactly how a single frame should look and fade to the next frame
|
||||||
|
struct AnimationFrame{
|
||||||
|
std::vector<Cell> frame;
|
||||||
|
FillInterpolation fillInterpolation;
|
||||||
|
FrameInterpolation frameInterpolation;
|
||||||
|
std::chrono::milliseconds delay;
|
||||||
|
};
|
||||||
|
};
|
||||||
293
lib/Animator/Animator.h
Normal file
293
lib/Animator/Animator.h
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <array>
|
||||||
|
#include <vector>
|
||||||
|
#include <chrono>
|
||||||
|
#include <cstring>
|
||||||
|
#include <cmath>
|
||||||
|
#include <climits>
|
||||||
|
|
||||||
|
#include "Vector3D.h"
|
||||||
|
#include "AnimationTypes.h"
|
||||||
|
|
||||||
|
using namespace ANIMATION_TYPES;
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
class Animator{
|
||||||
|
|
||||||
|
public:
|
||||||
|
typedef std::array<std::array<std::array<V3D<uint32_t>, BOARD_DIMS.z>, BOARD_DIMS.y>, BOARD_DIMS.x> Frame;
|
||||||
|
|
||||||
|
|
||||||
|
void StartAnimation(const std::vector<AnimationFrame> *animationSequence);
|
||||||
|
|
||||||
|
void RunAnimation(const std::chrono::milliseconds& timePassed);
|
||||||
|
|
||||||
|
void SetLoop(bool isLooping);
|
||||||
|
|
||||||
|
Frame &GetInterpolatedFrame(){return this->interpolatedFrame;}
|
||||||
|
|
||||||
|
bool isEnabled{true};
|
||||||
|
bool interpolatedFrameHasChanged{false};
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool isLooping{true};
|
||||||
|
// these are the uncompressed frames you get by following the key colors and interpolation instructions of an animation frame
|
||||||
|
Frame startFrame;
|
||||||
|
Frame interpolatedFrame;
|
||||||
|
Frame endFrame;
|
||||||
|
std::chrono::milliseconds timeElapsed;
|
||||||
|
|
||||||
|
const std::vector<AnimationFrame> *animationSequence;
|
||||||
|
uint32_t animationIndex{0};
|
||||||
|
|
||||||
|
void incrimentAnimationIndex();
|
||||||
|
|
||||||
|
void uncompressFrame(const AnimationFrame &keyFrame, Frame &frameBuffer);
|
||||||
|
|
||||||
|
void copyFrame(Frame ©From, Frame ©To){
|
||||||
|
std::memcpy(©To, ©From, sizeof(Frame));
|
||||||
|
}
|
||||||
|
|
||||||
|
V3D<uint32_t> getInterpolatedColor(const AnimationFrame &keyFrame, V3D<uint32_t> position);
|
||||||
|
|
||||||
|
V3D<uint32_t> keyFrame2BoardCoords(const V3D<uint32_t> &keyFramePosition);
|
||||||
|
|
||||||
|
V3D<uint32_t> noFillInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position);
|
||||||
|
|
||||||
|
V3D<uint32_t> closestColorInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position);
|
||||||
|
|
||||||
|
V3D<uint32_t> linearInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position);
|
||||||
|
|
||||||
|
V3D<uint32_t> squareInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position);
|
||||||
|
|
||||||
|
void PrintUncompressedFrame(){
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
auto color = this->startFrame[x][y][z];
|
||||||
|
Serial.print("Cube X:" + String(x) + ",Y:" + String(y) + ",Z:" + String(z));
|
||||||
|
Serial.println("\tColor R:" + String(color.x) + ",G:" + String(color.y) + ",B:" + String(color.z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Animator<BOARD_DIMS>::StartAnimation(const std::vector<AnimationFrame> *animationSequence){
|
||||||
|
|
||||||
|
this->animationSequence = animationSequence;
|
||||||
|
this->animationIndex = 0;
|
||||||
|
this->timeElapsed = std::chrono::milliseconds(0);
|
||||||
|
|
||||||
|
if(animationSequence->size() == 0){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(animationSequence->size() == 1){
|
||||||
|
AnimationFrame frame{((*this->animationSequence)[0])};
|
||||||
|
this->uncompressFrame(frame, this->startFrame);
|
||||||
|
this->copyFrame(this->startFrame, this->interpolatedFrame);
|
||||||
|
this->copyFrame(this->startFrame, this->endFrame);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this->uncompressFrame((*this->animationSequence)[0], this->startFrame);
|
||||||
|
this->copyFrame(this->startFrame, this->interpolatedFrame);
|
||||||
|
this->uncompressFrame((*this->animationSequence)[1], this->endFrame);
|
||||||
|
}
|
||||||
|
this->interpolatedFrameHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Animator<BOARD_DIMS>::RunAnimation(const std::chrono::milliseconds& timePassed){
|
||||||
|
if(!(this->isEnabled)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto delayTime = (*this->animationSequence)[this->animationIndex].delay;
|
||||||
|
this->timeElapsed += timePassed;
|
||||||
|
|
||||||
|
// load in the next frame if we're done with this transition
|
||||||
|
if(this->timeElapsed >= delayTime){
|
||||||
|
this->incrimentAnimationIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
// don't do frame interpolations if we're doing snap fades
|
||||||
|
if((*this->animationSequence)[this->animationIndex].frameInterpolation == FrameInterpolation::SNAP){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// linearly interpolate between the two uncompressed frames
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
V3D<float> startColor{this->startFrame[x][y][z]};
|
||||||
|
V3D<float> endColor{this->endFrame[x][y][z]};
|
||||||
|
V3D<float> difference{endColor};
|
||||||
|
difference -= startColor;
|
||||||
|
|
||||||
|
V3D<float> interpolatedColor{difference};
|
||||||
|
interpolatedColor *= this->timeElapsed.count();
|
||||||
|
interpolatedColor /= delayTime.count();
|
||||||
|
interpolatedColor += startColor;
|
||||||
|
|
||||||
|
this->interpolatedFrame[x][y][z] = interpolatedColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this->interpolatedFrameHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Animator<BOARD_DIMS>::SetLoop(bool isLooping){
|
||||||
|
this->isLooping = isLooping;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Animator<BOARD_DIMS>::incrimentAnimationIndex(){
|
||||||
|
if(this->animationIndex < this->animationSequence->size() - 2){
|
||||||
|
this->animationIndex++;
|
||||||
|
this->timeElapsed = std::chrono::milliseconds(0);
|
||||||
|
this->uncompressFrame((*this->animationSequence)[this->animationIndex], this->startFrame);
|
||||||
|
this->copyFrame(this->startFrame, this->interpolatedFrame);
|
||||||
|
this->uncompressFrame((*this->animationSequence)[this->animationIndex + 1], this->endFrame);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this->StartAnimation(this->animationSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->interpolatedFrameHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Animator<BOARD_DIMS>::uncompressFrame(const AnimationFrame &keyFrame, Frame &frameBuffer){
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
frameBuffer[x][y][z] = getInterpolatedColor(keyFrame, V3D<uint32_t>(x, y, z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::getInterpolatedColor(const AnimationFrame &keyFrame, V3D<uint32_t> position){
|
||||||
|
switch(keyFrame.fillInterpolation){
|
||||||
|
case FillInterpolation::NO_FILL:
|
||||||
|
return noFillInterpolate(keyFrame, position);
|
||||||
|
case FillInterpolation::CLOSEST_COLOR:
|
||||||
|
return closestColorInterpolate(keyFrame, position);
|
||||||
|
case FillInterpolation::LINEAR_WEIGHTED_DISTANCE:
|
||||||
|
return linearInterpolate(keyFrame, position);
|
||||||
|
case FillInterpolation::SQUARE_WEIGHTED_DISTANCE:
|
||||||
|
return squareInterpolate(keyFrame, position);
|
||||||
|
default:
|
||||||
|
V3D<uint32_t> black{};
|
||||||
|
return black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::keyFrame2BoardCoords(const V3D<uint32_t> &keyFramePosition){
|
||||||
|
V3D<uint32_t> returnValue{};
|
||||||
|
float maxValue{static_cast<float>(std::numeric_limits<uint32_t>::max())};
|
||||||
|
// scale the key frame values down to be within board coordinates
|
||||||
|
float keyFrame_X = static_cast<float>(BOARD_DIMS.x - 1) * static_cast<float>(keyFramePosition.x) / maxValue;
|
||||||
|
float keyFrame_Y = static_cast<float>(BOARD_DIMS.y - 1) * static_cast<float>(keyFramePosition.y) / maxValue;
|
||||||
|
float keyFrame_Z = static_cast<float>(BOARD_DIMS.z - 1) * static_cast<float>(keyFramePosition.z) / maxValue;
|
||||||
|
|
||||||
|
// carefully quantize the float values back into ints with a precise rounding operation
|
||||||
|
if(keyFrame_X - std::floor(keyFrame_X) < 0.5f){
|
||||||
|
returnValue.x = static_cast<uint32_t>(keyFrame_X);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
returnValue.x = static_cast<uint32_t>(keyFrame_X) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(keyFrame_Y - std::floor(keyFrame_Y) < 0.5f){
|
||||||
|
returnValue.y = static_cast<uint32_t>(keyFrame_Y);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
returnValue.y = static_cast<uint32_t>(keyFrame_Y) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(keyFrame_Z - std::floor(keyFrame_Z) < 0.5f){
|
||||||
|
returnValue.z = static_cast<uint32_t>(keyFrame_Z);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
returnValue.z = static_cast<uint32_t>(keyFrame_Z) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::noFillInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position){
|
||||||
|
V3D<uint32_t> returnColor{};
|
||||||
|
for(Cell cell : keyFrame.frame){
|
||||||
|
if(keyFrame2BoardCoords(cell.position) == position){
|
||||||
|
returnColor = cell.color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::closestColorInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> cubePosition){
|
||||||
|
V3D<uint32_t> returnColor{keyFrame.frame[0].color};
|
||||||
|
V3D<uint32_t> distance{keyFrame.frame[0].position};
|
||||||
|
distance -= cubePosition;
|
||||||
|
float closestDistance = distance.magnitude();
|
||||||
|
|
||||||
|
for(Cell cell : keyFrame.frame){
|
||||||
|
distance = keyFrame2BoardCoords(cell.position);
|
||||||
|
distance -= cubePosition;
|
||||||
|
float euclidDistance = distance.magnitude();
|
||||||
|
if(euclidDistance < closestDistance){
|
||||||
|
returnColor = cell.color;
|
||||||
|
closestDistance = euclidDistance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::linearInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position){
|
||||||
|
V3D<uint32_t> returnColor{};
|
||||||
|
|
||||||
|
for(Cell cell : keyFrame.frame){
|
||||||
|
V3D<uint32_t> vectorDistance{keyFrame2BoardCoords(cell.position)};
|
||||||
|
vectorDistance -= position;
|
||||||
|
float distance = vectorDistance.magnitude();
|
||||||
|
if(distance == 0) return cell.color;
|
||||||
|
returnColor += cell.color;
|
||||||
|
returnColor /= distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
returnColor /= keyFrame.frame.size();
|
||||||
|
|
||||||
|
return returnColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
V3D<uint32_t> Animator<BOARD_DIMS>::squareInterpolate(const AnimationFrame &keyFrame, V3D<uint32_t> position){
|
||||||
|
V3D<uint32_t> returnColor{};
|
||||||
|
|
||||||
|
for(Cell cell : keyFrame.frame){
|
||||||
|
V3D<uint32_t> vectorDistance{keyFrame2BoardCoords(cell.position)};
|
||||||
|
vectorDistance -= position;
|
||||||
|
uint32_t distance = static_cast<uint32_t>(vectorDistance.magnitude());
|
||||||
|
distance *= distance;
|
||||||
|
if(distance == 0) return cell.color;
|
||||||
|
returnColor += cell.color;
|
||||||
|
returnColor /= distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
returnColor /= keyFrame.frame.size();
|
||||||
|
|
||||||
|
return returnColor;
|
||||||
|
}
|
||||||
169
lib/Animator/TestFrames.h
Normal file
169
lib/Animator/TestFrames.h
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "AnimationTypes.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
#include "Animator.h"
|
||||||
|
|
||||||
|
using namespace ANIMATION_TYPES;
|
||||||
|
|
||||||
|
namespace TestFrames{
|
||||||
|
|
||||||
|
V3D<uint32_t> red{255,0,0};
|
||||||
|
V3D<uint32_t> green{0,255,0};
|
||||||
|
V3D<uint32_t> blue{0,0,255};
|
||||||
|
uint32_t maxValue{std::numeric_limits<uint32_t>::max()};
|
||||||
|
|
||||||
|
Cell CreateCell(float x_percent, float y_percent, float z_percent, V3D<uint32_t> &color){
|
||||||
|
float continuousMaxValue{static_cast<float>(std::numeric_limits<uint32_t>::max())};
|
||||||
|
Cell cell{
|
||||||
|
.position = V3D<uint32_t>{
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*x_percent),
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*y_percent),
|
||||||
|
static_cast<uint32_t>(continuousMaxValue*z_percent)
|
||||||
|
},
|
||||||
|
.color = color
|
||||||
|
};
|
||||||
|
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
AnimationFrame noFillFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::NO_FILL,
|
||||||
|
.frameInterpolation = FrameInterpolation::SNAP,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame closestColorFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::SNAP,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame linearFillFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::SNAP,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame squareFillFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::SQUARE_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::SNAP,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame noFillFadeFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::NO_FILL,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame closestColorFadeFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::CLOSEST_COLOR,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame linearFillFadeFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::LINEAR_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame squareFillFadeFrame{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
CreateCell(0.5,0.5,0.5,green),
|
||||||
|
CreateCell(1,1,1,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::SQUARE_WEIGHTED_DISTANCE,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<AnimationFrame> testAnimationSequence2{
|
||||||
|
noFillFrame, // 0
|
||||||
|
closestColorFrame, // 1
|
||||||
|
linearFillFrame, // 2
|
||||||
|
squareFillFrame, // 3
|
||||||
|
noFillFadeFrame, // 4
|
||||||
|
closestColorFadeFrame, // 5
|
||||||
|
linearFillFadeFrame, // 6
|
||||||
|
squareFillFadeFrame, // 7
|
||||||
|
noFillFrame // 8
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame testFrame1{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,0,0,red),
|
||||||
|
// CreateCell(0.5,0.5,0,green),
|
||||||
|
CreateCell(1,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::NO_FILL,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame testFrame2{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0,1,0,red),
|
||||||
|
// CreateCell(0.5,0.5,0,green),
|
||||||
|
CreateCell(1,0,0,green)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::NO_FILL,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
AnimationFrame testFrame3{
|
||||||
|
.frame = {
|
||||||
|
CreateCell(0.5,0.5,0,red),
|
||||||
|
// CreateCell(0.5,0.5,0,green),
|
||||||
|
CreateCell(0,1,0,blue)
|
||||||
|
},
|
||||||
|
.fillInterpolation = FillInterpolation::NO_FILL,
|
||||||
|
.frameInterpolation = FrameInterpolation::FADE,
|
||||||
|
.delay = std::chrono::milliseconds(10000)
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<AnimationFrame> testAnimationSequence1{
|
||||||
|
testFrame1,
|
||||||
|
testFrame2,
|
||||||
|
testFrame3,
|
||||||
|
testFrame1
|
||||||
|
};
|
||||||
|
}
|
||||||
205
lib/Board/Board.h
Normal file
205
lib/Board/Board.h
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
/**
|
||||||
|
* @file Board.h
|
||||||
|
* @brief The Board class is meant to store data about each cube on the board and
|
||||||
|
* provide an easy way to organize and access that data in a 3-dimensional context.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <array>
|
||||||
|
#include <WString.h>
|
||||||
|
|
||||||
|
#include "BoardTypes.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
class Board{
|
||||||
|
public:
|
||||||
|
Board() = default;
|
||||||
|
~Board() = default;
|
||||||
|
|
||||||
|
constexpr const V3D<uint32_t> &GetSize() const{return BOARD_DIMS;}
|
||||||
|
constexpr uint32_t GetNumberCubes() const{return BOARD_DIMS.x * BOARD_DIMS.y * BOARD_DIMS.z;}
|
||||||
|
|
||||||
|
constexpr uint32_t GetMaxDimension(){return std::max(std::max(BOARD_DIMS.x, BOARD_DIMS.y), BOARD_DIMS.z);}
|
||||||
|
/**
|
||||||
|
* @brief Returns a string in the format:
|
||||||
|
* !a,b,c,d,e,f,g,h,i;
|
||||||
|
* Where each letter is the number of cubes in a given position's stack
|
||||||
|
* @param stringBuffer the buffer to write the string into
|
||||||
|
*/
|
||||||
|
void ToStackString(String& stringBuffer) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief fill the entire board with the given color
|
||||||
|
* @param color the color to fill the board with
|
||||||
|
*/
|
||||||
|
void FillColor(const V3D<uint32_t> &color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the color of the cube at the given position.
|
||||||
|
* Even if the cube is not occupied, it will remember this color
|
||||||
|
* and turn that color if it becomes occupied.
|
||||||
|
* @param position the position of the cube.
|
||||||
|
* @param color the color you want the cube to be
|
||||||
|
*/
|
||||||
|
void SetCubeColor(const V3D<uint32_t> &position, const V3D<uint32_t> &color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the occupation status of the cube at a given position
|
||||||
|
* @param position the position of the cube
|
||||||
|
* @param the occupation status of the cube
|
||||||
|
* @post if the new occupation status of the cube is different than
|
||||||
|
* the old occupation status, this will enable boardStateHasChanged.
|
||||||
|
*/
|
||||||
|
void SetCubeOccupation(const V3D<uint32_t> &position, bool occupation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns true if the board state has changed since this flag was last set to false
|
||||||
|
*/
|
||||||
|
bool BoardStateChanged(){return this->boardStateHasChanged;}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief set the board state status.
|
||||||
|
* @note you should probably only use this to clear the baordState flag
|
||||||
|
*/
|
||||||
|
void SetStateChanged(bool boardState){this->boardStateHasChanged = boardState;}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get a column along any axis read into the sliceBuffer
|
||||||
|
* @param column .z specifies the normal direction of the plane (see PLANE_NORMAL), and
|
||||||
|
* the x,y values specify the location of the column in that plane
|
||||||
|
* to fill. IE To fill one stack at 0,2 I would say give V3D<uint32_t>(0,2,PLANE_NORMAL::Z)
|
||||||
|
* @param sliceBuffer an array of pointers to the cubes along that column
|
||||||
|
* @returns the number of elements written into the slice buffer
|
||||||
|
* @note That array is stored locally and will be overwritten everytime this function is called.
|
||||||
|
* Also, any unused spots at the end of the array will be nullptrs
|
||||||
|
* @warning allocate the size of the slice buffer using GetMaxDimension if you don't know what you're doing!
|
||||||
|
*/
|
||||||
|
uint32_t SliceBoard(const V3D<uint32_t> &column, BOARD_TYPES::Cube ** sliceBuffer);
|
||||||
|
|
||||||
|
void PrintEntireBoard() const;
|
||||||
|
|
||||||
|
void UpdateAllColors(const std::array<std::array<std::array<V3D<uint32_t>, BOARD_DIMS.z>, BOARD_DIMS.y>, BOARD_DIMS.x>& colorFrame){
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
this->cubes[x][y][z].color = colorFrame[x][y][z];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
// this is a 3d array of cubes to represent the board. Good luck visualizing it
|
||||||
|
/* _____________
|
||||||
|
/ /|
|
||||||
|
/ / |
|
||||||
|
/ / |
|
||||||
|
/____________/ |
|
||||||
|
| | |
|
||||||
|
| | /
|
||||||
|
| | /
|
||||||
|
|____________|/
|
||||||
|
*/
|
||||||
|
std::array<std::array<std::array<BOARD_TYPES::Cube, BOARD_DIMS.z>, BOARD_DIMS.y>, BOARD_DIMS.x> cubes;
|
||||||
|
|
||||||
|
bool boardStateHasChanged;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Board<BOARD_DIMS>::ToStackString(String &stringBuffer) const{
|
||||||
|
std::array<uint32_t, BOARD_DIMS.x * BOARD_DIMS.y> linearizedBoard;
|
||||||
|
for(uint32_t x{0}; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y{0}; y < BOARD_DIMS.y; y++){
|
||||||
|
uint32_t boardIndex{x + y*3};
|
||||||
|
linearizedBoard[boardIndex] = 0;
|
||||||
|
for(uint32_t z{0}; z < BOARD_DIMS.z; z++){
|
||||||
|
linearizedBoard[boardIndex] += this->cubes[x][y][z].isOccupied;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stringBuffer += String(linearizedBoard[0]);
|
||||||
|
|
||||||
|
for(uint32_t i = 1; i < BOARD_DIMS.x * BOARD_DIMS.y; i++){
|
||||||
|
stringBuffer += "," + String(linearizedBoard[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Board<BOARD_DIMS>::FillColor(const V3D<uint32_t> &color){
|
||||||
|
for(uint32_t x{0}; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y{0}; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z{0}; z < BOARD_DIMS.z; z++){
|
||||||
|
this->cubes[x][y][z].color = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Board<BOARD_DIMS>::SetCubeColor(const V3D<uint32_t> &position, const V3D<uint32_t> &color){
|
||||||
|
this->cubes[position.x][position.y][position.z].color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Board<BOARD_DIMS>::SetCubeOccupation(const V3D<uint32_t> &position, bool occupation){
|
||||||
|
bool oldOccupation{this->cubes[position.x][position.y][position.z].isOccupied};
|
||||||
|
this->cubes[position.x][position.y][position.z].isOccupied = occupation;
|
||||||
|
if(occupation != oldOccupation) this->boardStateHasChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
uint32_t Board<BOARD_DIMS>::SliceBoard(const V3D<uint32_t> &column, BOARD_TYPES::Cube ** sliceBuffer){
|
||||||
|
uint32_t columnLength{0};
|
||||||
|
V3D<uint32_t> indexIncrimentVector{};
|
||||||
|
V3D<uint32_t> indexVector{};
|
||||||
|
|
||||||
|
switch(column.z){
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::X:
|
||||||
|
columnLength = BOARD_DIMS.x;
|
||||||
|
indexIncrimentVector.x = 1;
|
||||||
|
indexVector.z = column.x;
|
||||||
|
indexVector.y = column.y;
|
||||||
|
break;
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::Y:
|
||||||
|
columnLength = BOARD_DIMS.y;
|
||||||
|
indexIncrimentVector.y = 1;
|
||||||
|
indexVector.x = column.x;
|
||||||
|
indexVector.z = column.y;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::Z:
|
||||||
|
columnLength = BOARD_DIMS.z;
|
||||||
|
indexIncrimentVector.z = 1;
|
||||||
|
indexVector.x = column.x;
|
||||||
|
indexVector.y = column.y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(uint32_t i = 0; i < columnLength; i++){
|
||||||
|
if(indexVector.x >= BOARD_DIMS.x || indexVector.y >= BOARD_DIMS.y || indexVector.z >= BOARD_DIMS.z){
|
||||||
|
Serial.println("Board::SliceBoard: Index Out of Bounds:" + String(indexVector.x) + "," + String(indexVector.y) + "," + String(indexVector.z));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
sliceBuffer[i] = &(this->cubes[indexVector.x][indexVector.y][indexVector.z]);
|
||||||
|
indexVector += indexIncrimentVector;
|
||||||
|
}
|
||||||
|
return columnLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void Board<BOARD_DIMS>::PrintEntireBoard() const{
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
const BOARD_TYPES::Cube &cube = this->cubes[x][y][z];
|
||||||
|
Serial.print("Cube X:" + String(x) + ",Y:" + String(y) + ",Z:" + String(z));
|
||||||
|
Serial.print("\tColor R:" + String(cube.color.x) + ",G:" + String(cube.color.y) + ",B:" + String(cube.color.z));
|
||||||
|
Serial.println("\tOccupied? " + String(cube.isOccupied));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
187
lib/Board/BoardDriver.h
Normal file
187
lib/Board/BoardDriver.h
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
/**
|
||||||
|
* @file BoardDriver.h
|
||||||
|
* @brief the board driver provides helpful methods to read the physical board's state,
|
||||||
|
* filter those results, and send color data to the board
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#include "BoardTypes.h"
|
||||||
|
#include "BoardTypes.h"
|
||||||
|
|
||||||
|
template <uint32_t NUM_STACKS>
|
||||||
|
class BoardDriver{
|
||||||
|
public:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param stacks a reference to an array which contains information about the pins which control each cube stack.
|
||||||
|
* @param pixelController a reference to a pre-constructed neopixel controller which will allow this driver to control neopixels
|
||||||
|
*/
|
||||||
|
BoardDriver(
|
||||||
|
std::array<BOARD_TYPES::CubeStack, NUM_STACKS> &stacks,
|
||||||
|
Adafruit_NeoPixel &pixelController
|
||||||
|
);
|
||||||
|
~BoardDriver() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initializes all of the pins necessary to read/write to the board
|
||||||
|
*/
|
||||||
|
void Init();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param numXStacks the width of the board along the x dimension.
|
||||||
|
* @param X_COORD the x coordinate of the stack you want information about
|
||||||
|
* @param Y_COORD the y coordinate of the stack you want information about
|
||||||
|
* @returns Get the number of cubes present in a stack
|
||||||
|
*/
|
||||||
|
uint32_t GetNumberCubes(uint32_t numXStacks, uint32_t X_COORD, uint32_t Y_COORD);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param stackIndex the index of the stack that you want to know the height of
|
||||||
|
* @returns Get the number of cubes present in a stack
|
||||||
|
*/
|
||||||
|
uint32_t GetNumberCubes(uint32_t stackIndex);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief stream data to a single cube stack on the board
|
||||||
|
* @param numXStacks the width of the board along the x dimension.
|
||||||
|
* @param X_COORD the x coordinate of the stack you want information about
|
||||||
|
* @param Y_COORD the y coordinate of the stack you want information about
|
||||||
|
* @param cubes an array of cube pointers which contain the color data you want to stream
|
||||||
|
* @param numCubes the number of cubes in the cubes array
|
||||||
|
*/
|
||||||
|
void UpdateStackLEDs(
|
||||||
|
uint32_t numXStacks,
|
||||||
|
uint32_t X_COORD,
|
||||||
|
uint32_t Y_COORD,
|
||||||
|
BOARD_TYPES::Cube* cubes[],
|
||||||
|
uint32_t numCubes
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief stream data to a single cube stack on the board
|
||||||
|
* @param stackIndex the index of the stack you want to update the color of
|
||||||
|
* @param cubes an array of cube pointers which contain the color data you want to stream
|
||||||
|
* @param numCubes the number of cubes in the cubes array
|
||||||
|
*/
|
||||||
|
void UpdateStackLEDs(
|
||||||
|
uint32_t stackIndex,
|
||||||
|
BOARD_TYPES::Cube* cubes[],
|
||||||
|
uint32_t numCubes
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::array<BOARD_TYPES::CubeStack, NUM_STACKS> &stacks;
|
||||||
|
Adafruit_NeoPixel &pixelController;
|
||||||
|
std::array<uint16_t, NUM_STACKS> filteredReadings;
|
||||||
|
|
||||||
|
uint32_t xy2StackIndex(uint32_t x_coord, uint32_t y_coord, uint32_t numXStacks){
|
||||||
|
return x_coord + y_coord*numXStacks;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
void BoardDriver<NUM_STACKS>::Init(){
|
||||||
|
for(uint32_t i = 0; i < NUM_STACKS; i++){
|
||||||
|
pinMode(this->stacks[i].ledPin, OUTPUT);
|
||||||
|
filteredReadings[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// begin doesn't really do anything besides setting the pinmode
|
||||||
|
this->pixelController.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
BoardDriver<NUM_STACKS>::BoardDriver(
|
||||||
|
std::array<BOARD_TYPES::CubeStack, NUM_STACKS> &stacks,
|
||||||
|
Adafruit_NeoPixel &pixelController
|
||||||
|
):
|
||||||
|
stacks(stacks),
|
||||||
|
pixelController(pixelController)
|
||||||
|
{
|
||||||
|
for(uint32_t i = 0; i < NUM_STACKS; i++){
|
||||||
|
this->filteredReadings[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
void BoardDriver<NUM_STACKS>::UpdateStackLEDs(
|
||||||
|
uint32_t numXStacks,
|
||||||
|
uint32_t X_COORD,
|
||||||
|
uint32_t Y_COORD,
|
||||||
|
BOARD_TYPES::Cube* cubes[],
|
||||||
|
uint32_t numCubes
|
||||||
|
){
|
||||||
|
this->UpdateStackLEDs(this->xy2StackIndex(X_COORD, Y_COORD, numXStacks), cubes, numCubes);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
void BoardDriver<NUM_STACKS>::UpdateStackLEDs(
|
||||||
|
uint32_t stackIndex,
|
||||||
|
BOARD_TYPES::Cube* cubes[],
|
||||||
|
uint32_t numCubes
|
||||||
|
){
|
||||||
|
this->pixelController.setPin(this->stacks[stackIndex].ledPin);
|
||||||
|
for(int i = 0; i < numCubes; i++){
|
||||||
|
V3D<uint32_t> color{cubes[i]->color};
|
||||||
|
this->pixelController.setPixelColor(i*2, this->pixelController.Color(color.x, color.y, color.z));
|
||||||
|
this->pixelController.setPixelColor((i*2 + 1), this->pixelController.Color(color.x, color.y, color.z));
|
||||||
|
}
|
||||||
|
this->pixelController.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
uint32_t BoardDriver<NUM_STACKS>::GetNumberCubes(
|
||||||
|
uint32_t numXStacks,
|
||||||
|
uint32_t X_COORD,
|
||||||
|
uint32_t Y_COORD
|
||||||
|
){
|
||||||
|
return this->GetNumberCubes(this->xy2StackIndex(X_COORD, Y_COORD, numXStacks));
|
||||||
|
}
|
||||||
|
|
||||||
|
template<uint32_t NUM_STACKS>
|
||||||
|
uint32_t BoardDriver<NUM_STACKS>::GetNumberCubes(uint32_t stackIndex){
|
||||||
|
// read the ADC and return the number of cubes
|
||||||
|
/*
|
||||||
|
0 cubes: 1 : 4095-3400
|
||||||
|
1 cube: 1/2 3400-2500
|
||||||
|
2 cubes: 1/3 2500-1850
|
||||||
|
3 cubes: 1/4 1850-0
|
||||||
|
*/
|
||||||
|
uint16_t value = analogRead(this->stacks[stackIndex].adcPin);
|
||||||
|
uint16_t lowPassADCRead =
|
||||||
|
static_cast<uint16_t>(
|
||||||
|
(static_cast<float>(this->filteredReadings[stackIndex]) * 0.9)
|
||||||
|
+ (static_cast<float>(value) * 0.1)
|
||||||
|
);
|
||||||
|
// temporary definitions to define value ranges:
|
||||||
|
uint16_t zeroCubesHigh = 4095;
|
||||||
|
uint16_t zeroCubesLow = 3400;
|
||||||
|
uint16_t oneCubeLow = 2500;
|
||||||
|
uint16_t twoCubesLow = 1850;
|
||||||
|
uint16_t threeCubesLow = 0;
|
||||||
|
|
||||||
|
uint8_t stackHeight = 0;
|
||||||
|
|
||||||
|
if(lowPassADCRead >= zeroCubesLow && lowPassADCRead <= zeroCubesHigh){
|
||||||
|
stackHeight = 0;
|
||||||
|
}
|
||||||
|
else if(lowPassADCRead >= oneCubeLow){
|
||||||
|
stackHeight = 1;
|
||||||
|
}
|
||||||
|
else if(lowPassADCRead >= twoCubesLow){
|
||||||
|
stackHeight = 2;
|
||||||
|
}
|
||||||
|
else if(lowPassADCRead >= threeCubesLow){
|
||||||
|
stackHeight = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->filteredReadings[stackIndex] = lowPassADCRead;
|
||||||
|
return stackHeight;
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
#include "BoardLayout.h"
|
|
||||||
|
|
||||||
uint8_t BoardLayout::GetNumberStacks(){
|
|
||||||
return this->boardWidth * this->boardHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BoardLayout::SetStackColors(uint8_t stackNum, Color * colors){
|
|
||||||
CubeStack * stack = this->stacks[stackNum];
|
|
||||||
stack->SetLEDColors(colors, this->boardHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool BoardLayout::BoardStateHasChanged(){
|
|
||||||
uint16_t boardState[this->boardWidth * this->boardLength];
|
|
||||||
this->GetBoardState(boardState);
|
|
||||||
|
|
||||||
// compare the board state to the last board state
|
|
||||||
for(int i = 0; i < (this->boardWidth * this->boardLength); i++){
|
|
||||||
uint16_t stackState = boardState[i];
|
|
||||||
uint16_t lastStackState = (this->lastBoardState)[i];
|
|
||||||
if(stackState != lastStackState){
|
|
||||||
// copy the board state into the last board state
|
|
||||||
for(int k = 0; k < (this->boardWidth * this->boardLength); k++){
|
|
||||||
this->lastBoardState[k] = boardState[k];
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BoardLayout::GetBoardState(uint16_t * boardStateBuffer){
|
|
||||||
for(int i = 0; i < (this->boardLength * this->boardWidth); i++){
|
|
||||||
CubeStack * stack = this->stacks[i];
|
|
||||||
stack->SendLEDData(); // Enable this if you want to constantly stream LED data
|
|
||||||
boardStateBuffer[i] = stack->GetNumberCubes();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
/**
|
|
||||||
* @brief This is the full board manager which handles the state of every stack on the board
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CubeStack.h"
|
|
||||||
#include "Color.h"
|
|
||||||
|
|
||||||
class BoardLayout{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief BoardLayout COnstructor
|
|
||||||
*/
|
|
||||||
BoardLayout(uint8_t boardWidth, uint8_t boardLength, uint8_t boardHeight, CubeStack ** stacks) :
|
|
||||||
boardWidth(boardWidth),
|
|
||||||
boardLength(boardLength),
|
|
||||||
boardHeight(boardHeight),
|
|
||||||
stacks(stacks)
|
|
||||||
{
|
|
||||||
this->lastBoardState = new uint16_t[boardWidth * boardLength];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Check if our board state has changed
|
|
||||||
* @return true if the board state has changed, false otherwise
|
|
||||||
*/
|
|
||||||
bool BoardStateHasChanged();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get the Number of Stacks
|
|
||||||
* @return the number of stacks
|
|
||||||
*/
|
|
||||||
uint8_t GetNumberStacks();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Set the LED Colors
|
|
||||||
* @param stackNum the stack index you would like to address.
|
|
||||||
* From top left to bottom right, the stack numbers are as follows:
|
|
||||||
* | 0 1 2 |
|
|
||||||
* | 3 4 5 |
|
|
||||||
* | 6 7 8 |
|
|
||||||
* @param Colors the array of colors to set the LEDs in a stack to
|
|
||||||
*/
|
|
||||||
void SetStackColors(uint8_t stackNum, Color * colors);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get the board population state
|
|
||||||
* @param boardStateBuffer the buffer to write the board state to. It must be at least boardWidth * boardLength in length
|
|
||||||
*/
|
|
||||||
void GetBoardState(uint16_t * boardStateBuffer);
|
|
||||||
|
|
||||||
private:
|
|
||||||
uint8_t boardWidth;
|
|
||||||
uint8_t boardLength;
|
|
||||||
uint8_t boardHeight;
|
|
||||||
/*
|
|
||||||
An array of arrays of stacks
|
|
||||||
[ [stack1, stack2, stack3],
|
|
||||||
[stack4, stack5, stack6],
|
|
||||||
[stack7, stack8, stack9] ]
|
|
||||||
etc
|
|
||||||
*/
|
|
||||||
CubeStack ** stacks;
|
|
||||||
|
|
||||||
// records the last known board state
|
|
||||||
uint16_t * lastBoardState;
|
|
||||||
|
|
||||||
};
|
|
||||||
197
lib/Board/BoardManager.h
Normal file
197
lib/Board/BoardManager.h
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
/**
|
||||||
|
* @file BoardManager.h
|
||||||
|
* @brief Provides an easy way to manage a board
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Board.h"
|
||||||
|
#include "BoardDriver.h"
|
||||||
|
#include "Vector3D.h"
|
||||||
|
#include "Animator.h"
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
class BoardManager{
|
||||||
|
public:
|
||||||
|
BoardManager(BoardDriver<BOARD_WIDTH*BOARD_LENGTH> &boardDriver, Animator<BOARD_DIMS> &animator);
|
||||||
|
|
||||||
|
~BoardManager() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize the board control. This hsould be called during setup
|
||||||
|
*/
|
||||||
|
void Init();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Read the board state and update the LED colors
|
||||||
|
*/
|
||||||
|
void Update();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the color of one cube
|
||||||
|
* @param position the position of the cube
|
||||||
|
* @param color the oclor you want the cube to be
|
||||||
|
*/
|
||||||
|
void SetCubeColor(const V3D<uint32_t> &position, const V3D<uint32_t> &color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Set the color of one column of cubes.
|
||||||
|
* A column is defined as x,y,z where z is the normal vector direction to a plane.
|
||||||
|
* x,y is the column coordinate on the plane.
|
||||||
|
* @param column the column vector
|
||||||
|
* @param color the color you want the column to be
|
||||||
|
*/
|
||||||
|
void SetColumnColors(const V3D<uint32_t> &column, const V3D<uint32_t> *color, uint32_t numColors);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Fill a column along any axis with a color
|
||||||
|
* @param column .z specifies the normal direction of the plane (see PLANE_NORMAL), and
|
||||||
|
* the x,y values specify the location of the column in that plane
|
||||||
|
* to fill. IE To fill one stack at 0,2 I would say give V3D<uint32_t>(0,2,PLANE_NORMAL::Z)
|
||||||
|
* @param color the color you want to fill the column with
|
||||||
|
*/
|
||||||
|
void FillColumnColor(const V3D<uint32_t> &column, const V3D<uint32_t> &color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @returns true if the board has changed state
|
||||||
|
*/
|
||||||
|
bool HasBoardChanged();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Clear the board state changed flag
|
||||||
|
*/
|
||||||
|
void ClearBoardChanged();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the board occupation state returned in the format a,b,c,d....
|
||||||
|
*/
|
||||||
|
void Board2StackString(String& messageBuffer);
|
||||||
|
|
||||||
|
void FillColor(const V3D<uint32_t> &color){this->board.FillColor(color);}
|
||||||
|
void PrintColorState(){this->board.PrintEntireBoard();}
|
||||||
|
|
||||||
|
private:
|
||||||
|
BoardDriver<BOARD_WIDTH*BOARD_LENGTH> &driver;
|
||||||
|
Board<BOARD_DIMS> board{};
|
||||||
|
Animator<BOARD_DIMS> &animator;
|
||||||
|
|
||||||
|
void updateStackColors(const V3D<uint32_t> &column);
|
||||||
|
|
||||||
|
uint32_t getColumnHeight(BOARD_TYPES::PLANE_NORMAL normal){
|
||||||
|
switch(normal){
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::X:
|
||||||
|
return BOARD_DIMS.x;
|
||||||
|
break;
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::Y:
|
||||||
|
return BOARD_DIMS.y;
|
||||||
|
break;
|
||||||
|
case BOARD_TYPES::PLANE_NORMAL::Z:
|
||||||
|
return BOARD_DIMS.z;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateColorsFromAnimator();
|
||||||
|
|
||||||
|
};
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::updateColorsFromAnimator(){
|
||||||
|
if(this->animator.interpolatedFrameHasChanged){
|
||||||
|
this->board.UpdateAllColors(this->animator.GetInterpolatedFrame());
|
||||||
|
this->animator.interpolatedFrameHasChanged = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
BoardManager<BOARD_DIMS>::BoardManager(BoardDriver<BOARD_WIDTH*BOARD_LENGTH> &boardDriver, Animator<BOARD_DIMS> &animator):
|
||||||
|
driver(boardDriver),
|
||||||
|
animator(animator){}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::Init(){
|
||||||
|
this->driver.Init();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::Update(){
|
||||||
|
this->updateColorsFromAnimator();
|
||||||
|
// update the occupied cubes on the board and the cube colors
|
||||||
|
for(uint32_t x = 0; x < BOARD_DIMS.x; x++){
|
||||||
|
for(uint32_t y = 0; y < BOARD_DIMS.y; y++){
|
||||||
|
uint32_t stackIndex{y * BOARD_DIMS.x + x};
|
||||||
|
uint32_t numCubes{this->driver.GetNumberCubes(stackIndex)};
|
||||||
|
for(uint32_t z = 0; z < BOARD_DIMS.z; z++){
|
||||||
|
V3D<uint32_t> cubePosition{x, y, z};
|
||||||
|
// update the cube's occupation
|
||||||
|
this->board.SetCubeOccupation(cubePosition, z < numCubes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the column vector for the slice direction
|
||||||
|
V3D<uint32_t> sliceVector{x,y,BOARD_TYPES::PLANE_NORMAL::Z};
|
||||||
|
// create a cube slice array buffer
|
||||||
|
BOARD_TYPES::Cube* sliceBuffer[BOARD_DIMS.z];
|
||||||
|
// have the board slice get read into our buffer
|
||||||
|
this->board.SliceBoard(sliceVector, sliceBuffer);
|
||||||
|
// send the board slice to the driver to update its LED colors
|
||||||
|
this->driver.UpdateStackLEDs(stackIndex, sliceBuffer, BOARD_DIMS.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::updateStackColors(const V3D<uint32_t> &column){
|
||||||
|
// the only column type allowed here is z.
|
||||||
|
V3D<uint32_t> sliceVector{column.x, column.y, BOARD_TYPES::Z};
|
||||||
|
// create a buffer for slice board to write the cube slice into
|
||||||
|
BOARD_TYPES::Cube * cubeSlice[BOARD_DIMS.z];
|
||||||
|
this->board.SliceBoard(column, cubeSlice);
|
||||||
|
|
||||||
|
uint32_t numCubes{this->getColumnHeight(static_cast<BOARD_TYPES::PLANE_NORMAL>(column.z))};
|
||||||
|
this->driver.UpdateStackLEDs(BOARD_DIMS.x, cubeSlice, numCubes);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::SetCubeColor(const V3D<uint32_t> &position, const V3D<uint32_t> &color){
|
||||||
|
this->board.SetCubeColor(position, color);
|
||||||
|
V3D<uint32_t> slice{position.x, position.y, BOARD_TYPES::PLANE_NORMAL::Z};
|
||||||
|
this->updateStackColors(slice);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::SetColumnColors(const V3D<uint32_t> &column, const V3D<uint32_t> *color, uint32_t numColors){
|
||||||
|
uint32_t columnHeight{this->getColumnHeight(static_cast<BOARD_TYPES::PLANE_NORMAL>(column.z))};
|
||||||
|
|
||||||
|
// create a cube pointer buffer and store a board slice into it
|
||||||
|
BOARD_TYPES::Cube * slicedBoard[columnHeight];
|
||||||
|
uint32_t sliceLength{this->board.SliceBoard(column, slicedBoard)};
|
||||||
|
|
||||||
|
uint32_t maxIndex{std::min(numColors, columnHeight)};
|
||||||
|
for(uint32_t i = 0; i < maxIndex; i++){
|
||||||
|
slicedBoard[i]->color = color[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::FillColumnColor(const V3D<uint32_t> &column, const V3D<uint32_t> &color){
|
||||||
|
uint32_t columnHeight{this->getColumnHeight(column.z)};
|
||||||
|
|
||||||
|
V3D<uint32_t> colors[columnHeight];
|
||||||
|
for(uint32_t i = 0; i < columnHeight; i++){
|
||||||
|
colors[i] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->SetColumnColors(column, colors);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
bool BoardManager<BOARD_DIMS>::HasBoardChanged(){return this->board.BoardStateChanged();}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::ClearBoardChanged(){this->board.SetStateChanged(false);}
|
||||||
|
|
||||||
|
template <const V3D<uint32_t> &BOARD_DIMS>
|
||||||
|
void BoardManager<BOARD_DIMS>::Board2StackString(String& messageBuffer){
|
||||||
|
this->board.ToStackString(messageBuffer);
|
||||||
|
}
|
||||||
26
lib/Board/BoardTypes.h
Normal file
26
lib/Board/BoardTypes.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* @file BoardTypes.h
|
||||||
|
* @brief Some types to that you'll need to define and control the board
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include "Vector3D.h"
|
||||||
|
|
||||||
|
namespace BOARD_TYPES{
|
||||||
|
struct CubeStack{
|
||||||
|
uint8_t adcPin;
|
||||||
|
uint8_t ledPin;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum PLANE_NORMAL : uint32_t{
|
||||||
|
X = 0,
|
||||||
|
Y,
|
||||||
|
Z
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Cube{
|
||||||
|
V3D<uint32_t> color;
|
||||||
|
bool isOccupied{false};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file Color.h
|
|
||||||
* @brief This file contains the color struct
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#include <Arduino.h>
|
|
||||||
|
|
||||||
// store a color
|
|
||||||
struct Color{
|
|
||||||
// create a constructor for this struct
|
|
||||||
Color(uint8_t red, uint8_t green, uint8_t blue) :
|
|
||||||
red(red),
|
|
||||||
green(green),
|
|
||||||
blue(blue)
|
|
||||||
{}
|
|
||||||
Color() = default;
|
|
||||||
uint8_t red{0};
|
|
||||||
uint8_t green{0};
|
|
||||||
uint8_t blue{0};
|
|
||||||
};
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
#include "CubeStack.h"
|
|
||||||
|
|
||||||
CubeStack::CubeStack(uint16_t ADCPin, uint16_t ledPin, uint8_t numLEDs){
|
|
||||||
this->ADCPin = ADCPin;
|
|
||||||
this->blockLights = *(new Adafruit_NeoPixel(numLEDs*2, ledPin, NEO_GRB + NEO_KHZ800));
|
|
||||||
this->ledColors = new Color[numLEDs];
|
|
||||||
this->numLEDs = numLEDs;
|
|
||||||
|
|
||||||
// initialize the LED colors to off
|
|
||||||
for(int i = 0; i < numLEDs; i++){
|
|
||||||
this->ledColors[i] = *(new Color(0, 0, 0));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t CubeStack::GetNumberCubes(){
|
|
||||||
// read the ADC and return the number of cubes
|
|
||||||
/*
|
|
||||||
0 cubes: 1 : 4095-3071
|
|
||||||
1 cube: 1/2 3070-1706
|
|
||||||
2 cubes: 1/3 1705-1195
|
|
||||||
3 cubes: 1/4 1195-0
|
|
||||||
*/
|
|
||||||
uint16_t value = analogRead(this->ADCPin);
|
|
||||||
|
|
||||||
this->lowPassADCRead = static_cast<uint16_t>((static_cast<float>(this->lowPassADCRead) * 0.9) + (static_cast<float>(value) * 0.1));
|
|
||||||
|
|
||||||
// temporary definitions to define value ranges:
|
|
||||||
uint16_t zeroCubesHigh = 4095;
|
|
||||||
uint16_t zeroCubesLow = 3071;
|
|
||||||
uint16_t oneCubeLow = 1706;
|
|
||||||
uint16_t twoCubesLow = 1000;
|
|
||||||
uint16_t threeCubesLow = 0;
|
|
||||||
|
|
||||||
uint8_t stackHeight = 0;
|
|
||||||
|
|
||||||
if(this->lowPassADCRead >= zeroCubesLow && this->lowPassADCRead <= zeroCubesHigh){
|
|
||||||
stackHeight = 0;
|
|
||||||
}
|
|
||||||
else if(this->lowPassADCRead >= oneCubeLow){
|
|
||||||
stackHeight = 1;
|
|
||||||
}
|
|
||||||
else if(this->lowPassADCRead >= twoCubesLow){
|
|
||||||
stackHeight = 2;
|
|
||||||
}
|
|
||||||
else if(this->lowPassADCRead >= threeCubesLow){
|
|
||||||
stackHeight = 3;
|
|
||||||
}
|
|
||||||
if(this->lastStackHeight != stackHeight){
|
|
||||||
this->lastStackHeight = stackHeight;
|
|
||||||
this->SendLEDData();
|
|
||||||
}
|
|
||||||
|
|
||||||
return stackHeight;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CubeStack::SetLEDColors(Color * colors, uint8_t numColors){
|
|
||||||
// copy the colors into the ledColors array
|
|
||||||
for(int i = 0; i < numColors; i++){
|
|
||||||
this->ledColors[i].red = colors[i].red;
|
|
||||||
this->ledColors[i].green = colors[i].green;
|
|
||||||
this->ledColors[i].blue = colors[i].blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
this->SendLEDData();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CubeStack::SendLEDData(){
|
|
||||||
// we always initialize before we do anything because other CubeStacks could be hogging the hardware
|
|
||||||
// between our writes
|
|
||||||
this->blockLights.begin();
|
|
||||||
// set the LED colors
|
|
||||||
for(int i = 0; i < this->numLEDs; i++){
|
|
||||||
this->blockLights.setPixelColor(i*2, this->blockLights.Color(this->ledColors[i].red, this->ledColors[i].green, this->ledColors[i].blue));
|
|
||||||
this->blockLights.setPixelColor((i*2 + 1), this->blockLights.Color(this->ledColors[i].red, this->ledColors[i].green, this->ledColors[i].blue));
|
|
||||||
}
|
|
||||||
this->blockLights.show();
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/**
|
|
||||||
* @brief this manages a single cube stack and the lighting / detecting of how many cubes
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <Arduino.h>
|
|
||||||
#include <Adafruit_NeoPixel.h>
|
|
||||||
#include "Color.h"
|
|
||||||
|
|
||||||
|
|
||||||
class CubeStack{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief Construct a new Cube Stack object
|
|
||||||
* @param ADCPin the pin that the ADC is connected to
|
|
||||||
* @param ledPin the pin that the LED is connected to
|
|
||||||
*/
|
|
||||||
CubeStack(uint16_t ADCPin, uint16_t ledPin, uint8_t numLEDs);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns the number of cubes in the stack
|
|
||||||
* @return the number of cubes in the stack
|
|
||||||
*/
|
|
||||||
uint8_t GetNumberCubes();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Set the led color array and then send the data to the LED strip
|
|
||||||
* @param colors the array of colors to set the LEDs to
|
|
||||||
* @param numColors the number of colors in the array
|
|
||||||
*/
|
|
||||||
void SetLEDColors(Color * colors, uint8_t numColors);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief sends the LED data to the LED strip
|
|
||||||
*/
|
|
||||||
void SendLEDData();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t ADCPin;
|
|
||||||
// we will probably need a pointer to a fastled object here
|
|
||||||
Adafruit_NeoPixel blockLights;
|
|
||||||
|
|
||||||
uint16_t lowPassADCRead{0};
|
|
||||||
|
|
||||||
// store the Color of each LED
|
|
||||||
Color * ledColors;
|
|
||||||
uint8_t numLEDs;
|
|
||||||
uint8_t lastStackHeight{0};
|
|
||||||
};
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
#include "ColorManager.h"
|
|
||||||
|
|
||||||
void ColorManager::Update(){
|
|
||||||
if(!(this->enabled)){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// go through our colors and have them fade from r->g->b->r
|
|
||||||
for(uint8_t i = 0; i < 9; i++){
|
|
||||||
for(uint8_t j = 0; j < 3; j++){
|
|
||||||
Color * color = this->colors[i][j];
|
|
||||||
// fade from red to green
|
|
||||||
if(color->red > 0 && color->green >= 0 && color->blue == 0){
|
|
||||||
color->red--;
|
|
||||||
color->green++;
|
|
||||||
}
|
|
||||||
// fade from green to blue
|
|
||||||
else if(color->green > 0 && color->blue >= 0 && color->red == 0){
|
|
||||||
color->green--;
|
|
||||||
color->blue++;
|
|
||||||
}
|
|
||||||
// fade from blue to red
|
|
||||||
else if(color->blue > 0 && color->red >= 0 && color->green == 0){
|
|
||||||
color->blue--;
|
|
||||||
color->red++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the colors
|
|
||||||
for(uint8_t i = 0; i < 9; i++){
|
|
||||||
Color temp_colors[3] = {*(this->colors[i][0]), *(this->colors[i][1]), *(this->colors[i][2])};
|
|
||||||
this->board->SetStackColors(i, temp_colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ColorManager::Enable(bool enable){
|
|
||||||
this->enabled = enable;
|
|
||||||
|
|
||||||
if(this->enabled == false){
|
|
||||||
// set all the colors to black
|
|
||||||
Color black(0, 0, 0);
|
|
||||||
Color temp_colors[3] = {black, black, black};
|
|
||||||
// set the colors
|
|
||||||
for(uint8_t i = 0; i < 9; i++){
|
|
||||||
this->board->SetStackColors(i, temp_colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file ColorManager.h
|
|
||||||
* @brief Generate pretty colors for the board and make it do something when unity isn't controlling it
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "BoardLayout.h"
|
|
||||||
#include "Color.h"
|
|
||||||
|
|
||||||
class ColorManager{
|
|
||||||
public:
|
|
||||||
ColorManager(BoardLayout * board) :
|
|
||||||
board(board)
|
|
||||||
{}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Allows the color manager to update the board colors
|
|
||||||
*/
|
|
||||||
void Update();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Enables or disables the color manager
|
|
||||||
* @param enable true to enable, false to disable
|
|
||||||
*/
|
|
||||||
void Enable(bool enable);
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
BoardLayout * board;
|
|
||||||
bool enabled{true};
|
|
||||||
|
|
||||||
Color * colors[9][3] = {
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)},
|
|
||||||
{new Color(255, 0, 0), new Color(0, 255, 0), new Color(0, 0, 255)}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
28
lib/GlobalPrint/GlobalPrint.h
Normal file
28
lib/GlobalPrint/GlobalPrint.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* @file GlobalPrint.h
|
||||||
|
* @brief a method of printing serial data to all outgoing communication methods
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
namespace GlobalPrint{
|
||||||
|
static void Print(const char * s){
|
||||||
|
Serial.print(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Print(const String &s){
|
||||||
|
GlobalPrint::Print(s.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Println(const char * s){
|
||||||
|
GlobalPrint::Print(s);
|
||||||
|
GlobalPrint::Print("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Println(const String &s){
|
||||||
|
GlobalPrint::Println(s.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
1
lib/SerialMessage
Submodule
1
lib/SerialMessage
Submodule
Submodule lib/SerialMessage added at a0bb93624d
@@ -1,58 +0,0 @@
|
|||||||
#include "BluetoothSerialMessage.h"
|
|
||||||
|
|
||||||
BluetoothSerialMessage::BluetoothSerialMessage(BluetoothSerial *serial){
|
|
||||||
this->serial = serial;
|
|
||||||
}
|
|
||||||
|
|
||||||
void BluetoothSerialMessage::Init(unsigned int baud_rate){
|
|
||||||
// Don't need to do anything here, just let the user init bluetooth serial
|
|
||||||
}
|
|
||||||
|
|
||||||
void BluetoothSerialMessage::PrintArgs(){
|
|
||||||
serial->print("Current number of args: ");
|
|
||||||
serial->println(populated_args);
|
|
||||||
for (int i = 0; i < populated_args; i++) {
|
|
||||||
serial->print(args[i]);
|
|
||||||
serial->print(" ");
|
|
||||||
}
|
|
||||||
serial->println();
|
|
||||||
}
|
|
||||||
|
|
||||||
void BluetoothSerialMessage::readSerial(){
|
|
||||||
boolean recvInProgress = false;
|
|
||||||
byte ndx = 0;
|
|
||||||
char c;
|
|
||||||
|
|
||||||
// read the incoming serial data:
|
|
||||||
while (serial->available() > 0 && data_recieved == false) {
|
|
||||||
// get the neext character in the serial buffer
|
|
||||||
c = serial->read();
|
|
||||||
Serial.print(c);
|
|
||||||
|
|
||||||
// only execute this if the startMarker has been received
|
|
||||||
if (recvInProgress == true) {
|
|
||||||
// if the incoming character is not the endMarker...
|
|
||||||
if (c != endMarker) {
|
|
||||||
// add it to the data array
|
|
||||||
data[ndx] = c;
|
|
||||||
ndx++; // increment the data array index
|
|
||||||
// if the index is greater than the maximum data array size,
|
|
||||||
// keep overwriting the last element until the endMarker is received.
|
|
||||||
if (ndx >= num_chars) {
|
|
||||||
ndx = num_chars - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if the incoming character is the endMarker clean up and set the flags
|
|
||||||
else {
|
|
||||||
data[ndx] = '\0'; // terminate the string
|
|
||||||
recvInProgress = false;
|
|
||||||
ndx = 0;
|
|
||||||
data_recieved = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if the incoming character is the startMarker, set the recvInProgress flag
|
|
||||||
else if (c == startMarker) {
|
|
||||||
recvInProgress = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
#include "SerialMessage.h"
|
|
||||||
#include <BluetoothSerial.h>
|
|
||||||
|
|
||||||
class BluetoothSerialMessage : public SerialMessage{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief Construct a new Bluetooth Serial Message object
|
|
||||||
*/
|
|
||||||
BluetoothSerialMessage(BluetoothSerial *serial);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initialize the BluetoothSerialMessage object
|
|
||||||
*/
|
|
||||||
void Init(unsigned int baud_rate = 115200) override;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief prints the args array to the serial monitor
|
|
||||||
*/
|
|
||||||
void PrintArgs() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
|
||||||
* @brief reads the serial data and stores it in the data array
|
|
||||||
*/
|
|
||||||
void readSerial() override;
|
|
||||||
|
|
||||||
BluetoothSerial *serial;
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file SerialMessage.cpp
|
|
||||||
* @brief This file contains the SerialMessage class
|
|
||||||
* @details This file contains the SerialMessage class which is used to parse serial messages
|
|
||||||
* @version 1.0.0
|
|
||||||
* @author Quinn Henthorne. Contact: quinn.henthorne@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "SerialMessage.h"
|
|
||||||
|
|
||||||
SerialMessage::SerialMessage(HardwareSerial *serial) :
|
|
||||||
serial(serial){}
|
|
||||||
|
|
||||||
void SerialMessage::Init(unsigned int baud_rate){
|
|
||||||
serial->begin(baud_rate);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialMessage::readSerial(){
|
|
||||||
char c;
|
|
||||||
|
|
||||||
// read the incoming serial data:
|
|
||||||
while (serial->available() > 0 && data_recieved == false) {
|
|
||||||
// get the neext character in the serial buffer
|
|
||||||
c = serial->read();
|
|
||||||
// only execute this if the startMarker has been received
|
|
||||||
// if the incoming character is the endMarker clean up and set the flags
|
|
||||||
if (recvInProgress == true) {
|
|
||||||
if (c == endMarker) {
|
|
||||||
data[ndx] = '\0'; // terminate the string
|
|
||||||
recvInProgress = false;
|
|
||||||
ndx = 0;
|
|
||||||
data_recieved = true;
|
|
||||||
}
|
|
||||||
// if the incoming character is not the endMarker
|
|
||||||
else {
|
|
||||||
// add it to the data array
|
|
||||||
data[ndx] = c;
|
|
||||||
ndx++; // increment the data array index
|
|
||||||
// if the index is greater than the maximum data array size,
|
|
||||||
// keep overwriting the last element until the endMarker is received.
|
|
||||||
if (ndx >= num_chars) {
|
|
||||||
ndx = num_chars - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if the incoming character is the startMarker, set the recvInProgress flag
|
|
||||||
else if (c == startMarker) {
|
|
||||||
recvInProgress = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialMessage::parseData() { // split the data into its parts
|
|
||||||
this->populated_args = 0; // reset the populated args counter
|
|
||||||
char * indx; // this is used by strtok() as an index
|
|
||||||
int i = 0;
|
|
||||||
indx = strtok(temp_data, ","); // get the first part - the string
|
|
||||||
while(indx != NULL){
|
|
||||||
this->args[i] = atoi(indx);
|
|
||||||
populated_args++;
|
|
||||||
i++;
|
|
||||||
indx = strtok(NULL, ","); // this continues where the previous call left off
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialMessage::Update(){
|
|
||||||
readSerial();
|
|
||||||
if (data_recieved == true) {
|
|
||||||
// for debug only:
|
|
||||||
// Serial.print("Received:");
|
|
||||||
// Serial.print(data);
|
|
||||||
// Serial.println(":End");
|
|
||||||
strcpy(temp_data, data);
|
|
||||||
// this temporary copy is necessary to protect the original data
|
|
||||||
// because strtok() used in parseData() replaces the commas with \0
|
|
||||||
parseData();
|
|
||||||
//PrintArgs();
|
|
||||||
data_recieved = false;
|
|
||||||
new_data = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SerialMessage::IsNewData(){
|
|
||||||
return new_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialMessage::ClearNewData(){
|
|
||||||
new_data = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int * SerialMessage::GetArgs(){
|
|
||||||
return args;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SerialMessage::GetArgsLength(){
|
|
||||||
return args_length;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SerialMessage::GetPopulatedArgs(){
|
|
||||||
return populated_args;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SerialMessage::PrintArgs(){
|
|
||||||
serial->print("Current number of args: ");
|
|
||||||
serial->println(populated_args);
|
|
||||||
for (int i = 0; i < populated_args; i++) {
|
|
||||||
serial->print(args[i]);
|
|
||||||
serial->print(" ");
|
|
||||||
}
|
|
||||||
serial->println();
|
|
||||||
}
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file SerialMessage.h
|
|
||||||
* @brief This file contains the SerialMessage class
|
|
||||||
* @details This file contains the SerialMessage class which is used to parse serial messages
|
|
||||||
* @version 1.0.0
|
|
||||||
* @author Quinn Henthorne. Contact: quinn.henthorne@gmail.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SERIALMESSAGE_H
|
|
||||||
#define SERIALMESSAGE_H
|
|
||||||
|
|
||||||
#include "Arduino.h"
|
|
||||||
|
|
||||||
#define num_chars 500
|
|
||||||
|
|
||||||
class SerialMessage{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief Construct a new Serial Message object
|
|
||||||
*/
|
|
||||||
SerialMessage(HardwareSerial *serial = &Serial);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Initialize the SerialMessage object
|
|
||||||
*/
|
|
||||||
virtual void Init(unsigned int baud_rate = 115200);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Update the SerialMessage object and parse any data that's available
|
|
||||||
*/
|
|
||||||
void Update();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns true if there is new data available
|
|
||||||
* @return true if there is new data available
|
|
||||||
*/
|
|
||||||
bool IsNewData();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Clears the new data flag
|
|
||||||
*/
|
|
||||||
virtual void ClearNewData();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Return a pointer to the args array
|
|
||||||
* @return a pointer to the args array
|
|
||||||
*/
|
|
||||||
int * GetArgs();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns the number of args that have been populated for the current message
|
|
||||||
* @return the number of args that have been populated for the current message
|
|
||||||
*/
|
|
||||||
int GetArgsLength();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Returns the number of args that have been populated for the current message
|
|
||||||
* @return the number of args that have been populated for the current message
|
|
||||||
*/
|
|
||||||
int GetPopulatedArgs();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prints the args array to the serial monitor
|
|
||||||
*/
|
|
||||||
virtual void PrintArgs();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual void readSerial();
|
|
||||||
virtual void parseData();
|
|
||||||
|
|
||||||
bool new_data = false;
|
|
||||||
bool data_recieved = false;
|
|
||||||
bool recvInProgress = false;
|
|
||||||
char data[num_chars]; // an array to store the received data
|
|
||||||
char temp_data[num_chars]; // an array that will be used with strtok()
|
|
||||||
uint16_t ndx = 0;
|
|
||||||
const static int args_length = 30;
|
|
||||||
int populated_args = 0; // the number of args that have been populated for the current message
|
|
||||||
int args[args_length];
|
|
||||||
const char startMarker = '!';
|
|
||||||
const char endMarker = ';';
|
|
||||||
|
|
||||||
private:
|
|
||||||
HardwareSerial *serial;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -8,9 +8,36 @@
|
|||||||
; Please visit documentation for the other options and examples
|
; Please visit documentation for the other options and examples
|
||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[env:denky32]
|
[platformio]
|
||||||
platform = espressif32
|
default_envs = esp32s3_release
|
||||||
board = denky32
|
extra_configs = platformio-local.ini
|
||||||
|
|
||||||
|
[env]
|
||||||
|
upload_protocol = esptool
|
||||||
|
platform = https://github.com/platformio/platform-espressif32.git
|
||||||
|
board = esp32-s3-devkitc-1
|
||||||
framework = arduino
|
framework = arduino
|
||||||
monitor_speed = 115200
|
build_flags = -Iinclude
|
||||||
lib_deps = adafruit/Adafruit NeoPixel@^1.12.0
|
monitor_speed = 9600
|
||||||
|
monitor_filters = colorize, send_on_enter
|
||||||
|
upload_speed = 2000000
|
||||||
|
lib_deps =
|
||||||
|
adafruit/Adafruit NeoPixel@^1.12.3
|
||||||
|
fastled/FastLED@^3.7.3
|
||||||
|
|
||||||
|
|
||||||
|
[env:esp32s3_release]
|
||||||
|
build_type = release
|
||||||
|
monitor_port = COM21
|
||||||
|
upload_port = COM20
|
||||||
|
|
||||||
|
[env:esp32s3_debug]
|
||||||
|
debug_init_break = tbreak setup
|
||||||
|
debug_tool = esp-builtin
|
||||||
|
build_type = debug
|
||||||
|
debug_speed = 20000
|
||||||
|
build_flags =
|
||||||
|
-D DEBUG = 1
|
||||||
|
-I include
|
||||||
|
monitor_port = COM21
|
||||||
|
upload_port = COM20
|
||||||
|
|||||||
292
src/main.cpp
292
src/main.cpp
@@ -1,141 +1,235 @@
|
|||||||
// Other peoples libraries
|
// Other peoples libraries
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <BluetoothSerial.h>
|
#include <BluetoothSerial.h>
|
||||||
|
#include <FreeRTOS.h>
|
||||||
|
#include <Adafruit_NeoPixel.h>
|
||||||
|
#include <chrono>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
// Static Defines
|
||||||
|
#include "PINOUT.h"
|
||||||
|
#include "BOARD-DEFINITIONS.h"
|
||||||
|
#include "COMMANDS.h"
|
||||||
|
|
||||||
// project specific libraries
|
// project specific libraries
|
||||||
#include "BluetoothSerialMessage.h"
|
#include "BluetoothSerial.h"
|
||||||
#include "BoardLayout.h"
|
#include "SerialMessage.h"
|
||||||
#include "BOARD-DEFINITIONS.h"
|
#include "GlobalPrint.h"
|
||||||
#include "Color.h"
|
|
||||||
#include "ColorManager.h"
|
|
||||||
|
|
||||||
// --------------------------------------------------
|
#include "BoardManager.h"
|
||||||
// ----------------- Types ----------------------
|
#include "BoardDriver.h"
|
||||||
// --------------------------------------------------
|
#include "BoardTypes.h"
|
||||||
enum Commands : uint8_t{
|
|
||||||
BoardState = 0,
|
|
||||||
PING = 1,
|
|
||||||
SetStackColors = 2,
|
|
||||||
GoToIdle = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
// --------------------------------------------------
|
#include "Animator.h"
|
||||||
// ------------- OBJECT DEFINITIONS -----------------
|
#include "TestFrames.h"
|
||||||
// --------------------------------------------------
|
#include "Animation.h"
|
||||||
BluetoothSerial SerialBT;
|
|
||||||
BluetoothSerialMessage serialMessageBT(&SerialBT);
|
|
||||||
SerialMessage serialMessage(&Serial);
|
|
||||||
BoardLayout board(BOARD_WIDTH, BOARD_LENGTH, BOARD_HEIGHT, stacks);
|
|
||||||
|
|
||||||
// Temporary thing until we can get bluetooth color management working on the quest
|
|
||||||
ColorManager colorManager(&board);
|
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// ----------------- VARIABLES ----------------------
|
// ----------------- VARIABLES ----------------------
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
|
TaskHandle_t updateCommunicaitonTask;
|
||||||
|
TaskHandle_t updateBoardTask;
|
||||||
|
|
||||||
|
// WARNING! This array size should always be equal to the number of entries in it!!
|
||||||
|
std::array<std::vector<AnimationFrame>*, 1> animations = {
|
||||||
|
&RisingCubes::rising,
|
||||||
|
// &RotatingCubes::rotating,
|
||||||
|
};
|
||||||
|
|
||||||
|
// BluetoothSerial SerialBT;
|
||||||
|
// BluetoothSerialMessage serialMessageBT(&SerialBT);
|
||||||
|
SerialMessage<SERIAL_CHAR_LENGTH, SERIAL_ARG_LENGTH> serialMessage(&Serial);
|
||||||
|
|
||||||
|
Adafruit_NeoPixel pixelController{BOARD_HEIGHT*2, STACK1_LED_PIN, NEO_GRB + NEO_KHZ800};
|
||||||
|
|
||||||
|
Animator<BOARD_DIMENSIONS> animator{};
|
||||||
|
BoardDriver<BOARD_WIDTH*BOARD_LENGTH> boardDriver{stacks, pixelController};
|
||||||
|
BoardManager<BOARD_DIMENSIONS> boardManager{boardDriver, animator};
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// ----------------- FUNCTIONS ----------------------
|
// ----------------- FUNCTIONS ----------------------
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
|
/**
|
||||||
|
* @brief Send programming commands to the serial to bluetooth adapter so
|
||||||
|
* it is set up as expected for the VR headset
|
||||||
|
* @post the serial baud rate will be set to 9600
|
||||||
|
*/
|
||||||
|
void SetupBluetoothModule(){
|
||||||
|
Serial.begin(38400);
|
||||||
|
Serial.print("AT+UART=9600,0,0\r\n"); // set baud rate to 9600
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
Serial.print("AT+NAME=blockPartyBT-v01\r\n"); // set name to blockPartyBT-v0.1
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
Serial.print("AT+PSWD=1234\r\n"); // set password to 1234
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
Serial.print("AT+ROLE=0\r\n"); // set to slave
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
// exit at mode and go into pairing mode
|
||||||
|
Serial.print("AT+INIT\r\n");
|
||||||
|
Serial.begin(9600);
|
||||||
|
delay(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void printBoardState(){
|
void printBoardState(){
|
||||||
// create a buffer to hold the board state
|
GlobalPrint::Print("!0,");
|
||||||
uint16_t boardState[BOARD_WIDTH * BOARD_LENGTH];
|
String boardString;
|
||||||
// read in the board state
|
boardManager.Board2StackString(boardString);
|
||||||
board.GetBoardState(boardState);
|
GlobalPrint::Print(boardString);
|
||||||
|
GlobalPrint::Println(";");
|
||||||
Serial.print("!0,");
|
|
||||||
SerialBT.print("!0,");
|
|
||||||
|
|
||||||
for(int i = 0; i < (BOARD_WIDTH * BOARD_LENGTH); i++){
|
|
||||||
Serial.print(boardState[i]);
|
|
||||||
SerialBT.print(boardState[i]);
|
|
||||||
if(i == (BOARD_WIDTH * BOARD_LENGTH) - 1){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Serial.print(",");
|
|
||||||
SerialBT.print(",");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.println(";");
|
void SetStackColor(uint32_t * args, int argsLength){
|
||||||
SerialBT.println(";");
|
uint32_t stackNum = args[1];
|
||||||
|
uint32_t X_COORD{stackNum};
|
||||||
|
while(X_COORD > BOARD_DIMENSIONS.x - 1){
|
||||||
|
X_COORD -= BOARD_DIMENSIONS.x;
|
||||||
}
|
}
|
||||||
|
uint32_t Y_COORD{(stackNum - X_COORD) / BOARD_DIMENSIONS.y};
|
||||||
|
|
||||||
void setStackColor(int * args, int argsLength){
|
uint32_t numColors = (argsLength - 2) / 3;
|
||||||
int stackNum = args[1];
|
V3D<uint32_t> colors[numColors];
|
||||||
int numColors = (argsLength - 2) / 3;
|
|
||||||
Color colors[numColors];
|
|
||||||
|
|
||||||
for(int i = 0; i < numColors; i++){
|
for(int i = 0; i < numColors; i++){
|
||||||
int red = args[2 + (i * 3)];
|
uint32_t red = args[2 + (i * 3)];
|
||||||
int green = args[3 + (i * 3)];
|
uint32_t green = args[3 + (i * 3)];
|
||||||
int blue = args[4 + (i * 3)];
|
uint32_t blue = args[4 + (i * 3)];
|
||||||
colors[i] = Color(red, green, blue);
|
colors[i] = V3D<uint32_t>{red, green, blue};
|
||||||
|
}
|
||||||
|
boardManager.SetColumnColors(V3D<uint32_t>{X_COORD, Y_COORD, BOARD_TYPES::PLANE_NORMAL::Z}, colors, numColors);
|
||||||
}
|
}
|
||||||
|
|
||||||
board.SetStackColors(stackNum, colors);
|
void parseData(Message<SERIAL_CHAR_LENGTH, SERIAL_ARG_LENGTH> &message){
|
||||||
|
int32_t * args{message.GetArgs()};
|
||||||
|
uint32_t argsLength{message.GetPopulatedArgs()};
|
||||||
}
|
uint32_t command = args[0];
|
||||||
|
|
||||||
void parseData(int * args, int argsLength){
|
|
||||||
int command = args[0];
|
|
||||||
switch(command){
|
switch(command){
|
||||||
case Commands::BoardState:
|
case Commands::BoardState:{
|
||||||
printBoardState();
|
printBoardState();
|
||||||
break;
|
break;
|
||||||
case Commands::PING:
|
}
|
||||||
Serial.print("!");
|
case Commands::PING:{
|
||||||
SerialBT.print("!");
|
GlobalPrint::Println("!" + String(Commands::PING) + ";");
|
||||||
Serial.print(Commands::PING);
|
boardManager.PrintColorState();
|
||||||
SerialBT.print(Commands::PING);
|
|
||||||
Serial.println(";");
|
|
||||||
SerialBT.println(";");
|
|
||||||
break;
|
break;
|
||||||
case Commands::SetStackColors:
|
}
|
||||||
Serial.println("!2;");
|
case Commands::SetStackColors:{
|
||||||
SerialBT.println("!2;");
|
GlobalPrint::Println("!2;");
|
||||||
colorManager.Enable(false);
|
animator.isEnabled = false;
|
||||||
setStackColor(args, argsLength);
|
V3D<uint32_t> black{};
|
||||||
|
boardManager.FillColor(black);
|
||||||
|
SetStackColor(reinterpret_cast<uint32_t *>(args), argsLength);
|
||||||
break;
|
break;
|
||||||
case Commands::GoToIdle:
|
}
|
||||||
Serial.println("!3;");
|
case Commands::GoToIdle:{
|
||||||
SerialBT.println("!3;");
|
GlobalPrint::Println("!3;");
|
||||||
colorManager.Enable(true);
|
animator.isEnabled = true;
|
||||||
break;
|
break;
|
||||||
default:
|
}
|
||||||
Serial.println("INVALID COMMAND");
|
default:{
|
||||||
SerialBT.println("INVALID COMMAND");
|
GlobalPrint::Println("INVALID COMMAND");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// now that we have run the command we can clear the data for the next command.
|
||||||
|
serialMessage.ClearNewData();
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------------------------------
|
||||||
|
// ----------------- FREERTOS TASKS -----------------
|
||||||
|
// --------------------------------------------------
|
||||||
|
void UpdateCommunication(void * params){
|
||||||
|
Serial.println("Spawning UpdateCommunication task");
|
||||||
|
for(;;){
|
||||||
|
// DO serial processing
|
||||||
|
serialMessage.Update();
|
||||||
|
if(serialMessage.IsNewData()){
|
||||||
|
parseData(serialMessage);
|
||||||
|
}
|
||||||
|
// serialMessageBT.Update();
|
||||||
|
// if(serialMessageBT.IsNewData()){
|
||||||
|
// parseData(serialMessageBT.GetArgs(), serialMessageBT.GetArgsLength());
|
||||||
|
// serialMessageBT.ClearNewData();
|
||||||
|
// }
|
||||||
|
vTaskDelay(3);
|
||||||
|
}
|
||||||
|
Serial.println("UpdateCommunication task has ended unexpectedly!");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateBoard(void * params){
|
||||||
|
Serial.println("Spawning UpdateBoard task");
|
||||||
|
auto updateTickRate{std::chrono::milliseconds(8)};
|
||||||
|
auto boardStateTimer{std::chrono::milliseconds(0)};
|
||||||
|
auto boardStateMaxUpdatePeriod{std::chrono::milliseconds(34)}; // this is a little slower than 30fps
|
||||||
|
unsigned long accurateTimer{millis()};
|
||||||
|
auto changeAnimationTimer{std::chrono::milliseconds(0)};
|
||||||
|
uint8_t currentAnimation{0};
|
||||||
|
|
||||||
|
for(;;){
|
||||||
|
auto actualTimePassed{std::chrono::milliseconds(millis() - accurateTimer)};
|
||||||
|
accurateTimer = millis();
|
||||||
|
|
||||||
|
if(boardStateTimer >= boardStateMaxUpdatePeriod && boardManager.HasBoardChanged()){
|
||||||
|
printBoardState();
|
||||||
|
boardManager.ClearBoardChanged();
|
||||||
|
boardStateTimer = std::chrono::milliseconds(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(changeAnimationTimer >= std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::minutes(1))){
|
||||||
|
changeAnimationTimer = std::chrono::milliseconds(0);
|
||||||
|
currentAnimation++;
|
||||||
|
if(currentAnimation >= animations.size()){
|
||||||
|
currentAnimation = 0;
|
||||||
|
}
|
||||||
|
animator.StartAnimation(animations[currentAnimation]);
|
||||||
|
}
|
||||||
|
|
||||||
|
animator.RunAnimation(actualTimePassed);
|
||||||
|
boardManager.Update();
|
||||||
|
|
||||||
|
boardStateTimer += actualTimePassed;
|
||||||
|
changeAnimationTimer += actualTimePassed;
|
||||||
|
vTaskDelay(updateTickRate.count());
|
||||||
|
}
|
||||||
|
Serial.println("UpdateBoard task has ended unexpectedly!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
// ----------------- SETUP AND LOOP -----------------
|
// ----------------- SETUP AND LOOP -----------------
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
void setup() {
|
|
||||||
Serial.begin(115200);
|
|
||||||
SerialBT.begin("blockPartyBT");
|
|
||||||
Color colors[] = {Color(255, 0, 0), Color(0, 0, 0), Color(0, 0, 0)};
|
|
||||||
board.SetStackColors(2, colors);
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// delay a little bit to get the serial monitor a chance to capture the next log messages.
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("Beginning Setup");
|
||||||
|
Serial.println("Configuring Bluetooth Adapter");
|
||||||
|
SetupBluetoothModule();
|
||||||
|
Serial.begin(9600);
|
||||||
|
|
||||||
|
Serial.println("Configuring communication methods");
|
||||||
|
serialMessage.Init(9600);
|
||||||
|
// SerialBT.begin("blockPartyBT");
|
||||||
|
xTaskCreate(UpdateCommunication, "UpdateCommunication", 10000, NULL, 0, &updateCommunicaitonTask);
|
||||||
|
|
||||||
|
Serial.println("Beginning Board Initializaiton");
|
||||||
|
boardManager.Init();
|
||||||
|
animator.SetLoop(true);
|
||||||
|
animator.StartAnimation(animations[0]);
|
||||||
|
xTaskCreate(UpdateBoard, "UpdateBoard", 10000, NULL, 0, &updateBoardTask);
|
||||||
|
|
||||||
|
Serial.println("Setup Complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
if(board.BoardStateHasChanged()){
|
// delete the loop task because we don't use it
|
||||||
printBoardState();
|
vTaskDelete(NULL);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// DO serial processing
|
|
||||||
serialMessage.Update();
|
|
||||||
if(serialMessage.IsNewData()){
|
|
||||||
parseData(serialMessage.GetArgs(), serialMessage.GetArgsLength());
|
|
||||||
serialMessage.ClearNewData();
|
|
||||||
}
|
|
||||||
serialMessageBT.Update();
|
|
||||||
if(serialMessageBT.IsNewData()){
|
|
||||||
parseData(serialMessageBT.GetArgs(), serialMessageBT.GetArgsLength());
|
|
||||||
serialMessageBT.ClearNewData();
|
|
||||||
}
|
|
||||||
colorManager.Update();
|
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user