Compare commits
5 Commits
ea3b0f29ea
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8547c9ff3 | ||
|
|
75672d4ec4 | ||
|
|
3551b073d7 | ||
|
|
1047fa70a0 | ||
|
|
c7adbcd1c7 |
154
Belegung Schütze.txt
Normal file
154
Belegung Schütze.txt
Normal file
@@ -0,0 +1,154 @@
|
||||
# Belegung Schütze
|
||||
|
||||
# Ids
|
||||
|
||||
* SW_FLUR = 0XD238
|
||||
* SW_ANBAU = 0x87A9
|
||||
* SW_WOHNZIMMER = 0x87CA
|
||||
|
||||
* UP_WOHNZIMMER_TUER = 0x051F
|
||||
* UP_WOHNZIMMER_TERASSE = 0x05df
|
||||
* UP_FLUR_EINGANG = 0x0769
|
||||
* UP_BUERO = 0x1177
|
||||
* UP_FLUR_BUERO = 0x05A1
|
||||
* UP_FLUR_KUECHE = 0x01EF
|
||||
* UP_KINDERZIMMER = 0x0196
|
||||
* UP_FLUR_ELTERN = 0x0632
|
||||
* UP_ELTERN = 0x08AE
|
||||
* UP_KUECHE_FLUR = 0x07F5
|
||||
* UP_KUECHE_BAD = 0x0585
|
||||
|
||||
|
||||
## Offene Ideen
|
||||
|
||||
1. Stromzähler anzapfen und Messen
|
||||
2. Gartenbeleuchtung -> 2tes Schütz im Garten
|
||||
3. Klingel einbinden -> ebenfalls oben klingeln können
|
||||
4. Tür von oben öffnen können.
|
||||
4. Audio-Streaming
|
||||
5. Garage -> Auto da, Garagentür
|
||||
6. Küchenlicht an Arbeitsplatte
|
||||
7. Küchenlicht von Küchentisch?
|
||||
8. Automatischer Öffner Türe oben
|
||||
9. Temperatursensoren einbinden in jeden Raum
|
||||
|
||||
## Wohnzimmer
|
||||
|
||||
1. Garten
|
||||
2. Flur1 am Büro
|
||||
3. Büro
|
||||
4. Nachtlicht Vögel
|
||||
5. Wohnzimmer1
|
||||
6. Wohnzimmer2
|
||||
7. Rollo Runter Wohnzimmer
|
||||
8. Rollo Hoch Wohnzimmer
|
||||
|
||||
## Flur
|
||||
|
||||
1. ---
|
||||
2. Licht Schlafzimmer
|
||||
3. Licht Linus
|
||||
4. Rollo hoch Linus
|
||||
5. Rollo runter Linus
|
||||
6. Flur2 am Eingang
|
||||
|
||||
## Anbau
|
||||
|
||||
1. Kabüffchen
|
||||
2. Unterlicht Küche
|
||||
3. Licht Küche
|
||||
4. Badezimmer
|
||||
|
||||
# Unterputz IDs
|
||||
|
||||
## Linus Zimmer
|
||||
|
||||
Id: 0x0196
|
||||
Belegung:
|
||||
|---+---| |-------|
|
||||
| 3 | 4 |--| 8 |
|
||||
|---+---| |-------|
|
||||
| 4 | 1 |
|
||||
|---+---|
|
||||
| 7 |
|
||||
|-------|
|
||||
|
||||
# Wohnzimmer Türe
|
||||
|
||||
Id: 0x051F
|
||||
|-------|
|
||||
| - |
|
||||
+---+---|
|
||||
| 3 | 2 |
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
| O O |
|
||||
+-------+
|
||||
|
||||
## Küche Badezimmer
|
||||
|
||||
Id: 0x0585
|
||||
Belegung:
|
||||
|---+---| |-------|
|
||||
| 1 |--| 3 |
|
||||
|---+---| |-------|
|
||||
| 2 |
|
||||
|---+---|
|
||||
| O O |
|
||||
|-------|+
|
||||
|
||||
|
||||
## Küche Flur
|
||||
|
||||
Id: 0x07F5
|
||||
Belegung:
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
| 2 |
|
||||
|---+---|
|
||||
| |
|
||||
|-------|
|
||||
|
||||
|
||||
## Flur eingang
|
||||
|
||||
Id: 0x0769
|
||||
Belegung:
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
| 2 |
|
||||
|---+---|
|
||||
| |
|
||||
|-------|
|
||||
|
||||
|
||||
## Büro
|
||||
|
||||
Id: 0x1177
|
||||
Belegung:
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
|
||||
|
||||
## Flur-Büro
|
||||
|
||||
Id: 0x05A1
|
||||
Belegung:
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
|
||||
|
||||
## Flur-Küche
|
||||
|
||||
Id: 0x01EF
|
||||
Belegung:
|
||||
|---+---|
|
||||
| 1 |
|
||||
|---+---|
|
||||
|
||||
|
||||
Binary file not shown.
2
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_pcb
Normal file
2
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_pcb
Normal file
@@ -0,0 +1,2 @@
|
||||
(kicad_pcb (version 20211014) (generator pcbnew)
|
||||
)
|
||||
130
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_prl
Normal file
130
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_prl
Normal file
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"grid",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"footprint_references",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes"
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "MeyCan2025l.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": 0
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
424
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_pro
Normal file
424
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_pro
Normal file
@@ -0,0 +1,424 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"board_outline_line_width": 0.1,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"other_line_width": 0.15,
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"rules": {
|
||||
"min_copper_edge_clearance": 0.0,
|
||||
"solder_mask_clearance": 0.0,
|
||||
"solder_mask_min_width": 0.0
|
||||
},
|
||||
"track_widths": [],
|
||||
"via_dimensions": []
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "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",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "MeyCan2025l.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.25,
|
||||
"via_diameter": 0.8,
|
||||
"via_drill": 0.4
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"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": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from BOM",
|
||||
"name": "${EXCLUDE_FROM_BOM}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from Board",
|
||||
"name": "${EXCLUDE_FROM_BOARD}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": true,
|
||||
"name": "Default Editing",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Referenz"
|
||||
},
|
||||
"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": "",
|
||||
"space_save_all_events": true,
|
||||
"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": [],
|
||||
"text_variables": {}
|
||||
}
|
||||
5
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_sch
Normal file
5
MeyCan2025/MeyCan2025l/MeyCan2025l.kicad_sch
Normal file
@@ -0,0 +1,5 @@
|
||||
(kicad_sch (version 20211123) (generator eeschema)
|
||||
(paper "A4")
|
||||
(lib_symbols)
|
||||
(symbol_instances)
|
||||
)
|
||||
2536
MeyCan2025/Meycad2025.kicad_sch
Normal file
2536
MeyCan2025/Meycad2025.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Meycad-backups/Meycad-2024-09-05_065952.zip
Normal file
BIN
Meycad-backups/Meycad-2024-09-05_065952.zip
Normal file
Binary file not shown.
BIN
Meycad-backups/Meycad-2024-11-10_132148.zip
Normal file
BIN
Meycad-backups/Meycad-2024-11-10_132148.zip
Normal file
Binary file not shown.
BIN
Meycad-backups/Meycad-2025-04-14_062122.zip
Normal file
BIN
Meycad-backups/Meycad-2025-04-14_062122.zip
Normal file
Binary file not shown.
BIN
Meycad-backups/Meycad-2025-06-04_053120.zip
Normal file
BIN
Meycad-backups/Meycad-2025-06-04_053120.zip
Normal file
Binary file not shown.
@@ -17,7 +17,10 @@ Packages
|
||||
Payload:
|
||||
2 bytes | Byte -> Software-Version (1.0)
|
||||
2 bytes | Byte -> Hw Version (4.0)
|
||||
2 bytes | DeviceId -> DeviceId Explicit
|
||||
1 bytes | DeviceTypeId
|
||||
| 1: Switch
|
||||
| 2: Switch + Rule
|
||||
| 3: UP
|
||||
|
||||
0x050: Input Switch Triggered
|
||||
-> Broadcast
|
||||
@@ -46,4 +49,19 @@ Payload:
|
||||
* 2 byte: DeviceId
|
||||
* 1 byte: The State
|
||||
|
||||
0x009: Debug
|
||||
-> Debug Package
|
||||
----------------------------------
|
||||
some debug information
|
||||
|
||||
|
||||
|
||||
0xAA AudioStream #1
|
||||
0xAB AudioStream #2
|
||||
0xBA AudioStream #3
|
||||
0xBB AudioStream #4
|
||||
0xAAXX -> XX = Sequence Counter
|
||||
0xY -> Reserve - Flag
|
||||
|
||||
|<-- 4 bits -->| |<-- 24 bits -->|
|
||||
-> 3 Byte / Paket
|
||||
|
||||
BIN
Software/Switch/.MeyRule.cpp.swp
Normal file
BIN
Software/Switch/.MeyRule.cpp.swp
Normal file
Binary file not shown.
@@ -9,47 +9,43 @@ uint16_t myDeviceId;
|
||||
byte _deviceTypeId = 0;
|
||||
byte _majorHardwareVersion = 0;
|
||||
byte _minorHardwareVersion = 0;
|
||||
void (*LocalPinChangedHandler)(can_frame *frame);
|
||||
|
||||
void SetupMeyPin(PinState *state)
|
||||
{
|
||||
void SetupMeyPin(PinState *state) {
|
||||
pinMode(state->pin_id, OUTPUT);
|
||||
digitalWrite(state->pin_id, LOW);
|
||||
state->pin_state = false;
|
||||
}
|
||||
|
||||
void InitCanInterface(MCP2515 *interface, can_frame *frame) // can_frame is NULL. Reuse ForEach Method for smaller footprint
|
||||
void InitCanInterface(MCP2515 *interface, can_frame *frame) // can_frame is NULL. Reuse ForEach Method for smaller footprint
|
||||
{
|
||||
interface->reset();
|
||||
interface->setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
|
||||
interface->setBitrate(CAN_1000KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
|
||||
interface->setNormalMode();
|
||||
SendVersionPackage(interface);
|
||||
}
|
||||
|
||||
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace))
|
||||
{
|
||||
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace)) {
|
||||
CanBusses->ForEachInterface(handle);
|
||||
}
|
||||
|
||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId)
|
||||
{
|
||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
|
||||
_majorHardwareVersion = majorHardwareVersion;
|
||||
_minorHardwareVersion = minorHardwareVersion;
|
||||
_deviceTypeId = deviceTypeId;
|
||||
CalculateMyDeviceId();
|
||||
|
||||
if (MeyPin != NULL);
|
||||
if (MeyPin != NULL)
|
||||
;
|
||||
MeyPin->ForEach(SetupMeyPin);
|
||||
|
||||
if (CanBusses != NULL)
|
||||
{
|
||||
if (CanBusses != NULL) {
|
||||
CanBusses->ForEach(InitCanInterface, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void AddCanInterface(byte pinId)
|
||||
{
|
||||
MCP2515* newCanInterface = new MCP2515(pinId);
|
||||
CanInterface* canInterface = new CanInterface();
|
||||
void AddCanInterface(byte pinId) {
|
||||
MCP2515 *newCanInterface = new MCP2515(pinId);
|
||||
CanInterface *canInterface = new CanInterface();
|
||||
canInterface->interface = newCanInterface;
|
||||
|
||||
if (CanBusses == NULL)
|
||||
@@ -58,10 +54,17 @@ void AddCanInterface(byte pinId)
|
||||
CanBusses->AddCanInterface(canInterface);
|
||||
}
|
||||
|
||||
void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
||||
{
|
||||
PinState* newState = new PinState();
|
||||
newState->Init(pinId, (byte) meyPinId);
|
||||
void AddLocalPinChangedHandler(void (*localPinChangedHandler)(can_frame *frame)) {
|
||||
LocalPinChangedHandler = localPinChangedHandler;
|
||||
}
|
||||
|
||||
void SetDevicedId(byte high, byte low) {
|
||||
myDeviceId = (high << 8) | low;
|
||||
}
|
||||
|
||||
void SetMeyPin(byte meyPinId, byte pinId) {
|
||||
PinState *newState = new PinState();
|
||||
newState->Init(pinId, (byte)meyPinId);
|
||||
|
||||
if (MeyPin == NULL)
|
||||
MeyPin = newState;
|
||||
@@ -70,20 +73,17 @@ void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
||||
}
|
||||
|
||||
|
||||
bool CheckPinStatus(PinState * state)
|
||||
{
|
||||
bool CheckPinStatus(PinState *state) {
|
||||
if (!state->is_input)
|
||||
return false;
|
||||
|
||||
bool newValue = ReadPin(state);
|
||||
|
||||
|
||||
if (newValue != state->pin_state)
|
||||
{
|
||||
if (newValue != state->pin_state) {
|
||||
delay(10);
|
||||
newValue = ReadPin(state);
|
||||
if (newValue != state->pin_state)
|
||||
{
|
||||
if (newValue != state->pin_state) {
|
||||
state->pin_state = newValue;
|
||||
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
||||
}
|
||||
@@ -91,45 +91,27 @@ bool CheckPinStatus(PinState * state)
|
||||
return false;
|
||||
}
|
||||
|
||||
void CheckMeyPinsTriggered()
|
||||
{
|
||||
void CheckMeyPinsTriggered() {
|
||||
MeyPin->ForEach(CheckPinStatus);
|
||||
}
|
||||
|
||||
bool ReadPin(PinState * state)
|
||||
{
|
||||
if (state->pin_id == PIN_PD2)
|
||||
return digitalReadFast(PIN_PD2);
|
||||
else if (state->pin_id == PIN_PC7)
|
||||
return digitalReadFast(PIN_PC7);
|
||||
else if (state->pin_id == PIN_PD1)
|
||||
return digitalReadFast(PIN_PD1);
|
||||
else if (state->pin_id == PIN_PD0)
|
||||
return digitalReadFast(PIN_PD0);
|
||||
else if (state->pin_id == PIN_PD6)
|
||||
return digitalReadFast(PIN_PD6);
|
||||
else if (state->pin_id == PIN_PD5)
|
||||
return digitalReadFast(PIN_PD5);
|
||||
else if (state->pin_id == PIN_PD4)
|
||||
return digitalReadFast(PIN_PD4);
|
||||
else if (state->pin_id == PIN_PD3)
|
||||
return digitalReadFast(PIN_PD3);
|
||||
else
|
||||
return digitalRead(state->pin_id);
|
||||
bool ReadPin(PinState *state) {
|
||||
return digitalRead(state->pin_id);
|
||||
}
|
||||
|
||||
|
||||
void HandleFrame(can_frame *frame, MCP2515 *source)
|
||||
{
|
||||
void HandleFrame(can_frame *frame, MCP2515 *source) {
|
||||
CanBusses->ForEach(DoSendCanPkg, frame, source);
|
||||
HandleTriggerMeypinCanPackage(frame);
|
||||
}
|
||||
|
||||
void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
{
|
||||
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID)
|
||||
{
|
||||
uint16_t adressedDeviceId = ((uint16_t )frame->data[0] << 8) | frame->data[1] ;
|
||||
void HandleTriggerMeypinCanPackage(can_frame *frame) {
|
||||
|
||||
|
||||
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID) {
|
||||
|
||||
|
||||
uint16_t adressedDeviceId = ((uint16_t)frame->data[0] << 8) | frame->data[1];
|
||||
if (adressedDeviceId != myDeviceId) return;
|
||||
|
||||
|
||||
@@ -138,10 +120,8 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
|
||||
PinState *adressedPin = MeyPin->Find(meyPinId);
|
||||
|
||||
if (adressedPin != NULL)
|
||||
{
|
||||
if (adressedPin->is_input == true)
|
||||
{
|
||||
if (adressedPin != NULL) {
|
||||
if (adressedPin->is_input == true) {
|
||||
pinMode(adressedPin->pin_id, OUTPUT);
|
||||
adressedPin->is_input = false;
|
||||
}
|
||||
@@ -153,49 +133,28 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
digitalWrite(adressedPin->pin_id, state);
|
||||
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte CircularShift(byte b)
|
||||
{
|
||||
byte CircularShift(byte b) {
|
||||
return (b << 1) | (b >> 7 & 1);
|
||||
}
|
||||
|
||||
uint16_t GetDeviceId(uint32_t canFrameId)
|
||||
{
|
||||
uint16_t GetDeviceId(uint32_t canFrameId) {
|
||||
return canFrameId & 0xFFFF;
|
||||
}
|
||||
|
||||
uint16_t GetPackageType(uint32_t canFrameId)
|
||||
{
|
||||
uint16_t GetPackageType(uint32_t canFrameId) {
|
||||
return (canFrameId / 0x10000) & 0xFFF;
|
||||
}
|
||||
|
||||
byte GetDeviceIdLow() {
|
||||
return (SIGROW.SERNUM0 ^
|
||||
CircularShift(SIGROW.SERNUM2) << 1 ^
|
||||
CircularShift( CircularShift(SIGROW.SERNUM4)) ^
|
||||
CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
|
||||
CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
|
||||
}
|
||||
|
||||
byte GetDeviceIdHigh() {
|
||||
return (SIGROW.SERNUM1 ^
|
||||
CircularShift(SIGROW.SERNUM3) << 1 ^
|
||||
CircularShift( CircularShift(SIGROW.SERNUM5)) ^
|
||||
CircularShift( CircularShift( CircularShift(SIGROW.SERNUM7))) ^
|
||||
CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM9)))));
|
||||
}
|
||||
|
||||
uint32_t CreateCanId(uint16_t commandId)
|
||||
{
|
||||
uint32_t CreateCanId(uint16_t commandId) {
|
||||
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId | CAN_EFF_FLAG;
|
||||
}
|
||||
|
||||
void SendVersionPackage(MCP2515 *interface)
|
||||
{
|
||||
void SendVersionPackage(MCP2515 *interface) {
|
||||
can_frame toSend;
|
||||
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
|
||||
toSend.can_dlc = 5;
|
||||
@@ -209,8 +168,7 @@ void SendVersionPackage(MCP2515 *interface)
|
||||
DoSendCanPkg(interface, &toSend);
|
||||
}
|
||||
|
||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state)
|
||||
{
|
||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state) {
|
||||
can_frame toSend;
|
||||
|
||||
toSend.can_id = CreateCanId(TRIGGER_SWITCH_CAN_ID);
|
||||
@@ -223,8 +181,32 @@ void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte sta
|
||||
HandleFrame(&toSend, NULL);
|
||||
}
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state)
|
||||
{
|
||||
void BroadcastDebugPackage(uint8_t length, byte *data) {
|
||||
can_frame toSend;
|
||||
|
||||
toSend.can_id = CreateCanId(DEBUG_PKG_CAN_ID);
|
||||
toSend.can_dlc = length;
|
||||
for (int i = 0; i < length; i++) {
|
||||
toSend.data[i] = data[i];
|
||||
}
|
||||
|
||||
HandleFrame(&toSend, NULL);
|
||||
}
|
||||
void BroadcastDebugPackage(byte b0, byte b1) {
|
||||
byte data[2];
|
||||
data[0] = b0;
|
||||
data[1] = b1;
|
||||
BroadcastDebugPackage(2, data);
|
||||
}
|
||||
void BroadcastDebugPackage(byte b0, byte b1, byte b2) {
|
||||
byte data[3];
|
||||
data[0] = b0;
|
||||
data[1] = b1;
|
||||
data[2] = b2;
|
||||
BroadcastDebugPackage(3, data);
|
||||
}
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state) {
|
||||
can_frame toSend;
|
||||
toSend.can_id = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
|
||||
toSend.can_dlc = 2;
|
||||
@@ -232,24 +214,19 @@ void SendSwitchedTriggeredCanPackage(byte pinId, int state)
|
||||
toSend.data[1] = state;
|
||||
|
||||
DoSendCanPkg(&toSend);
|
||||
if (LocalPinChangedHandler) {
|
||||
LocalPinChangedHandler(&toSend);
|
||||
}
|
||||
}
|
||||
|
||||
void DoSendCanPkg(can_frame *frame)
|
||||
{
|
||||
void DoSendCanPkg(can_frame *frame) {
|
||||
if (CanBusses != NULL)
|
||||
CanBusses->ForEach(DoSendCanPkg, frame);
|
||||
}
|
||||
|
||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame)
|
||||
{
|
||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame) {
|
||||
byte cnt = 0;
|
||||
while (interface->sendMessage(frame))
|
||||
{
|
||||
while (interface->sendMessage(frame)) {
|
||||
if (++cnt > 10) return;
|
||||
}
|
||||
}
|
||||
|
||||
void CalculateMyDeviceId()
|
||||
{
|
||||
myDeviceId = (GetDeviceIdHigh() << 8) | GetDeviceIdLow();
|
||||
}
|
||||
|
||||
@@ -95,9 +95,16 @@ const byte HARDWARE_VERSION_LOW = 0;
|
||||
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
|
||||
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
||||
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
|
||||
const uint16_t DEBUG_PKG_CAN_ID = 0x0009;
|
||||
|
||||
void SetDevicedId(byte high, byte low);
|
||||
void SetMeyPin(byte meyPinId, byte pinId);
|
||||
|
||||
// we need to put the local change to the rules engine. otherwise local changes on a pin will not come to the rules state.
|
||||
void AddLocalPinChangedHandler(void (*localPinChangedHandler)(can_frame *frame));
|
||||
|
||||
|
||||
void AddCanInterface(byte pinId);
|
||||
void SetMeyPin(byte index, byte meyPinId, byte pinId);
|
||||
|
||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
|
||||
|
||||
@@ -118,6 +125,10 @@ uint32_t CreateCanId(uint16_t commandId);
|
||||
void SendVersionPackage(MCP2515 *interface);
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
||||
|
||||
|
||||
void BroadcastDebugPackage(byte b0, byte b1);
|
||||
void BroadcastDebugPackage(byte b0, byte b1, byte b2);
|
||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
||||
|
||||
void DoSendCanPkg(can_frame *frame);
|
||||
|
||||
@@ -6,109 +6,112 @@
|
||||
RemotePinInfo remotePinInfo = RemotePinInfo();
|
||||
Rule *rules = NULL;
|
||||
|
||||
void PutRule(Rule *rule)
|
||||
{
|
||||
void PutRule(Rule *rule) {
|
||||
if (rules == NULL)
|
||||
rules = rule;
|
||||
else
|
||||
rules->AddRule(rule);
|
||||
}
|
||||
|
||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->target.devId = targetDevId;
|
||||
rule->target.meyPinId = targetMeyPinId;
|
||||
rule->target.lastPinState = false;
|
||||
rule->toggle = false;
|
||||
rule->inverse = false;
|
||||
rule->lastPinState = false;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->target.devId = targetDevId;
|
||||
rule->target.meyPinId = targetMeyPinId;
|
||||
rule->target.lastPinState = false;
|
||||
rule->toggle = true;
|
||||
rule->inverse = false;
|
||||
rule->lastPinState = false;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId) {
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->target.devId = targetDevId;
|
||||
rule->target.meyPinId = targetMeyPinId;
|
||||
rule->target.lastPinState = false;
|
||||
rule->toggle = true;
|
||||
rule->inverse = true;
|
||||
rule->lastPinState = false;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule)
|
||||
{
|
||||
RemotePinInfo *currentRemotePinInfo = remotePinInfo.FindOrAdd(rule->targetDevId);
|
||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule) {
|
||||
|
||||
|
||||
RemotePinInfo *currentRemotePinInfo = remotePinInfo.FindOrAdd(rule->target.devId);
|
||||
|
||||
if (currentRemotePinInfo == NULL) return;
|
||||
|
||||
// check the new state with the last one. Needs to be done, as the UP switch might
|
||||
// send it multiple times like "01 01" "01 01" for a single tip.(antibeat)
|
||||
bool lastPinState = rule->lastPinState;
|
||||
bool lastPinState = rule->target.lastPinState;
|
||||
bool pinState = dt > 0;
|
||||
|
||||
if (rule->triggeredOnce && lastPinState == pinState) return;
|
||||
rule->lastPinState = pinState;
|
||||
|
||||
rule->target.lastPinState = pinState;
|
||||
rule->triggeredOnce = true;
|
||||
|
||||
if (rule->inverse)
|
||||
pinState = !pinState;
|
||||
|
||||
if (rule->toggle)
|
||||
pinState = (currentRemotePinInfo->getPinState(rule->targetMeyPinId) ^ true);
|
||||
pinState = (currentRemotePinInfo->getPinState(rule->target.meyPinId) ^ true);
|
||||
|
||||
BroadcastTriggerMeyPinCanPackage(rule->targetDevId, rule->targetMeyPinId, pinState);
|
||||
currentRemotePinInfo->setPinState(rule->targetMeyPinId, pinState);
|
||||
currentRemotePinInfo->setPinState(rule->target.meyPinId, pinState);
|
||||
BroadcastTriggerMeyPinCanPackage(rule->target.devId, rule->target.meyPinId, pinState);
|
||||
}
|
||||
|
||||
void HandleTriggered(can_frame *frame)
|
||||
{
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||
{
|
||||
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id) );
|
||||
void HandleTriggered(can_frame *frame) {
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
|
||||
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id));
|
||||
|
||||
if (currentPinState == NULL) {
|
||||
|
||||
if (currentPinState == NULL)
|
||||
return;
|
||||
}
|
||||
|
||||
currentPinState->setPinState(frame->data[0], frame->data[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleRules(can_frame *frame)
|
||||
void SetLocalPinState(can_frame *frame)
|
||||
{
|
||||
HandleTriggered(frame);
|
||||
|
||||
if (rules == NULL) return;
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||
{
|
||||
uint16_t deviceId = GetDeviceId(frame->can_id);
|
||||
uint8_t dt = frame->data[1];
|
||||
uint8_t state = frame->data[0];
|
||||
|
||||
rules->Traverse(deviceId, dt, state, CheckRule);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleRules(can_frame *frame) {
|
||||
|
||||
if (rules != NULL) {
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
|
||||
uint16_t deviceId = GetDeviceId(frame->can_id);
|
||||
uint8_t dt = frame->data[1];
|
||||
uint8_t state = frame->data[0];
|
||||
|
||||
rules->Traverse(deviceId, dt, state, CheckRule);
|
||||
}
|
||||
}
|
||||
HandleTriggered(frame);
|
||||
}
|
||||
|
||||
@@ -4,22 +4,24 @@
|
||||
#include <Arduino.h>
|
||||
#include <mcp2515.h>;
|
||||
|
||||
struct Rule
|
||||
{
|
||||
struct TargetPin{
|
||||
uint16_t devId;
|
||||
byte meyPinId;
|
||||
bool lastPinState = false;
|
||||
|
||||
};
|
||||
|
||||
struct Rule {
|
||||
uint16_t sourceDevId;
|
||||
byte sourceMeyPinId;
|
||||
uint16_t targetDevId;
|
||||
byte targetMeyPinId;
|
||||
TargetPin target = TargetPin();
|
||||
bool toggle;
|
||||
bool inverse;
|
||||
Rule *nextRule = NULL;
|
||||
bool lastPinState = false;
|
||||
bool triggeredOnce = false;
|
||||
|
||||
void AddRule(Rule *rule)
|
||||
{
|
||||
if (this->nextRule == NULL)
|
||||
{
|
||||
void AddRule(Rule *rule) {
|
||||
if (this->nextRule == NULL) {
|
||||
this->nextRule = rule;
|
||||
rule->nextRule = NULL;
|
||||
} else {
|
||||
@@ -27,66 +29,56 @@ struct Rule
|
||||
}
|
||||
}
|
||||
|
||||
void Traverse( uint16_t deviceId, uint8_t dt, uint8_t state, void (*handle)(uint16_t, uint8_t, uint8_t, Rule*))
|
||||
{
|
||||
void Traverse(uint16_t deviceId, uint8_t dt, uint8_t state, void (*handle)(uint16_t, uint8_t, uint8_t, Rule *)) {
|
||||
|
||||
if ( this->sourceDevId == deviceId && this->sourceMeyPinId == state)
|
||||
if (this->sourceDevId == deviceId && this->sourceMeyPinId == state)
|
||||
handle(deviceId, dt, state, this);
|
||||
|
||||
if (this->nextRule != NULL)
|
||||
this->nextRule->Traverse(deviceId, dt, state, handle);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef struct RemotePinInfo
|
||||
{
|
||||
typedef struct RemotePinInfo {
|
||||
const byte MAX_REMOTE_PIN_COUNT = 64;
|
||||
uint16_t DeviceId = 0; // the id of the device
|
||||
uint8_t pinState = 0; // bitmap of 8 MeyPin states of the device. 0000 0100, MeyPin #3 is HIGH in this example
|
||||
uint16_t DeviceId = 0; // the id of the device
|
||||
uint8_t pinState = 0; // bitmap of 8 MeyPin states of the device. 0000 0100, MeyPin #3 is HIGH in this example
|
||||
RemotePinInfo *next = NULL;
|
||||
|
||||
bool getPinState(byte meyPin)
|
||||
{
|
||||
bool getPinState(byte meyPin) {
|
||||
return (this->pinState >> (meyPin - 1)) & 1;
|
||||
}
|
||||
|
||||
void setPinState(byte meyPin, bool state)
|
||||
{
|
||||
void setPinState(byte meyPin, bool state) {
|
||||
if (state)
|
||||
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
|
||||
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
|
||||
else
|
||||
this->pinState = this->pinState & (~(1 << (meyPin - 1))); // 1110 1111 -> not
|
||||
this->pinState = this->pinState & (~(1 << (meyPin - 1))); // 1110 1111 -> not
|
||||
}
|
||||
|
||||
|
||||
int16_t Count()
|
||||
{
|
||||
int16_t Count() {
|
||||
if (this->next == NULL) return 1;
|
||||
return this->next->Count() + 1;
|
||||
}
|
||||
|
||||
RemotePinInfo* FindOrAdd(uint16_t deviceId, byte count = 0)
|
||||
{
|
||||
RemotePinInfo *FindOrAdd(uint16_t deviceId, byte count = 0) {
|
||||
if (count > MAX_REMOTE_PIN_COUNT)
|
||||
return NULL;
|
||||
|
||||
|
||||
if (this->DeviceId == 0 && this->pinState == 0)
|
||||
{
|
||||
if (this->DeviceId == 0 && this->pinState == 0) {
|
||||
this->DeviceId = deviceId;
|
||||
this->pinState = 0;
|
||||
}
|
||||
|
||||
if (this->DeviceId == deviceId)
|
||||
{
|
||||
if (this->DeviceId == deviceId) {
|
||||
//ToggleDebug();
|
||||
return this;
|
||||
}
|
||||
|
||||
if (next != NULL)
|
||||
{
|
||||
if (next != NULL) {
|
||||
return next->FindOrAdd(deviceId, count + 1);
|
||||
}
|
||||
|
||||
@@ -98,16 +90,18 @@ typedef struct RemotePinInfo
|
||||
this->next = theNext;
|
||||
return this->next;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
extern RemotePinInfo remotePinInfo;
|
||||
extern Rule *rules;
|
||||
|
||||
void SetLocalPinState(can_frame *frame);
|
||||
|
||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void HandleRules(can_frame *frame);
|
||||
void PutRule(Rule *rule);
|
||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -3,93 +3,114 @@
|
||||
#include "MeyCan.h";
|
||||
#include "MeyRule.h";
|
||||
|
||||
#define PIN8 8
|
||||
#define PIN9 9
|
||||
|
||||
const int16_t SW_FLUR = 0XD238;
|
||||
const int16_t SW_ANBAU = 0x87A9;
|
||||
const int16_t SW_WOHNZIMMER = 0x87CA;
|
||||
const int16_t SW_TERRASSE = 0x618A;
|
||||
|
||||
const int16_t UP_WOHNZIMMER_TUER = 0x051F;
|
||||
|
||||
const int16_t UP_WOHNZIMMER_TUER = 0x051F; // [X X]
|
||||
const int16_t UP_WOHNZIMMER_TERASSE = 0x05df;
|
||||
const int16_t UP_FLUR_EINGANG = 0x0769;
|
||||
const int16_t UP_FLUR_EINGANG = 0x0769; // [X]
|
||||
const int16_t UP_BUERO = 0x1177;
|
||||
const int16_t UP_FLUR_BUERO = 0x05A1;
|
||||
const int16_t UP_FLUR_BUERO = 0x05A1; // [X]
|
||||
const int16_t UP_FLUR_KUECHE = 0x01EF;
|
||||
const int16_t UP_KINDERZIMMER = 0x0196;
|
||||
const int16_t UP_KINDERZIMMER = 0x0196; // [X X]
|
||||
const int16_t UP_FLUR_ELTERN = 0x0632;
|
||||
const int16_t UP_KUECHE_FLUR = 0x07F5;
|
||||
const int16_t UP_KUECHE_BAD = 0x0585;
|
||||
const int16_t UP_ELTERN = 0x08AE;
|
||||
const int16_t UP_KUECHE_FLUR = 0x07F5; // [X]
|
||||
const int16_t UP_KUECHE_BAD = 0x0585; // [X X]
|
||||
const int16_t UP_KUECHE_ARBEITSPLATTE = 0x07A9; // [X X]
|
||||
|
||||
struct can_frame incomingCanFrame;
|
||||
|
||||
/*
|
||||
Software matching Hardware of meycan v8.1
|
||||
*/
|
||||
void setup() {
|
||||
SPI.begin();
|
||||
|
||||
|
||||
// AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 4); // Lichtschalter Wohnzimmer Licht 1
|
||||
// AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 3); // Lichtschalter Wohnzimmer Licht 2
|
||||
// AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 4); // Licht 1 von Terassenschalter
|
||||
// AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 3); // Licht 2 von Terassenschalter
|
||||
//
|
||||
// AddToggle(0x0769, 1, SW_WOHNZIMMER, 7); // Eingangstür Flur Licht 2
|
||||
// AddToggle(0x0769, 1, SW_FLUR, 1); //Eingangstür Flur Licht 1
|
||||
//
|
||||
// AddToggle(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 1); // Licht 1 Wochzimmer Eingangstür
|
||||
// AddToggle(UP_WOHNZIMMER_TUER, 4, SW_WOHNZIMMER, 2); // Licht 2 Wochzimmer Eingangstür
|
||||
//
|
||||
// AddToggle(0x1177, 1, SW_WOHNZIMMER, 6); // Licht Papa Büro
|
||||
// AddToggle(0x05A1, 1, SW_WOHNZIMMER, 7); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x05A1, 1, SW_FLUR, 1); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x01EF, 1, SW_WOHNZIMMER, 7); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x01EF, 1, SW_FLUR, 1); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x0196, 3, SW_WOHNZIMMER, 7); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x0196, 3, SW_FLUR, 1); // Flurlicht von Papas Büro
|
||||
// AddToggle(0x0632, 1, SW_FLUR, 5); // Flurlicht von Papas Büro
|
||||
//
|
||||
// AddToggle(UP_WOHNZIMMER_TUER, 2, SW_FLUR, 2); // Linus Zimmer hoch aus Wohnzimmer
|
||||
// AddToggle(UP_WOHNZIMMER_TUER, 1, SW_FLUR, 3); // Linus Zimmer runter hoch aus Wohnzimmer
|
||||
//
|
||||
// AddToggle(0x0769, 2, SW_FLUR, 4); // Linus Zimmer runter hoch aus Wohnzimmer
|
||||
//
|
||||
//
|
||||
// AddToggle(UP_KUECHE_FLUR, 1, SW_ANBAU, 2);
|
||||
// AddToggle(UP_KUECHE_FLUR, 2, SW_ANBAU, 3);
|
||||
// AddToggle(UP_KUECHE_BAD, 1, SW_ANBAU, 2);
|
||||
// AddToggle(UP_KUECHE_BAD, 3, SW_ANBAU, 1);
|
||||
// AddToggle(UP_KUECHE_BAD, 2, SW_ANBAU, 4);
|
||||
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 5);
|
||||
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 6);
|
||||
AddSimple(UP_WOHNZIMMER_TUER, 2, SW_WOHNZIMMER, 7);
|
||||
AddSimple(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 8);
|
||||
|
||||
|
||||
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
|
||||
|
||||
delay(10); // a bit delay for mcp2515 to get the clock
|
||||
AddToggle(UP_KINDERZIMMER, 3, SW_FLUR, 6);
|
||||
AddToggle(UP_KINDERZIMMER, 3, SW_WOHNZIMMER, 2);
|
||||
AddToggle(UP_KINDERZIMMER, 2, SW_FLUR, 3);
|
||||
AddSimple(UP_KINDERZIMMER, 4, SW_FLUR, 4);
|
||||
AddSimple(UP_KINDERZIMMER, 1, SW_FLUR, 5);
|
||||
|
||||
|
||||
SetMeyPin(0, 1, PIN_PC7);
|
||||
SetMeyPin(1, 2, PIN_PC6);
|
||||
SetMeyPin(2, 3, PIN_PC5);
|
||||
SetMeyPin(3, 4, PIN_PC4);
|
||||
SetMeyPin(4, 5, PIN_PC3);
|
||||
SetMeyPin(5, 6, PIN_PC2);
|
||||
SetMeyPin(6, 7, PIN_PC1);
|
||||
SetMeyPin(7, 8, PIN_PC0);
|
||||
AddToggle(UP_FLUR_EINGANG, 1, SW_FLUR, 1);
|
||||
AddToggle(UP_FLUR_EINGANG, 2, SW_FLUR, 6);
|
||||
AddToggle(UP_FLUR_EINGANG, 2, SW_WOHNZIMMER, 2);
|
||||
|
||||
AddCanInterface(PIN_PA2);
|
||||
AddCanInterface(PIN_PA3);
|
||||
AddCanInterface(PIN_PB0);
|
||||
AddCanInterface(PIN_PB1);
|
||||
AddToggle(UP_ELTERN, 1, SW_FLUR, 2);
|
||||
|
||||
AddToggle(UP_BUERO, 1, SW_WOHNZIMMER, 3);
|
||||
|
||||
AddToggle(UP_FLUR_BUERO, 1, SW_FLUR, 6);
|
||||
AddToggle(UP_FLUR_BUERO, 1, SW_WOHNZIMMER, 2);
|
||||
|
||||
AddToggle (UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 7); // Licht 1 von Terassenschalter
|
||||
AddToggle (UP_WOHNZIMMER_TERASSE, 2, SW_WOHNZIMMER, 8); // Licht
|
||||
AddToggle (UP_WOHNZIMMER_TERASSE, 3, SW_TERRASSE, 2); // Pergola
|
||||
|
||||
/// RULE FOR SWITCH WOHNZIMMER (BOTH) OF TERASSE
|
||||
// AddSimple (UP_WOHNZIMMER_TERASSE, 3, SW_WOHNZIMMER, 5); // Eingangstür Flur Licht 2
|
||||
// AddSimple (UP_WOHNZIMMER_TERASSE, 3, SW_WOHNZIMMER, 6); // Eingangstür Flur Licht 2
|
||||
|
||||
|
||||
SetupMeyCan(7, 0, 1);
|
||||
AddToggle(UP_KUECHE_ARBEITSPLATTE, 1, SW_ANBAU, 2);
|
||||
|
||||
AddToggle(UP_KUECHE_FLUR, 1, SW_ANBAU, 3);
|
||||
AddToggle(UP_KUECHE_FLUR, 2, SW_ANBAU, 2);
|
||||
AddToggle(UP_KUECHE_BAD, 1, SW_ANBAU, 3);
|
||||
AddToggle(UP_KUECHE_BAD, 2, SW_ANBAU, 1);
|
||||
AddToggle(UP_KUECHE_BAD, 3, SW_ANBAU, 4);
|
||||
|
||||
AddToggle(UP_FLUR_KUECHE, 1, SW_FLUR, 6);
|
||||
AddToggle(UP_FLUR_KUECHE, 1, SW_WOHNZIMMER, 2);
|
||||
|
||||
|
||||
SetMeyPin(1, PIN3);
|
||||
SetMeyPin(2, PIN5);
|
||||
SetMeyPin(3, PIN7);
|
||||
SetMeyPin(4, PIN9);
|
||||
SetMeyPin(5, PIN8);
|
||||
SetMeyPin(6, PIN6);
|
||||
SetMeyPin(7, PIN4);
|
||||
SetMeyPin(8, PIN2);
|
||||
|
||||
SetDevicedId(0x87, 0xCA);
|
||||
AddLocalPinChangedHandler(SetLocalPinStateAdapter);
|
||||
|
||||
AddCanInterface(PIN_A0);
|
||||
AddCanInterface(PIN_A1);
|
||||
AddCanInterface(PIN_A2);
|
||||
AddCanInterface(PIN_A3);
|
||||
|
||||
SetupMeyCan(8, 0, 2);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
void loop() {
|
||||
ForEachCanInterface(CheckCanInterface);
|
||||
}
|
||||
|
||||
void CheckCanInterface(MCP2515 *interface)
|
||||
|
||||
void SetLocalPinStateAdapter(can_frame *frame)
|
||||
{
|
||||
if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK)
|
||||
{
|
||||
SetLocalPinState(frame);
|
||||
}
|
||||
|
||||
void CheckCanInterface(MCP2515 *interface) {
|
||||
if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK) {
|
||||
HandleFrame(&incomingCanFrame, interface);
|
||||
HandleRules(&incomingCanFrame);
|
||||
}
|
||||
|
||||
7
Software/Testsender/.vscode/arduino.json
vendored
Normal file
7
Software/Testsender/.vscode/arduino.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"configuration": "pinout=48pin_standard,eeprom=keep,resetpin=reset,BOD=2v6,clock=internal_8MHz,bootloader=no_bootloader",
|
||||
"board": "MegaCoreX:megaavr:809",
|
||||
"sketch": "Switch.ino",
|
||||
"port": "COM6",
|
||||
"programmer": "jtag2updi"
|
||||
}
|
||||
540
Software/Testsender/.vscode/c_cpp_properties.json
vendored
Normal file
540
Software/Testsender/.vscode/c_cpp_properties.json
vendored
Normal file
@@ -0,0 +1,540 @@
|
||||
{
|
||||
"version": 4,
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Arduino",
|
||||
"compilerPath": "C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\bin\\avr-g++",
|
||||
"compilerArgs": [
|
||||
"-w",
|
||||
"-std=gnu++17",
|
||||
"-fpermissive",
|
||||
"-fno-exceptions",
|
||||
"-ffunction-sections",
|
||||
"-fdata-sections",
|
||||
"-fno-threadsafe-statics",
|
||||
"-Wno-error=narrowing"
|
||||
],
|
||||
"intelliSenseMode": "gcc-x64",
|
||||
"includePath": [
|
||||
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\api\\deprecated",
|
||||
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles",
|
||||
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\variants\\48pin-standard",
|
||||
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\libraries\\SPI\\src",
|
||||
"C:\\Users\\Martin\\Documents\\Arduino\\libraries\\autowp-mcp2515",
|
||||
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include",
|
||||
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\lib\\gcc\\avr\\7.3.0\\include-fixed",
|
||||
"c:\\users\\martin\\appdata\\local\\arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7\\avr\\include"
|
||||
],
|
||||
"forcedInclude": [
|
||||
"C:\\Users\\Martin\\AppData\\Local\\Arduino15\\packages\\MegaCoreX\\hardware\\megaavr\\1.1.0\\cores\\coreX-corefiles\\Arduino.h"
|
||||
],
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17",
|
||||
"defines": [
|
||||
"F_CPU=8000000L",
|
||||
"ARDUINO=10607",
|
||||
"ARDUINO_AVR_ATmega809",
|
||||
"ARDUINO_ARCH_MEGAAVR",
|
||||
"__DBL_MIN_EXP__=(-125)",
|
||||
"__HQ_FBIT__=15",
|
||||
"__cpp_attributes=200809",
|
||||
"__UINT_LEAST16_MAX__=0xffffU",
|
||||
"__ATOMIC_ACQUIRE=2",
|
||||
"__SFRACT_IBIT__=0",
|
||||
"__FLT_MIN__=1.17549435e-38F",
|
||||
"__GCC_IEC_559_COMPLEX=0",
|
||||
"__BUILTIN_AVR_SLEEP=1",
|
||||
"__BUILTIN_AVR_COUNTLSULLK=1",
|
||||
"__cpp_aggregate_nsdmi=201304",
|
||||
"__BUILTIN_AVR_COUNTLSULLR=1",
|
||||
"__UFRACT_MAX__=0XFFFFP-16UR",
|
||||
"__UINT_LEAST8_TYPE__=unsigned char",
|
||||
"__DQ_FBIT__=63",
|
||||
"__INTMAX_C(c)=c ## LL",
|
||||
"__ULFRACT_FBIT__=32",
|
||||
"__SACCUM_EPSILON__=0x1P-7HK",
|
||||
"__CHAR_BIT__=8",
|
||||
"__USQ_IBIT__=0",
|
||||
"__UINT8_MAX__=0xff",
|
||||
"__ACCUM_FBIT__=15",
|
||||
"__WINT_MAX__=0x7fff",
|
||||
"__FLT32_MIN_EXP__=(-125)",
|
||||
"__cpp_static_assert=200410",
|
||||
"__USFRACT_FBIT__=8",
|
||||
"__ORDER_LITTLE_ENDIAN__=1234",
|
||||
"__SIZE_MAX__=0xffffU",
|
||||
"__WCHAR_MAX__=0x7fff",
|
||||
"__LACCUM_IBIT__=32",
|
||||
"__DBL_DENORM_MIN__=double(1.40129846e-45L)",
|
||||
"__GCC_ATOMIC_CHAR_LOCK_FREE=1",
|
||||
"__GCC_IEC_559=0",
|
||||
"__FLT_EVAL_METHOD__=0",
|
||||
"__BUILTIN_AVR_LLKBITS=1",
|
||||
"__cpp_binary_literals=201304",
|
||||
"__LLACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-47LLK",
|
||||
"__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1",
|
||||
"__BUILTIN_AVR_HKBITS=1",
|
||||
"__BUILTIN_AVR_BITSLLK=1",
|
||||
"__FRACT_FBIT__=15",
|
||||
"__BUILTIN_AVR_BITSLLR=1",
|
||||
"__cpp_variadic_templates=200704",
|
||||
"__UINT_FAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__SIG_ATOMIC_TYPE__=char",
|
||||
"__BUILTIN_AVR_UHKBITS=1",
|
||||
"__UACCUM_FBIT__=16",
|
||||
"__DBL_MIN_10_EXP__=(-37)",
|
||||
"__FINITE_MATH_ONLY__=0",
|
||||
"__cpp_variable_templates=201304",
|
||||
"__LFRACT_IBIT__=0",
|
||||
"__GNUC_PATCHLEVEL__=0",
|
||||
"__FLT32_HAS_DENORM__=1",
|
||||
"__LFRACT_MAX__=0X7FFFFFFFP-31LR",
|
||||
"__UINT_FAST8_MAX__=0xff",
|
||||
"__has_include(STR)=__has_include__(STR)",
|
||||
"__DEC64_MAX_EXP__=385",
|
||||
"__INT8_C(c)=c",
|
||||
"__INT_LEAST8_WIDTH__=8",
|
||||
"__UINT_LEAST64_MAX__=0xffffffffffffffffULL",
|
||||
"__SA_FBIT__=15",
|
||||
"__SHRT_MAX__=0x7fff",
|
||||
"__LDBL_MAX__=3.40282347e+38L",
|
||||
"__FRACT_MAX__=0X7FFFP-15R",
|
||||
"__UFRACT_FBIT__=16",
|
||||
"__UFRACT_MIN__=0.0UR",
|
||||
"__UINT_LEAST8_MAX__=0xff",
|
||||
"__GCC_ATOMIC_BOOL_LOCK_FREE=1",
|
||||
"__UINTMAX_TYPE__=long long unsigned int",
|
||||
"__LLFRACT_EPSILON__=0x1P-63LLR",
|
||||
"__BUILTIN_AVR_DELAY_CYCLES=1",
|
||||
"__DEC32_EPSILON__=1E-6DF",
|
||||
"__FLT_EVAL_METHOD_TS_18661_3__=0",
|
||||
"__UINT32_MAX__=0xffffffffUL",
|
||||
"__GXX_EXPERIMENTAL_CXX0X__=1",
|
||||
"__ULFRACT_MAX__=0XFFFFFFFFP-32ULR",
|
||||
"__TA_IBIT__=16",
|
||||
"__LDBL_MAX_EXP__=128",
|
||||
"__WINT_MIN__=(-__WINT_MAX__ - 1)",
|
||||
"__INT_LEAST16_WIDTH__=16",
|
||||
"__ULLFRACT_MIN__=0.0ULLR",
|
||||
"__SCHAR_MAX__=0x7f",
|
||||
"__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)",
|
||||
"__INT64_C(c)=c ## LL",
|
||||
"__DBL_DIG__=6",
|
||||
"__GCC_ATOMIC_POINTER_LOCK_FREE=1",
|
||||
"__AVR_HAVE_SPH__=1",
|
||||
"__LLACCUM_MIN__=(-0X1P15LLK-0X1P15LLK)",
|
||||
"__BUILTIN_AVR_KBITS=1",
|
||||
"__BUILTIN_AVR_ABSK=1",
|
||||
"__BUILTIN_AVR_ABSR=1",
|
||||
"__SIZEOF_INT__=2",
|
||||
"__SIZEOF_POINTER__=2",
|
||||
"__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1",
|
||||
"__USACCUM_IBIT__=8",
|
||||
"__USER_LABEL_PREFIX__",
|
||||
"__STDC_HOSTED__=1",
|
||||
"__LDBL_HAS_INFINITY__=1",
|
||||
"__LFRACT_MIN__=(-0.5LR-0.5LR)",
|
||||
"__HA_IBIT__=8",
|
||||
"__FLT32_DIG__=6",
|
||||
"__TQ_IBIT__=0",
|
||||
"__FLT_EPSILON__=1.19209290e-7F",
|
||||
"__GXX_WEAK__=1",
|
||||
"__SHRT_WIDTH__=16",
|
||||
"__USFRACT_IBIT__=0",
|
||||
"__LDBL_MIN__=1.17549435e-38L",
|
||||
"__FRACT_MIN__=(-0.5R-0.5R)",
|
||||
"__AVR_SFR_OFFSET__=0x20",
|
||||
"__DEC32_MAX__=9.999999E96DF",
|
||||
"__cpp_threadsafe_static_init=200806",
|
||||
"__DA_IBIT__=32",
|
||||
"__INT32_MAX__=0x7fffffffL",
|
||||
"__UQQ_FBIT__=8",
|
||||
"__INT_WIDTH__=16",
|
||||
"__SIZEOF_LONG__=4",
|
||||
"__UACCUM_MAX__=0XFFFFFFFFP-16UK",
|
||||
"__UINT16_C(c)=c ## U",
|
||||
"__PTRDIFF_WIDTH__=16",
|
||||
"__DECIMAL_DIG__=9",
|
||||
"__LFRACT_EPSILON__=0x1P-31LR",
|
||||
"__AVR_2_BYTE_PC__=1",
|
||||
"__ULFRACT_MIN__=0.0ULR",
|
||||
"__INTMAX_WIDTH__=64",
|
||||
"__has_include_next(STR)=__has_include_next__(STR)",
|
||||
"__BUILTIN_AVR_ULLRBITS=1",
|
||||
"__LDBL_HAS_QUIET_NAN__=1",
|
||||
"__ULACCUM_IBIT__=32",
|
||||
"__UACCUM_EPSILON__=0x1P-16UK",
|
||||
"__BUILTIN_AVR_SEI=1",
|
||||
"__GNUC__=7",
|
||||
"__ULLACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-48ULLK",
|
||||
"__cpp_delegating_constructors=200604",
|
||||
"__HQ_IBIT__=0",
|
||||
"__BUILTIN_AVR_SWAP=1",
|
||||
"__FLT_HAS_DENORM__=1",
|
||||
"__SIZEOF_LONG_DOUBLE__=4",
|
||||
"__BIGGEST_ALIGNMENT__=1",
|
||||
"__STDC_UTF_16__=1",
|
||||
"__UINT24_MAX__=16777215UL",
|
||||
"__BUILTIN_AVR_NOP=1",
|
||||
"__GNUC_STDC_INLINE__=1",
|
||||
"__DQ_IBIT__=0",
|
||||
"__FLT32_HAS_INFINITY__=1",
|
||||
"__DBL_MAX__=double(3.40282347e+38L)",
|
||||
"__ULFRACT_IBIT__=0",
|
||||
"__cpp_raw_strings=200710",
|
||||
"__INT_FAST32_MAX__=0x7fffffffL",
|
||||
"__DBL_HAS_INFINITY__=1",
|
||||
"__INT64_MAX__=0x7fffffffffffffffLL",
|
||||
"__ACCUM_IBIT__=16",
|
||||
"__DEC32_MIN_EXP__=(-94)",
|
||||
"__BUILTIN_AVR_UKBITS=1",
|
||||
"__INTPTR_WIDTH__=16",
|
||||
"__BUILTIN_AVR_FMULSU=1",
|
||||
"__LACCUM_MAX__=0X7FFFFFFFFFFFFFFFP-31LK",
|
||||
"__INT_FAST16_TYPE__=int",
|
||||
"__LDBL_HAS_DENORM__=1",
|
||||
"__BUILTIN_AVR_BITSK=1",
|
||||
"__BUILTIN_AVR_BITSR=1",
|
||||
"__cplusplus=201402L",
|
||||
"__cpp_ref_qualifiers=200710",
|
||||
"__DEC128_MAX__=9.999999999999999999999999999999999E6144DL",
|
||||
"__INT_LEAST32_MAX__=0x7fffffffL",
|
||||
"__USING_SJLJ_EXCEPTIONS__=1",
|
||||
"__DEC32_MIN__=1E-95DF",
|
||||
"__ACCUM_MAX__=0X7FFFFFFFP-15K",
|
||||
"__DEPRECATED=1",
|
||||
"__cpp_rvalue_references=200610",
|
||||
"__DBL_MAX_EXP__=128",
|
||||
"__USACCUM_EPSILON__=0x1P-8UHK",
|
||||
"__WCHAR_WIDTH__=16",
|
||||
"__FLT32_MAX__=3.40282347e+38F32",
|
||||
"__DEC128_EPSILON__=1E-33DL",
|
||||
"__SFRACT_MAX__=0X7FP-7HR",
|
||||
"__FRACT_IBIT__=0",
|
||||
"__PTRDIFF_MAX__=0x7fff",
|
||||
"__UACCUM_MIN__=0.0UK",
|
||||
"__UACCUM_IBIT__=16",
|
||||
"__BUILTIN_AVR_NOPS=1",
|
||||
"__BUILTIN_AVR_WDR=1",
|
||||
"__FLT32_HAS_QUIET_NAN__=1",
|
||||
"__GNUG__=7",
|
||||
"__LONG_LONG_MAX__=0x7fffffffffffffffLL",
|
||||
"__SIZEOF_SIZE_T__=2",
|
||||
"__ULACCUM_MAX__=0XFFFFFFFFFFFFFFFFP-32ULK",
|
||||
"__cpp_rvalue_reference=200610",
|
||||
"__cpp_nsdmi=200809",
|
||||
"__SIZEOF_WINT_T__=2",
|
||||
"__LONG_LONG_WIDTH__=64",
|
||||
"__cpp_initializer_lists=200806",
|
||||
"__FLT32_MAX_EXP__=128",
|
||||
"__SA_IBIT__=16",
|
||||
"__ULLACCUM_MIN__=0.0ULLK",
|
||||
"__BUILTIN_AVR_ROUNDUHK=1",
|
||||
"__BUILTIN_AVR_ROUNDUHR=1",
|
||||
"__cpp_hex_float=201603",
|
||||
"__GXX_ABI_VERSION=1011",
|
||||
"__INT24_MAX__=8388607L",
|
||||
"__UTA_FBIT__=48",
|
||||
"__FLT_MIN_EXP__=(-125)",
|
||||
"__USFRACT_MAX__=0XFFP-8UHR",
|
||||
"__UFRACT_IBIT__=0",
|
||||
"__BUILTIN_AVR_ROUNDFX=1",
|
||||
"__BUILTIN_AVR_ROUNDULK=1",
|
||||
"__BUILTIN_AVR_ROUNDULR=1",
|
||||
"__cpp_lambdas=200907",
|
||||
"__BUILTIN_AVR_COUNTLSLLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSLLR=1",
|
||||
"__BUILTIN_AVR_ROUNDHK=1",
|
||||
"__INT_FAST64_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_ROUNDHR=1",
|
||||
"__DBL_MIN__=double(1.17549435e-38L)",
|
||||
"__BUILTIN_AVR_COUNTLSK=1",
|
||||
"__BUILTIN_AVR_ROUNDLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSR=1",
|
||||
"__BUILTIN_AVR_ROUNDLR=1",
|
||||
"__LACCUM_MIN__=(-0X1P31LK-0X1P31LK)",
|
||||
"__ULLACCUM_FBIT__=48",
|
||||
"__BUILTIN_AVR_LKBITS=1",
|
||||
"__ULLFRACT_EPSILON__=0x1P-64ULLR",
|
||||
"__DEC128_MIN__=1E-6143DL",
|
||||
"__REGISTER_PREFIX__",
|
||||
"__UINT16_MAX__=0xffffU",
|
||||
"__DBL_HAS_DENORM__=1",
|
||||
"__BUILTIN_AVR_ULKBITS=1",
|
||||
"__ACCUM_MIN__=(-0X1P15K-0X1P15K)",
|
||||
"__AVR_ARCH__=2",
|
||||
"__SQ_IBIT__=0",
|
||||
"__FLT32_MIN__=1.17549435e-38F32",
|
||||
"__UINT8_TYPE__=unsigned char",
|
||||
"__BUILTIN_AVR_ROUNDUK=1",
|
||||
"__BUILTIN_AVR_ROUNDUR=1",
|
||||
"__UHA_FBIT__=8",
|
||||
"__NO_INLINE__=1",
|
||||
"__SFRACT_MIN__=(-0.5HR-0.5HR)",
|
||||
"__UTQ_FBIT__=128",
|
||||
"__FLT_MANT_DIG__=24",
|
||||
"__LDBL_DECIMAL_DIG__=9",
|
||||
"__VERSION__=\"7.3.0\"",
|
||||
"__UINT64_C(c)=c ## ULL",
|
||||
"__ULLFRACT_FBIT__=64",
|
||||
"__cpp_unicode_characters=200704",
|
||||
"__FRACT_EPSILON__=0x1P-15R",
|
||||
"__ULACCUM_MIN__=0.0ULK",
|
||||
"__UDA_FBIT__=32",
|
||||
"__cpp_decltype_auto=201304",
|
||||
"__LLACCUM_EPSILON__=0x1P-47LLK",
|
||||
"__GCC_ATOMIC_INT_LOCK_FREE=1",
|
||||
"__FLT32_MANT_DIG__=24",
|
||||
"__BUILTIN_AVR_BITSUHK=1",
|
||||
"__BUILTIN_AVR_BITSUHR=1",
|
||||
"__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__USFRACT_MIN__=0.0UHR",
|
||||
"__BUILTIN_AVR_BITSULK=1",
|
||||
"__ULLACCUM_IBIT__=16",
|
||||
"__BUILTIN_AVR_BITSULR=1",
|
||||
"__UQQ_IBIT__=0",
|
||||
"__BUILTIN_AVR_LLRBITS=1",
|
||||
"__SCHAR_WIDTH__=8",
|
||||
"__BUILTIN_AVR_BITSULLK=1",
|
||||
"__BUILTIN_AVR_BITSULLR=1",
|
||||
"__INT32_C(c)=c ## L",
|
||||
"__DEC64_EPSILON__=1E-15DD",
|
||||
"__ORDER_PDP_ENDIAN__=3412",
|
||||
"__DEC128_MIN_EXP__=(-6142)",
|
||||
"__UHQ_FBIT__=16",
|
||||
"__LLACCUM_FBIT__=47",
|
||||
"__FLT32_MAX_10_EXP__=38",
|
||||
"__BUILTIN_AVR_ROUNDULLK=1",
|
||||
"__BUILTIN_AVR_ROUNDULLR=1",
|
||||
"__INT_FAST32_TYPE__=long int",
|
||||
"__BUILTIN_AVR_HRBITS=1",
|
||||
"__UINT_LEAST16_TYPE__=unsigned int",
|
||||
"__BUILTIN_AVR_UHRBITS=1",
|
||||
"__INT16_MAX__=0x7fff",
|
||||
"__SIZE_TYPE__=unsigned int",
|
||||
"__UINT64_MAX__=0xffffffffffffffffULL",
|
||||
"__UDQ_FBIT__=64",
|
||||
"__INT8_TYPE__=signed char",
|
||||
"__cpp_digit_separators=201309",
|
||||
"__ELF__=1",
|
||||
"__ULFRACT_EPSILON__=0x1P-32ULR",
|
||||
"__LLFRACT_FBIT__=63",
|
||||
"__FLT_RADIX__=2",
|
||||
"__INT_LEAST16_TYPE__=int",
|
||||
"__BUILTIN_AVR_ABSFX=1",
|
||||
"__LDBL_EPSILON__=1.19209290e-7L",
|
||||
"__UINTMAX_C(c)=c ## ULL",
|
||||
"__INT24_MIN__=(-__INT24_MAX__-1)",
|
||||
"__SACCUM_MAX__=0X7FFFP-7HK",
|
||||
"__BUILTIN_AVR_ABSHR=1",
|
||||
"__SIG_ATOMIC_MAX__=0x7f",
|
||||
"__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1",
|
||||
"__cpp_sized_deallocation=201309",
|
||||
"__SIZEOF_PTRDIFF_T__=2",
|
||||
"__AVR=1",
|
||||
"__BUILTIN_AVR_ABSLK=1",
|
||||
"__BUILTIN_AVR_ABSLR=1",
|
||||
"__LACCUM_EPSILON__=0x1P-31LK",
|
||||
"__DEC32_SUBNORMAL_MIN__=0.000001E-95DF",
|
||||
"__INT_FAST16_MAX__=0x7fff",
|
||||
"__UINT_FAST32_MAX__=0xffffffffUL",
|
||||
"__UINT_LEAST64_TYPE__=long long unsigned int",
|
||||
"__USACCUM_MAX__=0XFFFFP-8UHK",
|
||||
"__SFRACT_EPSILON__=0x1P-7HR",
|
||||
"__FLT_HAS_QUIET_NAN__=1",
|
||||
"__FLT_MAX_10_EXP__=38",
|
||||
"__LONG_MAX__=0x7fffffffL",
|
||||
"__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL",
|
||||
"__FLT_HAS_INFINITY__=1",
|
||||
"__cpp_unicode_literals=200710",
|
||||
"__USA_FBIT__=16",
|
||||
"__UINT_FAST16_TYPE__=unsigned int",
|
||||
"__DEC64_MAX__=9.999999999999999E384DD",
|
||||
"__INT_FAST32_WIDTH__=32",
|
||||
"__BUILTIN_AVR_RBITS=1",
|
||||
"__CHAR16_TYPE__=unsigned int",
|
||||
"__PRAGMA_REDEFINE_EXTNAME=1",
|
||||
"__SIZE_WIDTH__=16",
|
||||
"__INT_LEAST16_MAX__=0x7fff",
|
||||
"__DEC64_MANT_DIG__=16",
|
||||
"__UINT_LEAST32_MAX__=0xffffffffUL",
|
||||
"__SACCUM_FBIT__=7",
|
||||
"__FLT32_DENORM_MIN__=1.40129846e-45F32",
|
||||
"__GCC_ATOMIC_LONG_LOCK_FREE=1",
|
||||
"__SIG_ATOMIC_WIDTH__=8",
|
||||
"__INT_LEAST64_TYPE__=long long int",
|
||||
"__INT16_TYPE__=int",
|
||||
"__INT_LEAST8_TYPE__=signed char",
|
||||
"__SQ_FBIT__=31",
|
||||
"__DEC32_MAX_EXP__=97",
|
||||
"__INT_FAST8_MAX__=0x7f",
|
||||
"__INTPTR_MAX__=0x7fff",
|
||||
"__QQ_FBIT__=7",
|
||||
"__cpp_range_based_for=200907",
|
||||
"__UTA_IBIT__=16",
|
||||
"__AVR_ERRATA_SKIP__=1",
|
||||
"__FLT32_MIN_10_EXP__=(-37)",
|
||||
"__LDBL_MANT_DIG__=24",
|
||||
"__SFRACT_FBIT__=7",
|
||||
"__SACCUM_MIN__=(-0X1P7HK-0X1P7HK)",
|
||||
"__DBL_HAS_QUIET_NAN__=1",
|
||||
"__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)",
|
||||
"AVR=1",
|
||||
"__BUILTIN_AVR_FMULS=1",
|
||||
"__cpp_return_type_deduction=201304",
|
||||
"__INTPTR_TYPE__=int",
|
||||
"__UINT16_TYPE__=unsigned int",
|
||||
"__WCHAR_TYPE__=int",
|
||||
"__SIZEOF_FLOAT__=4",
|
||||
"__AVR__=1",
|
||||
"__BUILTIN_AVR_INSERT_BITS=1",
|
||||
"__USQ_FBIT__=32",
|
||||
"__UINTPTR_MAX__=0xffffU",
|
||||
"__INT_FAST64_WIDTH__=64",
|
||||
"__DEC64_MIN_EXP__=(-382)",
|
||||
"__cpp_decltype=200707",
|
||||
"__FLT32_DECIMAL_DIG__=9",
|
||||
"__INT_FAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1",
|
||||
"__FLT_DIG__=6",
|
||||
"__UINT_FAST64_TYPE__=long long unsigned int",
|
||||
"__BUILTIN_AVR_BITSHK=1",
|
||||
"__BUILTIN_AVR_BITSHR=1",
|
||||
"__INT_MAX__=0x7fff",
|
||||
"__LACCUM_FBIT__=31",
|
||||
"__USACCUM_MIN__=0.0UHK",
|
||||
"__UHA_IBIT__=8",
|
||||
"__INT64_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_BITSLK=1",
|
||||
"__BUILTIN_AVR_BITSLR=1",
|
||||
"__FLT_MAX_EXP__=128",
|
||||
"__UTQ_IBIT__=0",
|
||||
"__DBL_MANT_DIG__=24",
|
||||
"__cpp_inheriting_constructors=201511",
|
||||
"__BUILTIN_AVR_ULLKBITS=1",
|
||||
"__INT_LEAST64_MAX__=0x7fffffffffffffffLL",
|
||||
"__DEC64_MIN__=1E-383DD",
|
||||
"__WINT_TYPE__=int",
|
||||
"__UINT_LEAST32_TYPE__=long unsigned int",
|
||||
"__SIZEOF_SHORT__=2",
|
||||
"__ULLFRACT_IBIT__=0",
|
||||
"__LDBL_MIN_EXP__=(-125)",
|
||||
"__UDA_IBIT__=32",
|
||||
"__WINT_WIDTH__=16",
|
||||
"__INT_LEAST8_MAX__=0x7f",
|
||||
"__LFRACT_FBIT__=31",
|
||||
"__LDBL_MAX_10_EXP__=38",
|
||||
"__ATOMIC_RELAXED=0",
|
||||
"__DBL_EPSILON__=double(1.19209290e-7L)",
|
||||
"__BUILTIN_AVR_BITSUK=1",
|
||||
"__BUILTIN_AVR_BITSUR=1",
|
||||
"__UINT8_C(c)=c",
|
||||
"__INT_LEAST32_TYPE__=long int",
|
||||
"__BUILTIN_AVR_URBITS=1",
|
||||
"__SIZEOF_WCHAR_T__=2",
|
||||
"__LLFRACT_MAX__=0X7FFFFFFFFFFFFFFFP-63LLR",
|
||||
"__TQ_FBIT__=127",
|
||||
"__INT_FAST8_TYPE__=signed char",
|
||||
"__ULLACCUM_EPSILON__=0x1P-48ULLK",
|
||||
"__BUILTIN_AVR_ROUNDK=1",
|
||||
"__BUILTIN_AVR_ROUNDR=1",
|
||||
"__UHQ_IBIT__=0",
|
||||
"__LLACCUM_IBIT__=16",
|
||||
"__FLT32_EPSILON__=1.19209290e-7F32",
|
||||
"__DBL_DECIMAL_DIG__=9",
|
||||
"__STDC_UTF_32__=1",
|
||||
"__INT_FAST8_WIDTH__=8",
|
||||
"__DEC_EVAL_METHOD__=2",
|
||||
"__TA_FBIT__=47",
|
||||
"__UDQ_IBIT__=0",
|
||||
"__ORDER_BIG_ENDIAN__=4321",
|
||||
"__cpp_runtime_arrays=198712",
|
||||
"__WITH_AVRLIBC__=1",
|
||||
"__UINT64_TYPE__=long long unsigned int",
|
||||
"__ACCUM_EPSILON__=0x1P-15K",
|
||||
"__UINT32_C(c)=c ## UL",
|
||||
"__BUILTIN_AVR_COUNTLSUHK=1",
|
||||
"__INTMAX_MAX__=0x7fffffffffffffffLL",
|
||||
"__cpp_alias_templates=200704",
|
||||
"__BUILTIN_AVR_COUNTLSUHR=1",
|
||||
"__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__",
|
||||
"__FLT_DENORM_MIN__=1.40129846e-45F",
|
||||
"__LLFRACT_IBIT__=0",
|
||||
"__INT8_MAX__=0x7f",
|
||||
"__LONG_WIDTH__=32",
|
||||
"__UINT_FAST32_TYPE__=long unsigned int",
|
||||
"__CHAR32_TYPE__=long unsigned int",
|
||||
"__BUILTIN_AVR_COUNTLSULK=1",
|
||||
"__BUILTIN_AVR_COUNTLSULR=1",
|
||||
"__FLT_MAX__=3.40282347e+38F",
|
||||
"__cpp_constexpr=201304",
|
||||
"__USACCUM_FBIT__=8",
|
||||
"__BUILTIN_AVR_COUNTLSFX=1",
|
||||
"__INT32_TYPE__=long int",
|
||||
"__SIZEOF_DOUBLE__=4",
|
||||
"__FLT_MIN_10_EXP__=(-37)",
|
||||
"__UFRACT_EPSILON__=0x1P-16UR",
|
||||
"__INT_LEAST32_WIDTH__=32",
|
||||
"__BUILTIN_AVR_COUNTLSHK=1",
|
||||
"__BUILTIN_AVR_COUNTLSHR=1",
|
||||
"__INTMAX_TYPE__=long long int",
|
||||
"__BUILTIN_AVR_ABSLLK=1",
|
||||
"__BUILTIN_AVR_ABSLLR=1",
|
||||
"__DEC128_MAX_EXP__=6145",
|
||||
"__AVR_HAVE_16BIT_SP__=1",
|
||||
"__ATOMIC_CONSUME=1",
|
||||
"__GNUC_MINOR__=3",
|
||||
"__INT_FAST16_WIDTH__=16",
|
||||
"__UINTMAX_MAX__=0xffffffffffffffffULL",
|
||||
"__DEC32_MANT_DIG__=7",
|
||||
"__HA_FBIT__=7",
|
||||
"__BUILTIN_AVR_COUNTLSLK=1",
|
||||
"__BUILTIN_AVR_COUNTLSLR=1",
|
||||
"__BUILTIN_AVR_CLI=1",
|
||||
"__DBL_MAX_10_EXP__=38",
|
||||
"__LDBL_DENORM_MIN__=1.40129846e-45L",
|
||||
"__INT16_C(c)=c",
|
||||
"__cpp_generic_lambdas=201304",
|
||||
"__STDC__=1",
|
||||
"__PTRDIFF_TYPE__=int",
|
||||
"__LLFRACT_MIN__=(-0.5LLR-0.5LLR)",
|
||||
"__BUILTIN_AVR_LRBITS=1",
|
||||
"__ATOMIC_SEQ_CST=5",
|
||||
"__DA_FBIT__=31",
|
||||
"__UINT32_TYPE__=long unsigned int",
|
||||
"__BUILTIN_AVR_ROUNDLLK=1",
|
||||
"__UINTPTR_TYPE__=unsigned int",
|
||||
"__BUILTIN_AVR_ROUNDLLR=1",
|
||||
"__USA_IBIT__=16",
|
||||
"__BUILTIN_AVR_ULRBITS=1",
|
||||
"__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD",
|
||||
"__DEC128_MANT_DIG__=34",
|
||||
"__LDBL_MIN_10_EXP__=(-37)",
|
||||
"__BUILTIN_AVR_COUNTLSUK=1",
|
||||
"__BUILTIN_AVR_COUNTLSUR=1",
|
||||
"__SIZEOF_LONG_LONG__=8",
|
||||
"__ULACCUM_EPSILON__=0x1P-32ULK",
|
||||
"__cpp_user_defined_literals=200809",
|
||||
"__SACCUM_IBIT__=8",
|
||||
"__GCC_ATOMIC_LLONG_LOCK_FREE=1",
|
||||
"__LDBL_DIG__=6",
|
||||
"__FLT_DECIMAL_DIG__=9",
|
||||
"__UINT_FAST16_MAX__=0xffffU",
|
||||
"__GCC_ATOMIC_SHORT_LOCK_FREE=1",
|
||||
"__BUILTIN_AVR_ABSHK=1",
|
||||
"__BUILTIN_AVR_FLASH_SEGMENT=1",
|
||||
"__INT_LEAST64_WIDTH__=64",
|
||||
"__ULLFRACT_MAX__=0XFFFFFFFFFFFFFFFFP-64ULLR",
|
||||
"__UINT_FAST8_TYPE__=unsigned char",
|
||||
"__USFRACT_EPSILON__=0x1P-8UHR",
|
||||
"__ULACCUM_FBIT__=32",
|
||||
"__QQ_IBIT__=0",
|
||||
"__cpp_init_captures=201304",
|
||||
"__ATOMIC_ACQ_REL=4",
|
||||
"__ATOMIC_RELEASE=3",
|
||||
"__BUILTIN_AVR_FMUL=1",
|
||||
"USBCON"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
52
Software/Testsender/Testsender.ino
Normal file
52
Software/Testsender/Testsender.ino
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <SPI.h>;
|
||||
#include <mcp2515.h>;
|
||||
|
||||
struct can_frame frame;
|
||||
|
||||
MCP2515 mcp2515(10);
|
||||
/*
|
||||
Software matching Hardware of meycan v8.1
|
||||
*/
|
||||
void setup() {
|
||||
SPI.begin();
|
||||
Serial.begin(9600);
|
||||
|
||||
|
||||
|
||||
pinMode(PD3, OUTPUT);
|
||||
digitalWrite(PD3, HIGH);
|
||||
delay(1000);
|
||||
digitalWrite(PD3, LOW);
|
||||
delay(2000);
|
||||
|
||||
mcp2515.reset();
|
||||
mcp2515.setBitrate(CAN_1000KBPS, MCP_8MHZ);
|
||||
mcp2515.setNormalMode();
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
if (mcp2515.readMessage(&frame) == MCP2515::ERROR_OK) {
|
||||
// frame contains received message
|
||||
|
||||
Serial.print(" Id: ");
|
||||
Serial.print(frame.can_id, HEX);
|
||||
Serial.print(" [");
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
Serial.print(frame.data[i], HEX);
|
||||
Serial.print(" ");
|
||||
}
|
||||
Serial.println("]");
|
||||
|
||||
digitalWrite(PD3, HIGH);
|
||||
delay(50);
|
||||
digitalWrite(PD3, LOW);
|
||||
delay(50);
|
||||
|
||||
mcp2515.sendMessage(&frame);
|
||||
mcp2515.sendMessage(&frame);
|
||||
mcp2515.sendMessage(&frame);
|
||||
mcp2515.sendMessage(&frame);
|
||||
}
|
||||
}
|
||||
0
Software/UPSoftware/.codex
Normal file
0
Software/UPSoftware/.codex
Normal file
@@ -1,61 +1,46 @@
|
||||
#include "HardwareSerial.h"
|
||||
#include <iterator>
|
||||
#include "esp32-hal-gpio.h"
|
||||
#include "MeyCan.h";
|
||||
#include <SPI.h>;
|
||||
#include <mcp2515.h>;
|
||||
|
||||
#include "driver/twai.h"
|
||||
|
||||
PinState *MeyPin = NULL;
|
||||
CanInterface *CanBusses = NULL;
|
||||
uint16_t myDeviceId;
|
||||
uint16_t myDeviceId = 0;
|
||||
byte _deviceTypeId = 0;
|
||||
byte _majorHardwareVersion = 0;
|
||||
byte _minorHardwareVersion = 0;
|
||||
|
||||
void SetupMeyPin(PinState *state)
|
||||
{
|
||||
pinMode(state->pin_id, OUTPUT);
|
||||
digitalWrite(state->pin_id, LOW);
|
||||
state->pin_state = false;
|
||||
}
|
||||
|
||||
void InitCanInterface(MCP2515 *interface, can_frame *frame) // can_frame is NULL. Reuse ForEach Method for smaller footprint
|
||||
{
|
||||
interface->reset();
|
||||
interface->setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
|
||||
interface->setNormalMode();
|
||||
|
||||
SendVersionPackage(interface);
|
||||
}
|
||||
|
||||
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace))
|
||||
{
|
||||
CanBusses->ForEach(handle);
|
||||
}
|
||||
|
||||
void SetupMeyCan()
|
||||
{
|
||||
CalculateMyDeviceId();
|
||||
|
||||
if (MeyPin != NULL);
|
||||
MeyPin->ForEach(SetupMeyPin);
|
||||
|
||||
if (CanBusses != NULL)
|
||||
{
|
||||
CanBusses->ForEach(InitCanInterface, NULL);
|
||||
void SetupMeyPin(PinState *state) {
|
||||
if (state->is_input) {
|
||||
pinMode(state->pin_id, INPUT_PULLUP);
|
||||
state->pin_state = digitalRead(state->pin_id);
|
||||
} else {
|
||||
pinMode(state->pin_id, OUTPUT);
|
||||
digitalWrite(state->pin_id, LOW);
|
||||
state->pin_state = true;
|
||||
}
|
||||
}
|
||||
|
||||
void SetCanInterface(byte index, byte pinId)
|
||||
{
|
||||
MCP2515* newCanInterface = new MCP2515(pinId);
|
||||
CanInterface* canInterface = new CanInterface();
|
||||
|
||||
if (CanBusses == NULL)
|
||||
CanBusses = canInterface;
|
||||
else
|
||||
CanBusses->AddCanInterface(canInterface);
|
||||
|
||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
|
||||
_majorHardwareVersion = majorHardwareVersion;
|
||||
_minorHardwareVersion = minorHardwareVersion;
|
||||
_deviceTypeId = deviceTypeId;
|
||||
|
||||
if (MeyPin != NULL)
|
||||
MeyPin->ForEach(SetupMeyPin);
|
||||
}
|
||||
|
||||
void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
||||
{
|
||||
PinState* newState = new PinState();
|
||||
newState->Init(pinId, (byte) meyPinId);
|
||||
|
||||
void SetDevicedId(byte high, byte low) {
|
||||
myDeviceId = (high << 8) | low;
|
||||
}
|
||||
|
||||
void SetMeyPin(byte meyPinId, byte pinId) {
|
||||
PinState *newState = new PinState();
|
||||
newState->Init(pinId, (byte)meyPinId);
|
||||
|
||||
if (MeyPin == NULL)
|
||||
MeyPin = newState;
|
||||
@@ -64,66 +49,69 @@ void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
||||
}
|
||||
|
||||
|
||||
bool CheckPinStatus(PinState * state)
|
||||
{
|
||||
bool ReadPin(PinState *state) {
|
||||
return digitalRead(state->pin_id);
|
||||
}
|
||||
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state) {
|
||||
twai_message_t message;
|
||||
message.extd = 1;
|
||||
message.rtr = 0;
|
||||
message.ss = 0;
|
||||
message.self = 0;
|
||||
message.dlc_non_comp = 0;
|
||||
|
||||
message.identifier = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
|
||||
message.data_length_code = 2;
|
||||
message.data[0] = pinId;
|
||||
message.data[1] = state;
|
||||
|
||||
DoSendCanPkg(&message);
|
||||
}
|
||||
|
||||
void CheckPinStatus(PinState *state) {
|
||||
if (!state->is_input)
|
||||
return false;
|
||||
return;
|
||||
|
||||
bool newValue = ReadPin(state);
|
||||
|
||||
|
||||
if (newValue != state->pin_state)
|
||||
{
|
||||
if (newValue != state->pin_state) {
|
||||
delay(10);
|
||||
newValue = ReadPin(state);
|
||||
if (newValue != state->pin_state)
|
||||
{
|
||||
if (newValue != state->pin_state) {
|
||||
state->pin_state = newValue;
|
||||
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
void CheckMeyPinsTriggered()
|
||||
{
|
||||
void CheckMeyPinsTriggered() {
|
||||
MeyPin->ForEach(CheckPinStatus);
|
||||
}
|
||||
|
||||
bool ReadPin(PinState * state)
|
||||
{
|
||||
if (state->pin_id == PIN_PD2)
|
||||
return digitalReadFast(PIN_PD2);
|
||||
else if (state->pin_id == PIN_PC7)
|
||||
return digitalReadFast(PIN_PC7);
|
||||
else if (state->pin_id == PIN_PD1)
|
||||
return digitalReadFast(PIN_PD1);
|
||||
else if (state->pin_id == PIN_PD0)
|
||||
return digitalReadFast(PIN_PD0);
|
||||
else if (state->pin_id == PIN_PD6)
|
||||
return digitalReadFast(PIN_PD6);
|
||||
else if (state->pin_id == PIN_PD5)
|
||||
return digitalReadFast(PIN_PD5);
|
||||
else if (state->pin_id == PIN_PD4)
|
||||
return digitalReadFast(PIN_PD4);
|
||||
else if (state->pin_id == PIN_PD3)
|
||||
return digitalReadFast(PIN_PD3);
|
||||
else
|
||||
return digitalRead(state->pin_id);
|
||||
|
||||
uint16_t GetDeviceId(uint32_t canFrameId) {
|
||||
return canFrameId & 0xFFFF;
|
||||
}
|
||||
|
||||
|
||||
void HandleFrame(can_frame *frame, MCP2515 *source)
|
||||
{
|
||||
CanBusses->ForEach(DoSendCanPkg, frame, source);
|
||||
HandleTriggerMeypinCanPackage(frame);
|
||||
uint16_t GetPackageType(uint32_t canFrameId) {
|
||||
return (canFrameId / 0x10000) & 0xFFF;
|
||||
}
|
||||
|
||||
void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
{
|
||||
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID)
|
||||
{
|
||||
uint16_t adressedDeviceId = ((uint16_t )frame->data[0] << 8) | frame->data[1] ;
|
||||
uint32_t CreateCanId(uint16_t commandId) {
|
||||
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId;
|
||||
}
|
||||
|
||||
void HandleTriggerMeypinCanPackage(twai_message_t *frame) {
|
||||
|
||||
|
||||
if (GetPackageType(frame->identifier) == TRIGGER_SWITCH_CAN_ID) {
|
||||
|
||||
|
||||
uint16_t adressedDeviceId = ((uint16_t)frame->data[0] << 8) | frame->data[1];
|
||||
if (adressedDeviceId != myDeviceId) return;
|
||||
|
||||
|
||||
@@ -132,10 +120,8 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
|
||||
PinState *adressedPin = MeyPin->Find(meyPinId);
|
||||
|
||||
if (adressedPin != NULL)
|
||||
{
|
||||
if (adressedPin->is_input == true)
|
||||
{
|
||||
if (adressedPin != NULL) {
|
||||
if (adressedPin->is_input == true) {
|
||||
pinMode(adressedPin->pin_id, OUTPUT);
|
||||
adressedPin->is_input = false;
|
||||
}
|
||||
@@ -147,104 +133,17 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
||||
digitalWrite(adressedPin->pin_id, state);
|
||||
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte CircularShift(byte b)
|
||||
{
|
||||
return (b << 1) | (b >> 7 & 1);
|
||||
|
||||
void HandleFrame(twai_message_t *frame) {
|
||||
HandleTriggerMeypinCanPackage(frame);
|
||||
}
|
||||
|
||||
uint16_t GetDeviceId(uint32_t canFrameId)
|
||||
{
|
||||
return canFrameId & 0xFFFF;
|
||||
}
|
||||
|
||||
uint16_t GetPackageType(uint32_t canFrameId)
|
||||
{
|
||||
return (canFrameId / 0x10000) & 0xFFF;
|
||||
}
|
||||
|
||||
byte GetDeviceIdLow() {
|
||||
return (SIGROW.SERNUM0 ^
|
||||
CircularShift(SIGROW.SERNUM2) << 1 ^
|
||||
CircularShift( CircularShift(SIGROW.SERNUM4)) ^
|
||||
CircularShift( CircularShift( CircularShift(SIGROW.SERNUM6))) ^
|
||||
CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM8)))));
|
||||
}
|
||||
|
||||
byte GetDeviceIdHigh() {
|
||||
return (SIGROW.SERNUM1 ^
|
||||
CircularShift(SIGROW.SERNUM3) << 1 ^
|
||||
CircularShift( CircularShift(SIGROW.SERNUM5)) ^
|
||||
CircularShift( CircularShift( CircularShift(SIGROW.SERNUM7))) ^
|
||||
CircularShift( CircularShift( CircularShift( CircularShift(SIGROW.SERNUM9)))));
|
||||
}
|
||||
|
||||
uint32_t CreateCanId(uint16_t commandId)
|
||||
{
|
||||
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId | CAN_EFF_FLAG;
|
||||
}
|
||||
|
||||
void SendVersionPackage(MCP2515 *interface)
|
||||
{
|
||||
can_frame toSend;
|
||||
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
|
||||
toSend.can_dlc = 6;
|
||||
|
||||
toSend.data[0] = SOFTWARE_VERSION_HIGH;
|
||||
toSend.data[1] = SOFTWARE_VERSION_LOW;
|
||||
toSend.data[2] = HARDWARE_VERSION_HIGH;
|
||||
toSend.data[3] = HARDWARE_VERSION_LOW;
|
||||
toSend.data[4] = (myDeviceId >> 8) & 0xFF;
|
||||
toSend.data[5] = myDeviceId & 0xFF;
|
||||
|
||||
DoSendCanPkg(interface, &toSend);
|
||||
}
|
||||
|
||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state)
|
||||
{
|
||||
can_frame toSend;
|
||||
|
||||
toSend.can_id = CreateCanId(TRIGGER_SWITCH_CAN_ID);
|
||||
toSend.can_dlc = 4;
|
||||
toSend.data[0] = (targetCanId & 0xFF00) >> 8;
|
||||
toSend.data[1] = targetCanId & 0xFF;
|
||||
toSend.data[2] = pinId;
|
||||
toSend.data[3] = state;
|
||||
|
||||
HandleFrame(&toSend, NULL);
|
||||
}
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state)
|
||||
{
|
||||
can_frame toSend;
|
||||
toSend.can_id = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
|
||||
toSend.can_dlc = 2;
|
||||
toSend.data[0] = pinId;
|
||||
toSend.data[1] = state;
|
||||
|
||||
DoSendCanPkg(&toSend);
|
||||
}
|
||||
|
||||
void DoSendCanPkg(can_frame *frame)
|
||||
{
|
||||
if (CanBusses != NULL)
|
||||
CanBusses->ForEach(DoSendCanPkg, frame);
|
||||
}
|
||||
|
||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame)
|
||||
{
|
||||
byte cnt = 0;
|
||||
while (interface->sendMessage(frame))
|
||||
{
|
||||
if (++cnt > 10) return;
|
||||
}
|
||||
}
|
||||
|
||||
void CalculateMyDeviceId()
|
||||
{
|
||||
myDeviceId = (GetDeviceIdHigh() << 8) | GetDeviceIdLow();
|
||||
|
||||
|
||||
void DoSendCanPkg(twai_message_t *frame) {
|
||||
esp_err_t ret = twai_transmit(frame, pdMS_TO_TICKS(1000));
|
||||
}
|
||||
|
||||
@@ -1,43 +1,9 @@
|
||||
#ifndef MEYCAN_H
|
||||
#define MEYCAN_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <SPI.h>
|
||||
#include <mcp2515.h>
|
||||
|
||||
typedef struct CanInterface
|
||||
{
|
||||
MCP2515 *interface;
|
||||
CanInterface *next = NULL;
|
||||
|
||||
void ForEach(void (*handle)( MCP2515 *interface))
|
||||
{
|
||||
if (this->interface != NULL)
|
||||
handle(this->interface);
|
||||
|
||||
if (this->next != NULL)
|
||||
this->next->ForEach(handle);
|
||||
}
|
||||
|
||||
void ForEach(void (*handle)( MCP2515 *interface, can_frame *frame), can_frame *frame, MCP2515* exclude = NULL)
|
||||
{
|
||||
if (this->interface != NULL && this->interface != exclude)
|
||||
handle(this->interface, frame);
|
||||
|
||||
if (this->next != NULL)
|
||||
this->next->ForEach(handle, frame);
|
||||
}
|
||||
|
||||
void AddCanInterface(CanInterface *newCanInterface)
|
||||
{
|
||||
if (next == NULL)
|
||||
{
|
||||
this->next = newCanInterface;
|
||||
newCanInterface->next = NULL;
|
||||
} else {
|
||||
next->AddCanInterface(newCanInterface);
|
||||
}
|
||||
}
|
||||
};
|
||||
#include "driver/twai.h"
|
||||
|
||||
typedef struct PinState
|
||||
{
|
||||
@@ -87,42 +53,28 @@ typedef struct PinState
|
||||
};
|
||||
|
||||
|
||||
const byte SOFTWARE_VERSION_HIGH = 5;
|
||||
const byte SOFTWARE_VERSION_HIGH = 6;
|
||||
const byte SOFTWARE_VERSION_LOW = 0;
|
||||
const byte HARDWARE_VERSION_HIGH = 7;
|
||||
const byte HARDWARE_VERSION_LOW = 0;
|
||||
const byte HARDWARE_VERSION_HIGH = 8;
|
||||
const byte HARDWARE_VERSION_LOW = 1;
|
||||
|
||||
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
|
||||
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
||||
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
|
||||
|
||||
void SetCanInterface(byte index, byte pinId);
|
||||
void SetMeyPin(byte index, byte meyPinId, byte pinId);
|
||||
|
||||
void SetupMeyCan();
|
||||
|
||||
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace));
|
||||
bool ReadPin(PinState *state);
|
||||
bool CheckPinStatus(PinState * state);
|
||||
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
|
||||
void HandleFrame(can_frame *frame, MCP2515 *source);
|
||||
void HandleTriggerMeypinCanPackage(can_frame *frame);
|
||||
byte CircularShift(byte b);
|
||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
|
||||
uint32_t CreateCanId(uint16_t commandId);
|
||||
void SetDevicedId(byte high, byte low);
|
||||
void SetMeyPin(byte meyPinId, byte pinId);
|
||||
uint16_t GetDeviceId(uint32_t canFrameId);
|
||||
uint16_t GetPackageType(uint32_t canFrameId);
|
||||
byte GetDeviceIdLow();
|
||||
|
||||
byte GetDeviceIdHigh();
|
||||
|
||||
uint32_t CreateCanId(uint16_t commandId);
|
||||
void SendVersionPackage(MCP2515 *interface);
|
||||
|
||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
||||
|
||||
void DoSendCanPkg(can_frame *frame);
|
||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame);
|
||||
|
||||
void CalculateMyDeviceId();
|
||||
void HandleFrame(twai_message_t *frame);
|
||||
void CheckPinStatus(PinState *state);
|
||||
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
|
||||
|
||||
void DoSendCanPkg(twai_message_t *frame) ;
|
||||
#endif
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
#include "MeyRule.h"
|
||||
#include "MeyCan.h"
|
||||
#include <Arduino.h>
|
||||
#include <mcp2515.h>;
|
||||
|
||||
RemotePinInfo remotePinInfo = RemotePinInfo();
|
||||
Rule *rules = NULL;
|
||||
|
||||
void PutRule(Rule *rule)
|
||||
{
|
||||
if (rules == NULL)
|
||||
rules = rule;
|
||||
else
|
||||
rules->AddRule(rule);
|
||||
}
|
||||
|
||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->toggle = false;
|
||||
rule->inverse = false;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->toggle = true;
|
||||
rule->inverse = false;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId)
|
||||
{
|
||||
Rule *rule = new Rule();
|
||||
|
||||
rule->sourceDevId = sourceDevId;
|
||||
rule->sourceMeyPinId = sourceMeyPinId;
|
||||
rule->targetDevId = targetDevId;
|
||||
rule->targetMeyPinId = targetMeyPinId;
|
||||
rule->toggle = true;
|
||||
rule->inverse = true;
|
||||
|
||||
PutRule(rule);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule)
|
||||
{
|
||||
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(rule->targetDevId);
|
||||
|
||||
if (currentPinState == NULL) return;
|
||||
|
||||
bool pinState = state > 0;
|
||||
if (rule->inverse)
|
||||
pinState = !pinState;
|
||||
|
||||
if (rule->toggle)
|
||||
pinState = (currentPinState->getPinState(rule->targetMeyPinId) ^ true);
|
||||
|
||||
BroadcastTriggerMeyPinCanPackage(rule->targetDevId, rule->targetMeyPinId, pinState);
|
||||
currentPinState->setPinState(rule->targetMeyPinId, pinState);
|
||||
}
|
||||
|
||||
void HandleTriggered(can_frame *frame)
|
||||
{
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||
{
|
||||
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id) );
|
||||
|
||||
if (currentPinState == NULL)
|
||||
return;
|
||||
|
||||
currentPinState->setPinState(frame->data[0], frame->data[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleRules(can_frame *frame)
|
||||
{
|
||||
HandleTriggered(frame);
|
||||
|
||||
if (rules == NULL) return;
|
||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||
{
|
||||
uint16_t deviceId = GetDeviceId(frame->can_id);
|
||||
uint8_t dt = frame->data[1];
|
||||
uint8_t state = frame->data[0];
|
||||
|
||||
rules->Traverse(deviceId, dt, state, CheckRule);
|
||||
}
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
#ifndef MEYRULE_H
|
||||
#define MEYRULE_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <mcp2515.h>;
|
||||
|
||||
struct Rule
|
||||
{
|
||||
uint16_t sourceDevId;
|
||||
byte sourceMeyPinId;
|
||||
uint16_t targetDevId;
|
||||
byte targetMeyPinId;
|
||||
bool toggle;
|
||||
bool inverse;
|
||||
Rule *nextRule = NULL;
|
||||
|
||||
void AddRule(Rule *rule)
|
||||
{
|
||||
if (this->nextRule == NULL)
|
||||
{
|
||||
this->nextRule = rule;
|
||||
rule->nextRule = NULL;
|
||||
} else {
|
||||
this->nextRule->AddRule(rule);
|
||||
}
|
||||
}
|
||||
|
||||
void Traverse( uint16_t deviceId, uint8_t dt, uint8_t state, void (*handle)(uint16_t, uint8_t, uint8_t, Rule*))
|
||||
{
|
||||
|
||||
if ( this->sourceDevId == deviceId && this->sourceMeyPinId == state)
|
||||
handle(deviceId, dt, state, this);
|
||||
|
||||
if (this->nextRule != NULL)
|
||||
this->nextRule->Traverse(deviceId, dt, state, handle);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
typedef struct RemotePinInfo
|
||||
{
|
||||
const byte MAX_REMOTE_PIN_COUNT = 64;
|
||||
uint16_t DeviceId = 0; // the id of the device
|
||||
uint8_t pinState = 0; // bitmap of 8 MeyPin states of the device. 0000 0100, MeyPin #3 is HIGH in this example
|
||||
RemotePinInfo *next = NULL;
|
||||
|
||||
bool getPinState(byte meyPin)
|
||||
{
|
||||
return (this->pinState >> (meyPin - 1)) & 1;
|
||||
}
|
||||
|
||||
void setPinState(byte meyPin, bool state)
|
||||
{
|
||||
if (state)
|
||||
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
|
||||
else
|
||||
this->pinState = this->pinState & (~(1 << (meyPin - 1))); // 1110 1111 -> not
|
||||
}
|
||||
|
||||
|
||||
int16_t Count()
|
||||
{
|
||||
if (this->next == NULL) return 1;
|
||||
return this->next->Count() + 1;
|
||||
}
|
||||
|
||||
RemotePinInfo* FindOrAdd(uint16_t deviceId, byte count = 0)
|
||||
{
|
||||
if (count > MAX_REMOTE_PIN_COUNT)
|
||||
return NULL;
|
||||
|
||||
|
||||
if (this->DeviceId == 0 && this->pinState == 0)
|
||||
{
|
||||
this->DeviceId = deviceId;
|
||||
this->pinState = 0;
|
||||
}
|
||||
|
||||
if (this->DeviceId == deviceId)
|
||||
{
|
||||
//ToggleDebug();
|
||||
return this;
|
||||
}
|
||||
|
||||
if (next != NULL)
|
||||
{
|
||||
return next->FindOrAdd(deviceId, count + 1);
|
||||
}
|
||||
|
||||
RemotePinInfo *theNext = new RemotePinInfo;
|
||||
theNext->DeviceId = deviceId;
|
||||
theNext->pinState = 0;
|
||||
theNext->next = NULL;
|
||||
|
||||
this->next = theNext;
|
||||
return this->next;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
extern RemotePinInfo remotePinInfo;
|
||||
extern Rule *rules;
|
||||
|
||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||
void HandleRules(can_frame *frame);
|
||||
void PutRule(Rule *rule);
|
||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
|
||||
#endif
|
||||
@@ -1,32 +1,220 @@
|
||||
#include <SPI.h>;
|
||||
#include <mcp2515.h>;
|
||||
#include "MeyCan.h";
|
||||
#include <Arduino.h>
|
||||
#include <driver/i2s.h>
|
||||
#include "opus.h"
|
||||
#include "opus_data.h"
|
||||
#include "MeyCan.h"
|
||||
|
||||
|
||||
constexpr int RX_PIN = 2; // CAN_TRANCEIVER_RX_PIN
|
||||
constexpr int TX_PIN = 3; // CAN_TRANCEIVER_TX_PIN
|
||||
bool driver_installed = false;
|
||||
|
||||
constexpr i2s_port_t I2S_PORT = I2S_NUM_0; // I2S-Peripherie-Instanz (0 = erster Controller)
|
||||
constexpr int I2S_DIN = 9; // GPIO-Pin für serielle Datenleitug (Data-Out → DAC)
|
||||
constexpr int I2S_BCLK = 10; // GPIO-Pin für Bit-Clock (BCLK)
|
||||
constexpr int I2S_LRC = 20; // GPIO-Pin für Word-Select / Left-Right-Clock
|
||||
constexpr int SAMPLE_RATE = 48000; // Abtastrate in Hz (Opus-Standard: 48 kHz)
|
||||
constexpr int CHANNELS = 1; // Anzahl Audiokanäle (1 = Mono)
|
||||
constexpr int MAX_FRAME = 5760; // Maximale Samples pro Opus-Frame (120 ms @ 48 kHz)
|
||||
float OUTPUT_GAIN = 0.02f; // Lautstärkeskalierung vor I2S-Ausgabe (0.0–1.0)
|
||||
|
||||
static OpusDecoder *dec = nullptr;
|
||||
static int16_t pcm[MAX_FRAME];
|
||||
static int16_t stereo[MAX_FRAME * 2];
|
||||
|
||||
static void i2s_setup() {
|
||||
i2s_config_t cfg = {};
|
||||
cfg.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);
|
||||
cfg.sample_rate = SAMPLE_RATE;
|
||||
cfg.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT;
|
||||
cfg.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT;
|
||||
cfg.communication_format = I2S_COMM_FORMAT_STAND_I2S;
|
||||
cfg.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1;
|
||||
cfg.dma_buf_count = 8;
|
||||
cfg.dma_buf_len = 512;
|
||||
cfg.tx_desc_auto_clear = true;
|
||||
|
||||
i2s_pin_config_t pins = {};
|
||||
pins.bck_io_num = I2S_BCLK;
|
||||
pins.ws_io_num = I2S_LRC;
|
||||
pins.data_out_num = I2S_DIN;
|
||||
pins.data_in_num = I2S_PIN_NO_CHANGE;
|
||||
|
||||
i2s_driver_install(I2S_PORT, &cfg, 0, nullptr);
|
||||
i2s_set_pin(I2S_PORT, &pins);
|
||||
i2s_zero_dma_buffer(I2S_PORT);
|
||||
}
|
||||
|
||||
static void decode_packet(const uint8_t *pkt, size_t len) {
|
||||
int samples = opus_decode(dec, pkt, (opus_int32)len, pcm, MAX_FRAME, 0);
|
||||
if (samples <= 0) return;
|
||||
|
||||
// Mono → Stereo mit Gain
|
||||
for (int i = 0; i < samples; i++) {
|
||||
int16_t s = (int16_t)(pcm[i] * OUTPUT_GAIN);
|
||||
stereo[i * 2] = s;
|
||||
stereo[i * 2 + 1] = s;
|
||||
}
|
||||
|
||||
size_t written;
|
||||
i2s_write(I2S_PORT, stereo, samples * 2 * sizeof(int16_t), &written, portMAX_DELAY);
|
||||
CheckMeyPinsTriggered();
|
||||
}
|
||||
|
||||
void DebugBlink(int d) {
|
||||
pinMode(20, OUTPUT);
|
||||
while (true) {
|
||||
|
||||
digitalWrite(20, HIGH);
|
||||
delay(d);
|
||||
digitalWrite(20, LOW);
|
||||
delay(d);
|
||||
}
|
||||
}
|
||||
|
||||
void ConfigureAndSetupMeyCan() {
|
||||
// Initialize configuration structures using macro initializers
|
||||
twai_general_config_t g_config = TWAI_GENERAL_CONFIG_DEFAULT((gpio_num_t)TX_PIN, (gpio_num_t)RX_PIN, TWAI_MODE_NORMAL);
|
||||
twai_timing_config_t t_config = TWAI_TIMING_CONFIG_1MBITS(); //Look in the api-reference for other speed sets.
|
||||
twai_filter_config_t f_config = TWAI_FILTER_CONFIG_ACCEPT_ALL();
|
||||
|
||||
if (twai_driver_install(&g_config, &t_config, &f_config) == ESP_OK) {
|
||||
Serial.println("Driver installed");
|
||||
} else {
|
||||
DebugBlink(100);
|
||||
return;
|
||||
}
|
||||
|
||||
esp_err_t e = twai_start();
|
||||
// Start TWAI driver
|
||||
if (e == ESP_OK) {
|
||||
driver_installed = true;
|
||||
} else {
|
||||
DebugBlink(500);
|
||||
return;
|
||||
}
|
||||
|
||||
SetDevicedId(0x09, 0x09);
|
||||
|
||||
SetMeyPin(1, 5);
|
||||
SetMeyPin(2, 6);
|
||||
SetMeyPin(3, 7);
|
||||
SetMeyPin(4, 8);
|
||||
|
||||
SetupMeyCan(8, 1, 3);
|
||||
|
||||
}
|
||||
|
||||
// Ogg-Container-Format:
|
||||
// Der Stream besteht aus aufeinanderfolgenden "Pages" (Seiten).
|
||||
// Jede Page beginnt mit dem 4-Byte-Capture-Pattern "OggS".
|
||||
// Der Page-Header ist immer mindestens 27 Bytes lang:
|
||||
// Byte 0– 3: "OggS" (Capture Pattern)
|
||||
// Byte 4 : Stream-Struktur-Version (immer 0)
|
||||
// Byte 5 : Header-Type-Flag (0=normal, 1=continued, 2=first, 4=last)
|
||||
// Byte 6–13 : Granule Position (Zeitstempel, 8 Bytes)
|
||||
// Byte 14–17 : Stream Serial Number
|
||||
// Byte 18–21 : Page Sequence Number
|
||||
// Byte 22–25 : CRC Checksum
|
||||
// Byte 26 : Anzahl der Segmente (num_segs)
|
||||
// Danach folgt die Segment-Tabelle (num_segs Bytes),
|
||||
// und anschließend die eigentlichen Nutzdaten.
|
||||
//
|
||||
// Ogg-Lacing-Regel für Paketgrenzen:
|
||||
// Jeder Eintrag in der Segment-Tabelle gibt die Größe eines Segments an (0–255).
|
||||
// Ist ein Segment genau 255 Bytes → das Paket geht weiter (nächstes Segment gehört dazu).
|
||||
// Ist ein Segment < 255 Bytes → das Paket endet hier.
|
||||
// So können Pakete größer als 255 Bytes über mehrere Segmente verteilt sein.
|
||||
//
|
||||
// Bei Opus in Ogg sind die ersten zwei Pages immer Metadaten:
|
||||
// Page 0: OpusHead (Samplerate, Kanalanzahl, Preskip …)
|
||||
// Page 1: OpusTags (Künstler, Titel, Encoder …)
|
||||
// Ab Page 2 folgen die eigentlichen Audio-Pakete (je ~20 ms Opus-Frame).
|
||||
static void play_ogg_opus(const uint8_t *buf, size_t buf_len) {
|
||||
size_t pos = 0; // aktuelle Leseposition im Buffer
|
||||
int page_n = 0; // Page-Zähler (0 und 1 sind Header-Pages)
|
||||
|
||||
while (pos + 27 <= buf_len) {
|
||||
|
||||
// --- 1. Capture Pattern "OggS" suchen ---
|
||||
// Falls pos nicht direkt auf eine Page zeigt, byte-weise vorwärts suchen.
|
||||
if (!(buf[pos] == 'O' && buf[pos + 1] == 'g' && buf[pos + 2] == 'g' && buf[pos + 3] == 'S')) {
|
||||
pos++;
|
||||
continue;
|
||||
}
|
||||
|
||||
// --- 2. Page-Header lesen ---
|
||||
uint8_t num_segs = buf[pos + 26]; // Anzahl Segmente aus Byte 26
|
||||
size_t hdr_end = pos + 27 + num_segs; // Ende des Headers (= Beginn der Nutzdaten)
|
||||
if (hdr_end > buf_len) break;
|
||||
|
||||
// Gesamtgröße der Nutzdaten = Summe aller Segmentlängen
|
||||
size_t data_size = 0;
|
||||
for (int s = 0; s < num_segs; s++) data_size += buf[pos + 27 + s];
|
||||
|
||||
// --- 3. Audio-Pages verarbeiten (Page 0+1 sind Metadaten → überspringen) ---
|
||||
if (page_n >= 2) {
|
||||
size_t pkt_start = hdr_end; // Startposition des aktuellen Pakets
|
||||
size_t pkt_size = 0; // akkumulierte Paketgröße über Segmente
|
||||
|
||||
for (int s = 0; s < num_segs; s++) {
|
||||
uint8_t seg = buf[pos + 27 + s]; // Größe dieses Segments
|
||||
pkt_size += seg;
|
||||
|
||||
if (seg < 255) {
|
||||
// Paketende erreicht → vollständiges Opus-Paket dekodieren und ausgeben
|
||||
decode_packet(buf + pkt_start, pkt_size);
|
||||
pkt_start += pkt_size; // nächstes Paket beginnt direkt dahinter
|
||||
pkt_size = 0;
|
||||
}
|
||||
// seg == 255 → Paket geht im nächsten Segment weiter (Lacing)
|
||||
}
|
||||
}
|
||||
|
||||
// --- 4. Zur nächsten Page springen ---
|
||||
pos = hdr_end + data_size;
|
||||
page_n++;
|
||||
}
|
||||
}
|
||||
|
||||
int changeVolume = 0;
|
||||
static void canTaskFunc(void *) {
|
||||
twai_message_t frame;
|
||||
for (;;) {
|
||||
// blockiert ohne CPU-Last; der interne TWAI-Interrupt weckt den Task sobald ein Frame ankommt
|
||||
if (twai_receive(&frame, portMAX_DELAY) == ESP_OK) {
|
||||
HandleFrame(&frame);
|
||||
|
||||
if (changeVolume > 20)
|
||||
changeVolume = 0;
|
||||
|
||||
OUTPUT_GAIN = 0.1f + changeVolume*0.1f;
|
||||
changeVolume++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setup() {
|
||||
return;
|
||||
SPI.begin();
|
||||
Serial.begin(115200);
|
||||
i2s_setup();
|
||||
|
||||
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
|
||||
delay(10); // a bit delay for mcp2515 to get the clock
|
||||
// Explicit GND for LED and Input
|
||||
pinMode(21, OUTPUT);
|
||||
digitalWrite(21, LOW);
|
||||
|
||||
SetMeyPin(0, 1, PIN_PD0);
|
||||
SetMeyPin(1, 2, PIN_PC7);
|
||||
SetMeyPin(2, 3, PIN_PD2);
|
||||
SetMeyPin(3, 4, PIN_PD1);
|
||||
SetMeyPin(4, 5, PIN_PD5);
|
||||
SetMeyPin(5, 6, PIN_PD3);
|
||||
SetMeyPin(6, 7, PIN_PD7);
|
||||
SetMeyPin(7, 8, PIN_PD6);
|
||||
int err;
|
||||
dec = opus_decoder_create(SAMPLE_RATE, CHANNELS, &err);
|
||||
if (err != OPUS_OK) {
|
||||
Serial.printf("opus_decoder_create failed: %d\n", err);
|
||||
return;
|
||||
}
|
||||
Serial.println("Opus playback started");
|
||||
ConfigureAndSetupMeyCan();
|
||||
|
||||
delay(20);
|
||||
|
||||
SetCanInterface(0, PIN_PD4);
|
||||
SetupMeyCan();
|
||||
xTaskCreate(canTaskFunc, "can", 4096, nullptr, 5, nullptr);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
CheckMeyPinsTriggered();
|
||||
void loop() {
|
||||
play_ogg_opus(music_opus, music_opus_len);
|
||||
opus_decoder_ctl(dec, OPUS_RESET_STATE);
|
||||
}
|
||||
|
||||
BIN
Software/UPSoftware/arduino-libhelix-main.zip
Normal file
BIN
Software/UPSoftware/arduino-libhelix-main.zip
Normal file
Binary file not shown.
@@ -0,0 +1,56 @@
|
||||
#include <Arduino.h>
|
||||
#include <AudioTools.h>
|
||||
#include <AudioTools/AudioCodecs/CodecOpus.h>
|
||||
|
||||
using namespace audio_tools;
|
||||
|
||||
constexpr int I2S_BCLK = 6;
|
||||
constexpr int I2S_LRC = 7;
|
||||
constexpr int I2S_DIN = 5;
|
||||
|
||||
// Keep the test intentionally light so it is realistic for an ESP32-C3.
|
||||
AudioInfo audioInfo(16000, 1, 16);
|
||||
SineWaveGenerator<int16_t> sineWave(10000);
|
||||
GeneratedSoundStream<int16_t> source(sineWave);
|
||||
I2SStream i2s;
|
||||
OpusAudioEncoder opusEncoder;
|
||||
OpusAudioDecoder opusDecoder;
|
||||
EncodedAudioStream decodedAudio(&i2s, &opusDecoder);
|
||||
EncodedAudioStream encodedAudio(&decodedAudio, &opusEncoder);
|
||||
StreamCopy copier(encodedAudio, source);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Warning);
|
||||
|
||||
auto i2sConfig = i2s.defaultConfig(TX_MODE);
|
||||
i2sConfig.copyFrom(audioInfo);
|
||||
i2sConfig.pin_bck = I2S_BCLK;
|
||||
i2sConfig.pin_ws = I2S_LRC;
|
||||
i2sConfig.pin_data = I2S_DIN;
|
||||
i2sConfig.buffer_count = 8;
|
||||
i2sConfig.buffer_size = 256;
|
||||
i2s.begin(i2sConfig);
|
||||
|
||||
auto sineConfig = sineWave.defaultConfig();
|
||||
sineConfig.copyFrom(audioInfo);
|
||||
sineWave.begin(sineConfig, N_B4);
|
||||
|
||||
auto &encoderConfig = opusEncoder.config();
|
||||
encoderConfig.copyFrom(audioInfo);
|
||||
encoderConfig.application = OPUS_APPLICATION_RESTRICTED_LOWDELAY;
|
||||
encoderConfig.bitrate = 24000;
|
||||
encoderConfig.complexity = 1;
|
||||
encoderConfig.frame_sizes_ms_x2 = OPUS_FRAMESIZE_20_MS;
|
||||
|
||||
decodedAudio.begin(audioInfo);
|
||||
encodedAudio.begin(audioInfo);
|
||||
|
||||
Serial.println("Opus loopback test started");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (copier.copy() == 0) {
|
||||
delay(1);
|
||||
}
|
||||
}
|
||||
26
Software/UPSoftware/examples/OpusLoopbackEsp32C3/README.md
Normal file
26
Software/UPSoftware/examples/OpusLoopbackEsp32C3/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
This sketch is a minimal ESP32-C3 Opus codec smoke test.
|
||||
|
||||
What it does:
|
||||
- Generates a sine wave locally
|
||||
- Encodes it with Opus
|
||||
- Decodes it immediately again
|
||||
- Sends the decoded PCM to I2S
|
||||
|
||||
Why this example:
|
||||
- It tests the raw Opus codec path without Ogg or CAN framing
|
||||
- It is closer to the later Pi -> CAN -> ESP32 decoder path than MP3
|
||||
- It keeps CPU load down by using 16 kHz mono and low encoder complexity
|
||||
|
||||
Expected hardware:
|
||||
- ESP32-C3
|
||||
- I2S DAC / amp on:
|
||||
- BCLK = GPIO 6
|
||||
- LRCK = GPIO 7
|
||||
- DIN = GPIO 5
|
||||
|
||||
Required Arduino libraries:
|
||||
- `arduino-audio-tools`
|
||||
- `arduino-libopus`
|
||||
|
||||
If this sketch runs and outputs a stable sine tone, the basic Opus encode/decode
|
||||
chain is working on the ESP32-C3.
|
||||
71009
Software/UPSoftware/opus_data.h
Normal file
71009
Software/UPSoftware/opus_data.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Software/UPSoftware/positive_sound-short.mp3
Normal file
BIN
Software/UPSoftware/positive_sound-short.mp3
Normal file
Binary file not shown.
53436
Software/UPSoftware/positive_sound_mp3.h
Normal file
53436
Software/UPSoftware/positive_sound_mp3.h
Normal file
File diff suppressed because it is too large
Load Diff
1
Switch V8/Meycad/+.txt
Normal file
1
Switch V8/Meycad/+.txt
Normal file
@@ -0,0 +1 @@
|
||||
Warnung: Breitenkorrektur eingeschränkt. Für die aktuellen Designregeln muss sich der Breitenkorrekturwert im Bereich [0,00004 mils; 7,87398 mils] befinden.
|
||||
820
Switch V8/Meycad/Meycad-B_Cu.gbr
Normal file
820
Switch V8/Meycad/Meycad-B_Cu.gbr
Normal file
@@ -0,0 +1,820 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Copper,L2,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%TA.AperFunction,ComponentPad*%
|
||||
%ADD10R,1.700000X1.700000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,ComponentPad*%
|
||||
%ADD11C,1.700000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD12C,0.508000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD13C,0.635000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.P,J_Extension1,1,Pin_1*%
|
||||
%TO.N,/E5*%
|
||||
X104140000Y-71120000D03*
|
||||
D11*
|
||||
%TO.P,J_Extension1,2,Pin_2*%
|
||||
%TO.N,/E6*%
|
||||
X104140000Y-73660000D03*
|
||||
%TO.P,J_Extension1,3,Pin_3*%
|
||||
%TO.N,/E7*%
|
||||
X101600000Y-71120000D03*
|
||||
%TO.P,J_Extension1,4,Pin_4*%
|
||||
%TO.N,/E8*%
|
||||
X101600000Y-73660000D03*
|
||||
%TO.P,J_Extension1,5,Pin_5*%
|
||||
%TO.N,/E4*%
|
||||
X99060000Y-71120000D03*
|
||||
%TO.P,J_Extension1,6,Pin_6*%
|
||||
%TO.N,/E3*%
|
||||
X99060000Y-73660000D03*
|
||||
%TO.P,J_Extension1,7,Pin_7*%
|
||||
%TO.N,/E2*%
|
||||
X96520000Y-71120000D03*
|
||||
%TO.P,J_Extension1,8,Pin_8*%
|
||||
%TO.N,/E1*%
|
||||
X96520000Y-73660000D03*
|
||||
%TD*%
|
||||
%TO.P,CAN_4_1,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-73660000D03*
|
||||
%TO.P,CAN_4_1,3,Pin_3*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X180340000Y-76200000D03*
|
||||
%TO.P,CAN_4_1,2,Pin_2*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X180340000Y-78740000D03*
|
||||
D10*
|
||||
%TO.P,CAN_4_1,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.P,J_Front_1_1,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-99060000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_1,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-96520000D03*
|
||||
%TO.P,J_Front_1_1,3,Pin_3*%
|
||||
X175260000Y-93980000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J6,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J6,2,Pin_2*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X187960000Y-91440000D03*
|
||||
%TO.P,J6,3,Pin_3*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X187960000Y-88900000D03*
|
||||
%TO.P,J6,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-86360000D03*
|
||||
%TD*%
|
||||
%TO.P,Arduino_R1,12,Pin_12*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_12-Pad12)*%
|
||||
X107696000Y-111760000D03*
|
||||
%TO.P,Arduino_R1,11,Pin_11*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_11-Pad11)*%
|
||||
X107696000Y-109220000D03*
|
||||
%TO.P,Arduino_R1,10,Pin_10*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_10-Pad10)*%
|
||||
X107696000Y-106680000D03*
|
||||
%TO.P,Arduino_R1,9,Pin_9*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_9-Pad9)*%
|
||||
X107696000Y-104140000D03*
|
||||
%TO.P,Arduino_R1,8,Pin_8*%
|
||||
%TO.N,/E1*%
|
||||
X107696000Y-101600000D03*
|
||||
%TO.P,Arduino_R1,7,Pin_7*%
|
||||
%TO.N,/E2*%
|
||||
X107696000Y-99060000D03*
|
||||
%TO.P,Arduino_R1,6,Pin_6*%
|
||||
%TO.N,/E3*%
|
||||
X107696000Y-96520000D03*
|
||||
%TO.P,Arduino_R1,5,Pin_5*%
|
||||
%TO.N,/E4*%
|
||||
X107696000Y-93980000D03*
|
||||
%TO.P,Arduino_R1,4,Pin_4*%
|
||||
%TO.N,/E8*%
|
||||
X107696000Y-91440000D03*
|
||||
%TO.P,Arduino_R1,3,Pin_3*%
|
||||
%TO.N,/E7*%
|
||||
X107696000Y-88900000D03*
|
||||
%TO.P,Arduino_R1,2,Pin_2*%
|
||||
%TO.N,/E6*%
|
||||
X107696000Y-86360000D03*
|
||||
D10*
|
||||
%TO.P,Arduino_R1,1,Pin_1*%
|
||||
%TO.N,/E5*%
|
||||
X107696000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.P,J2,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J2,2,Pin_2*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X180340000Y-116840000D03*
|
||||
%TO.P,J2,3,Pin_3*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X180340000Y-114300000D03*
|
||||
%TO.P,J2,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J10,1,Pin_1*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X175260000Y-91440000D03*
|
||||
D11*
|
||||
%TO.P,J10,2,Pin_2*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X175260000Y-88900000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_1_3,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-86360000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_3,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-83820000D03*
|
||||
%TO.P,J_Front_1_3,3,Pin_3*%
|
||||
X175260000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_2,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_2,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_2-Pin_2-Pad2)*%
|
||||
X167640000Y-96520000D03*
|
||||
%TO.P,J_Front_2,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J4,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J4,2,Pin_2*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X180340000Y-91440000D03*
|
||||
%TO.P,J4,3,Pin_3*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X180340000Y-88900000D03*
|
||||
%TO.P,J4,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-86360000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_CAN_2,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_2,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,3,Pin_3*%
|
||||
%TO.N,/CS2*%
|
||||
X127000000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_2-Pin_7-Pad7)*%
|
||||
X137160000Y-106680000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_3,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_3,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_3-Pin_2-Pad2)*%
|
||||
X167640000Y-109220000D03*
|
||||
%TO.P,J_Front_3,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-111760000D03*
|
||||
%TD*%
|
||||
%TO.P,Arduino_L1,12,Pin_12*%
|
||||
%TO.N,/5V*%
|
||||
X92456000Y-111760000D03*
|
||||
%TO.P,Arduino_L1,11,Pin_11*%
|
||||
%TO.N,/GND*%
|
||||
X92456000Y-109220000D03*
|
||||
%TO.P,Arduino_L1,10,Pin_10*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_10-Pad10)*%
|
||||
X92456000Y-106680000D03*
|
||||
%TO.P,Arduino_L1,9,Pin_9*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_9-Pad9)*%
|
||||
X92456000Y-104140000D03*
|
||||
%TO.P,Arduino_L1,8,Pin_8*%
|
||||
%TO.N,/CS1*%
|
||||
X92456000Y-101600000D03*
|
||||
%TO.P,Arduino_L1,7,Pin_7*%
|
||||
%TO.N,/CS2*%
|
||||
X92456000Y-99060000D03*
|
||||
%TO.P,Arduino_L1,6,Pin_6*%
|
||||
%TO.N,/CS3*%
|
||||
X92456000Y-96520000D03*
|
||||
%TO.P,Arduino_L1,5,Pin_5*%
|
||||
%TO.N,/CS4*%
|
||||
X92456000Y-93980000D03*
|
||||
%TO.P,Arduino_L1,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X92456000Y-91440000D03*
|
||||
%TO.P,Arduino_L1,3,Pin_3*%
|
||||
%TO.N,/SI*%
|
||||
X92456000Y-88900000D03*
|
||||
%TO.P,Arduino_L1,2,Pin_2*%
|
||||
%TO.N,/SCK*%
|
||||
X92456000Y-86360000D03*
|
||||
D10*
|
||||
%TO.P,Arduino_L1,1,Pin_1*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_1-Pad1)*%
|
||||
X92456000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.P,J_CAN_1,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_1,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,3,Pin_3*%
|
||||
%TO.N,/CS1*%
|
||||
X127000000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_1-Pin_7-Pad7)*%
|
||||
X137160000Y-119380000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_1_2,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-111760000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_2,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-109220000D03*
|
||||
%TO.P,J_Front_1_2,3,Pin_3*%
|
||||
X175260000Y-106680000D03*
|
||||
%TD*%
|
||||
%TO.P,J_Front_1,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-86360000D03*
|
||||
%TO.P,J_Front_1,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_1-Pin_2-Pad2)*%
|
||||
X167640000Y-83820000D03*
|
||||
D10*
|
||||
%TO.P,J_Front_1,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.P,J7,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-81280000D03*
|
||||
D11*
|
||||
%TO.P,J7,2,Pin_2*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X187960000Y-78740000D03*
|
||||
%TO.P,J7,3,Pin_3*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X187960000Y-76200000D03*
|
||||
%TO.P,J7,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-73660000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J9,1,Pin_1*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X175260000Y-104140000D03*
|
||||
D11*
|
||||
%TO.P,J9,2,Pin_2*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X175260000Y-101600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,JJ_CAN_4,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-81280000D03*
|
||||
D11*
|
||||
%TO.P,JJ_CAN_4,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,3,Pin_3*%
|
||||
%TO.N,/CS4*%
|
||||
X127000000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,7,Pin_7*%
|
||||
%TO.N,unconnected-(JJ_CAN_4-Pin_7-Pad7)*%
|
||||
X137160000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J8,1,Pin_1*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X175260000Y-116840000D03*
|
||||
D11*
|
||||
%TO.P,J8,2,Pin_2*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X175260000Y-114300000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,CAN_2_1,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,CAN_2_1,2,Pin_2*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X180340000Y-104140000D03*
|
||||
%TO.P,CAN_2_1,3,Pin_3*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X180340000Y-101600000D03*
|
||||
%TO.P,CAN_2_1,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_CAN_3,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_3,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,3,Pin_3*%
|
||||
%TO.N,/CS3*%
|
||||
X127000000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_3-Pin_7-Pad7)*%
|
||||
X137160000Y-93980000D03*
|
||||
%TD*%
|
||||
%TO.P,J1,2,Pin_2*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-116750000D03*
|
||||
D10*
|
||||
%TO.P,J1,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X165100000Y-116750000D03*
|
||||
%TD*%
|
||||
%TO.P,J11,1,Pin_1*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X175260000Y-78740000D03*
|
||||
D11*
|
||||
%TO.P,J11,2,Pin_2*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X175260000Y-76200000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Extension_2,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X167640000Y-66040000D03*
|
||||
D11*
|
||||
%TO.P,J_Extension_2,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-68580000D03*
|
||||
%TO.P,J_Extension_2,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-71120000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J5,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J5,2,Pin_2*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X187960000Y-104140000D03*
|
||||
%TO.P,J5,3,Pin_3*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X187960000Y-101600000D03*
|
||||
%TO.P,J5,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J3,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J3,2,Pin_2*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X187960000Y-116840000D03*
|
||||
%TO.P,J3,3,Pin_3*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X187960000Y-114300000D03*
|
||||
%TO.P,J3,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Stepdown1,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X153341400Y-83594200D03*
|
||||
D11*
|
||||
%TO.P,J_Stepdown1,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X153341400Y-86134200D03*
|
||||
%TO.P,J_Stepdown1,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X153341400Y-88674200D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.N,/CS3*%
|
||||
X100063401Y-83492200D02*
|
||||
X100063400Y-88484165D01*
|
||||
X113251223Y-80846700D02*
|
||||
X102708902Y-80846700D01*
|
||||
X102708902Y-80846700D02*
|
||||
X100063401Y-83492200D01*
|
||||
X117187720Y-84783198D02*
|
||||
X113251223Y-80846700D01*
|
||||
X117190396Y-84783198D02*
|
||||
X117187720Y-84783198D01*
|
||||
X96518400Y-94997600D02*
|
||||
X94996000Y-96520000D01*
|
||||
X117190401Y-84783200D02*
|
||||
X117190396Y-84783198D01*
|
||||
X117481401Y-85074200D02*
|
||||
X117190401Y-84783200D01*
|
||||
X117484078Y-85074200D02*
|
||||
X117481401Y-85074200D01*
|
||||
X118484078Y-86074200D02*
|
||||
X117484078Y-85074200D01*
|
||||
X125317200Y-86074200D02*
|
||||
X118484078Y-86074200D01*
|
||||
X100063400Y-88484165D02*
|
||||
X96518400Y-92029167D01*
|
||||
X127000000Y-87757000D02*
|
||||
X125317200Y-86074200D01*
|
||||
X127000000Y-93980000D02*
|
||||
X127000000Y-87757000D01*
|
||||
X96518400Y-92029167D02*
|
||||
X96518400Y-94997600D01*
|
||||
X94996000Y-96520000D02*
|
||||
X92456000Y-96520000D01*
|
||||
%TO.N,/CS4*%
|
||||
X117484074Y-84074195D02*
|
||||
X117775079Y-84365200D01*
|
||||
X117481395Y-84074195D02*
|
||||
X117484074Y-84074195D01*
|
||||
X118777756Y-85365200D02*
|
||||
X125200800Y-85365200D01*
|
||||
X113544901Y-80137700D02*
|
||||
X117481395Y-84074195D01*
|
||||
X117775079Y-84365200D02*
|
||||
X117777756Y-84365200D01*
|
||||
X102415225Y-80137700D02*
|
||||
X113544901Y-80137700D01*
|
||||
X99354401Y-83198522D02*
|
||||
X102415225Y-80137700D01*
|
||||
X99354400Y-88190487D02*
|
||||
X99354401Y-83198522D01*
|
||||
X95809400Y-92658600D02*
|
||||
X95809400Y-91735489D01*
|
||||
X117777756Y-84365200D02*
|
||||
X118777756Y-85365200D01*
|
||||
X95809400Y-91735489D02*
|
||||
X99354400Y-88190487D01*
|
||||
X94488000Y-93980000D02*
|
||||
X95809400Y-92658600D01*
|
||||
X125200800Y-85365200D02*
|
||||
X127000000Y-83566000D01*
|
||||
X92456000Y-93980000D02*
|
||||
X94488000Y-93980000D01*
|
||||
X127000000Y-83566000D02*
|
||||
X127000000Y-81280000D01*
|
||||
%TO.N,/CS1*%
|
||||
X118772400Y-88367878D02*
|
||||
X118772400Y-110365200D01*
|
||||
X116896722Y-86492200D02*
|
||||
X118772400Y-88367878D01*
|
||||
X103296258Y-82264700D02*
|
||||
X112663869Y-82264700D01*
|
||||
X116600369Y-86201200D02*
|
||||
X116603046Y-86201200D01*
|
||||
X101481400Y-84079557D02*
|
||||
X103296258Y-82264700D01*
|
||||
X116603046Y-86201200D02*
|
||||
X116894050Y-86492200D01*
|
||||
X101481400Y-89071518D02*
|
||||
X101481400Y-84079557D01*
|
||||
X116894050Y-86492200D02*
|
||||
X116896722Y-86492200D01*
|
||||
X97936400Y-92616522D02*
|
||||
X101481400Y-89071518D01*
|
||||
X97936400Y-100691600D02*
|
||||
X97936400Y-92616522D01*
|
||||
X112663869Y-82264700D02*
|
||||
X116600369Y-86201200D01*
|
||||
X97028000Y-101600000D02*
|
||||
X97936400Y-100691600D01*
|
||||
X125790200Y-112074200D02*
|
||||
X127000000Y-113284000D01*
|
||||
X92456000Y-101600000D02*
|
||||
X97028000Y-101600000D01*
|
||||
X118772400Y-110365200D02*
|
||||
X120481401Y-112074200D01*
|
||||
X120481401Y-112074200D02*
|
||||
X125790200Y-112074200D01*
|
||||
X127000000Y-113284000D02*
|
||||
X127000000Y-119380000D01*
|
||||
%TO.N,/CS2*%
|
||||
X112957547Y-81555700D02*
|
||||
X116894045Y-85492198D01*
|
||||
X100772400Y-83785879D02*
|
||||
X103002581Y-81555700D01*
|
||||
X103002581Y-81555700D02*
|
||||
X112957547Y-81555700D01*
|
||||
X100772400Y-88777841D02*
|
||||
X100772400Y-83785879D01*
|
||||
X97227400Y-92322845D02*
|
||||
X100772400Y-88777841D01*
|
||||
X97227400Y-97336600D02*
|
||||
X97227400Y-92322845D01*
|
||||
X116894045Y-85492198D02*
|
||||
X116896719Y-85492198D01*
|
||||
X95504000Y-99060000D02*
|
||||
X97227400Y-97336600D01*
|
||||
X119481400Y-88074201D02*
|
||||
X119481400Y-110071522D01*
|
||||
X127000000Y-110236000D02*
|
||||
X127000000Y-106680000D01*
|
||||
X117190400Y-85783200D02*
|
||||
X119481400Y-88074201D01*
|
||||
X125870800Y-111365200D02*
|
||||
X127000000Y-110236000D01*
|
||||
X117187723Y-85783200D02*
|
||||
X117190400Y-85783200D01*
|
||||
X120775078Y-111365200D02*
|
||||
X125870800Y-111365200D01*
|
||||
X116896719Y-85492198D02*
|
||||
X117187723Y-85783200D01*
|
||||
X92456000Y-99060000D02*
|
||||
X95504000Y-99060000D01*
|
||||
X119481400Y-110071522D02*
|
||||
X120775078Y-111365200D01*
|
||||
%TO.N,/SCK*%
|
||||
X101623992Y-78010700D02*
|
||||
X101937240Y-78010700D01*
|
||||
X101092564Y-78272720D02*
|
||||
X101133284Y-78232000D01*
|
||||
X102211339Y-78010693D02*
|
||||
X102211346Y-78010700D01*
|
||||
X101424088Y-78031000D02*
|
||||
X101603692Y-78031000D01*
|
||||
X101133284Y-78232000D02*
|
||||
X101223088Y-78232000D01*
|
||||
X101937240Y-78010700D02*
|
||||
X102211339Y-78010693D01*
|
||||
X101092564Y-78362522D02*
|
||||
X101092564Y-78272720D01*
|
||||
X101603692Y-78031000D02*
|
||||
X101623992Y-78010700D01*
|
||||
X97227400Y-82227687D02*
|
||||
X101092564Y-78362522D01*
|
||||
X97227400Y-85652600D02*
|
||||
X97227400Y-82227687D01*
|
||||
X134620000Y-78740000D02*
|
||||
X134620000Y-81280000D01*
|
||||
X96520000Y-86360000D02*
|
||||
X97227400Y-85652600D01*
|
||||
X101223088Y-78232000D02*
|
||||
X101424088Y-78031000D01*
|
||||
X92456000Y-86360000D02*
|
||||
X96520000Y-86360000D01*
|
||||
X102211346Y-78010700D02*
|
||||
X133890700Y-78010700D01*
|
||||
X133890700Y-78010700D02*
|
||||
X134620000Y-78740000D01*
|
||||
%TO.N,/SI*%
|
||||
X92456000Y-88900000D02*
|
||||
X96520000Y-88900000D01*
|
||||
X96520000Y-88900000D02*
|
||||
X97936400Y-87483600D01*
|
||||
X101717765Y-78740000D02*
|
||||
X101897370Y-78740000D01*
|
||||
X101897388Y-78739992D02*
|
||||
X101917679Y-78719700D01*
|
||||
X97936400Y-87483600D02*
|
||||
X97936400Y-82521365D01*
|
||||
X97936400Y-82521365D02*
|
||||
X101717765Y-78740000D01*
|
||||
X101917679Y-78719700D02*
|
||||
X130789700Y-78719700D01*
|
||||
X101897370Y-78740000D02*
|
||||
X101897378Y-78739992D01*
|
||||
X101897378Y-78739992D02*
|
||||
X101897388Y-78739992D01*
|
||||
X130789700Y-78719700D02*
|
||||
X132080000Y-80010000D01*
|
||||
X132080000Y-80010000D02*
|
||||
X132080000Y-81280000D01*
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-81280000D02*
|
||||
X127688700Y-79428700D01*
|
||||
X127688700Y-79428700D02*
|
||||
X102211347Y-79428700D01*
|
||||
%TO.N,/GND*%
|
||||
X92456000Y-109220000D02*
|
||||
X94488000Y-109220000D01*
|
||||
X94488000Y-109220000D02*
|
||||
X95504000Y-110236000D01*
|
||||
X95504000Y-110236000D02*
|
||||
X95504000Y-113284000D01*
|
||||
X96520000Y-114300000D02*
|
||||
X121920000Y-114300000D01*
|
||||
X95504000Y-113284000D02*
|
||||
X96520000Y-114300000D01*
|
||||
X121920000Y-114300000D02*
|
||||
X124460000Y-116840000D01*
|
||||
X124460000Y-116840000D02*
|
||||
X124460000Y-119380000D01*
|
||||
%TO.N,/SO*%
|
||||
X98645400Y-87896810D02*
|
||||
X95102210Y-91440000D01*
|
||||
X95102210Y-91440000D02*
|
||||
X92456000Y-91440000D01*
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-119380000D02*
|
||||
X134620000Y-81280000D01*
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-81280000D02*
|
||||
X132080000Y-119380000D01*
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-119380000D02*
|
||||
X129540000Y-81280000D01*
|
||||
X98645400Y-87896810D02*
|
||||
X98645400Y-82904845D01*
|
||||
X98645400Y-82904845D02*
|
||||
X102058045Y-79492200D01*
|
||||
D13*
|
||||
%TO.N,/GND*%
|
||||
X163941400Y-105621400D02*
|
||||
X165100000Y-106780000D01*
|
||||
X165100000Y-106780000D02*
|
||||
X165100000Y-116750000D01*
|
||||
X163941400Y-84274200D02*
|
||||
X163941400Y-82058600D01*
|
||||
X163941400Y-82058600D02*
|
||||
X164720000Y-81280000D01*
|
||||
X164720000Y-81280000D02*
|
||||
X167640000Y-81280000D01*
|
||||
X162081400Y-86134200D02*
|
||||
X163941400Y-84274200D01*
|
||||
X163941400Y-84274200D02*
|
||||
X163941400Y-84600000D01*
|
||||
%TO.N,/CAN_GND*%
|
||||
X182500000Y-105750000D02*
|
||||
X182500000Y-118750000D01*
|
||||
X182500000Y-118750000D02*
|
||||
X181870000Y-119380000D01*
|
||||
X181870000Y-119380000D02*
|
||||
X180340000Y-119380000D01*
|
||||
X182500000Y-92750000D02*
|
||||
X182500000Y-105750000D01*
|
||||
X182500000Y-105750000D02*
|
||||
X181570000Y-106680000D01*
|
||||
X181570000Y-106680000D02*
|
||||
X180340000Y-106680000D01*
|
||||
X180340000Y-81280000D02*
|
||||
X181530000Y-81280000D01*
|
||||
X181530000Y-81280000D02*
|
||||
X182500000Y-82250000D01*
|
||||
X182500000Y-82250000D02*
|
||||
X182500000Y-92750000D01*
|
||||
X182500000Y-92750000D02*
|
||||
X181270000Y-93980000D01*
|
||||
X181270000Y-93980000D02*
|
||||
X180340000Y-93980000D01*
|
||||
%TO.N,/CAN_24V*%
|
||||
X177750000Y-98000000D02*
|
||||
X177750000Y-111000000D01*
|
||||
X177750000Y-111000000D02*
|
||||
X178510000Y-111760000D01*
|
||||
X178510000Y-111760000D02*
|
||||
X180340000Y-111760000D01*
|
||||
X177750000Y-85750000D02*
|
||||
X177750000Y-98000000D01*
|
||||
X177750000Y-98000000D02*
|
||||
X178810000Y-99060000D01*
|
||||
X178810000Y-99060000D02*
|
||||
X180340000Y-99060000D01*
|
||||
X180340000Y-73660000D02*
|
||||
X178590000Y-73660000D01*
|
||||
X178590000Y-73660000D02*
|
||||
X177750000Y-74500000D01*
|
||||
X177750000Y-74500000D02*
|
||||
X177750000Y-85750000D01*
|
||||
X177750000Y-85750000D02*
|
||||
X178360000Y-86360000D01*
|
||||
X178360000Y-86360000D02*
|
||||
X180340000Y-86360000D01*
|
||||
%TO.N,/GND*%
|
||||
X163941400Y-92941400D02*
|
||||
X164980000Y-93980000D01*
|
||||
X163941400Y-91800000D02*
|
||||
X163941400Y-92941400D01*
|
||||
X162201400Y-86134200D02*
|
||||
X163941400Y-87874200D01*
|
||||
X153341400Y-86134200D02*
|
||||
X162081400Y-86134200D01*
|
||||
X163941400Y-91800000D02*
|
||||
X163941400Y-105621400D01*
|
||||
X163941400Y-87874200D02*
|
||||
X163941400Y-84600000D01*
|
||||
X163941400Y-105621400D02*
|
||||
X165000000Y-106680000D01*
|
||||
X162081400Y-86134200D02*
|
||||
X162201400Y-86134200D01*
|
||||
X164980000Y-93980000D02*
|
||||
X167640000Y-93980000D01*
|
||||
X165000000Y-106680000D02*
|
||||
X167640000Y-106680000D01*
|
||||
X163941400Y-91800000D02*
|
||||
X163941400Y-87874200D01*
|
||||
D12*
|
||||
%TO.N,/E5*%
|
||||
X107421400Y-84134200D02*
|
||||
X107981400Y-84134200D01*
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%TO.N,/GND*%
|
||||
G36*
|
||||
X163889279Y-84807265D02*
|
||||
G01*
|
||||
X163939802Y-84855526D01*
|
||||
X163956118Y-84909694D01*
|
||||
X164123282Y-87584312D01*
|
||||
X164107817Y-87652449D01*
|
||||
X164057970Y-87701409D01*
|
||||
X163989567Y-87715647D01*
|
||||
X163924324Y-87690643D01*
|
||||
X163919509Y-87686777D01*
|
||||
X163127182Y-87017531D01*
|
||||
X162197722Y-86232452D01*
|
||||
X162159210Y-86174157D01*
|
||||
X162158329Y-86104293D01*
|
||||
X162195359Y-86045043D01*
|
||||
X162201160Y-86040194D01*
|
||||
X163755797Y-84819888D01*
|
||||
X163820684Y-84793980D01*
|
||||
X163889279Y-84807265D01*
|
||||
G37*
|
||||
%TD.AperFunction*%
|
||||
%TD*%
|
||||
M02*
|
||||
245
Switch V8/Meycad/Meycad-B_Mask.gbr
Normal file
245
Switch V8/Meycad/Meycad-B_Mask.gbr
Normal file
@@ -0,0 +1,245 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Bot*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,1.700000X1.700000*%
|
||||
%ADD11C,1.700000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J_Extension1*%
|
||||
X104140000Y-71120000D03*
|
||||
D11*
|
||||
X104140000Y-73660000D03*
|
||||
X101600000Y-71120000D03*
|
||||
X101600000Y-73660000D03*
|
||||
X99060000Y-71120000D03*
|
||||
X99060000Y-73660000D03*
|
||||
X96520000Y-71120000D03*
|
||||
X96520000Y-73660000D03*
|
||||
%TD*%
|
||||
%TO.C,CAN_4_1*%
|
||||
X180340000Y-73660000D03*
|
||||
X180340000Y-76200000D03*
|
||||
X180340000Y-78740000D03*
|
||||
D10*
|
||||
X180340000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.C,J_Front_1_1*%
|
||||
X175260000Y-99060000D03*
|
||||
D11*
|
||||
X175260000Y-96520000D03*
|
||||
X175260000Y-93980000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J6*%
|
||||
X187960000Y-93980000D03*
|
||||
D11*
|
||||
X187960000Y-91440000D03*
|
||||
X187960000Y-88900000D03*
|
||||
X187960000Y-86360000D03*
|
||||
%TD*%
|
||||
%TO.C,Arduino_R1*%
|
||||
X107696000Y-111760000D03*
|
||||
X107696000Y-109220000D03*
|
||||
X107696000Y-106680000D03*
|
||||
X107696000Y-104140000D03*
|
||||
X107696000Y-101600000D03*
|
||||
X107696000Y-99060000D03*
|
||||
X107696000Y-96520000D03*
|
||||
X107696000Y-93980000D03*
|
||||
X107696000Y-91440000D03*
|
||||
X107696000Y-88900000D03*
|
||||
X107696000Y-86360000D03*
|
||||
D10*
|
||||
X107696000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.C,J2*%
|
||||
X180340000Y-119380000D03*
|
||||
D11*
|
||||
X180340000Y-116840000D03*
|
||||
X180340000Y-114300000D03*
|
||||
X180340000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J10*%
|
||||
X175260000Y-91440000D03*
|
||||
D11*
|
||||
X175260000Y-88900000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_1_3*%
|
||||
X175260000Y-86360000D03*
|
||||
D11*
|
||||
X175260000Y-83820000D03*
|
||||
X175260000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_2*%
|
||||
X167640000Y-93980000D03*
|
||||
D11*
|
||||
X167640000Y-96520000D03*
|
||||
X167640000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J4*%
|
||||
X180340000Y-93980000D03*
|
||||
D11*
|
||||
X180340000Y-91440000D03*
|
||||
X180340000Y-88900000D03*
|
||||
X180340000Y-86360000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_CAN_2*%
|
||||
X121920000Y-106680000D03*
|
||||
D11*
|
||||
X124460000Y-106680000D03*
|
||||
X127000000Y-106680000D03*
|
||||
X129540000Y-106680000D03*
|
||||
X132080000Y-106680000D03*
|
||||
X134620000Y-106680000D03*
|
||||
X137160000Y-106680000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_3*%
|
||||
X167640000Y-106680000D03*
|
||||
D11*
|
||||
X167640000Y-109220000D03*
|
||||
X167640000Y-111760000D03*
|
||||
%TD*%
|
||||
%TO.C,Arduino_L1*%
|
||||
X92456000Y-111760000D03*
|
||||
X92456000Y-109220000D03*
|
||||
X92456000Y-106680000D03*
|
||||
X92456000Y-104140000D03*
|
||||
X92456000Y-101600000D03*
|
||||
X92456000Y-99060000D03*
|
||||
X92456000Y-96520000D03*
|
||||
X92456000Y-93980000D03*
|
||||
X92456000Y-91440000D03*
|
||||
X92456000Y-88900000D03*
|
||||
X92456000Y-86360000D03*
|
||||
D10*
|
||||
X92456000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.C,J_CAN_1*%
|
||||
X121920000Y-119380000D03*
|
||||
D11*
|
||||
X124460000Y-119380000D03*
|
||||
X127000000Y-119380000D03*
|
||||
X129540000Y-119380000D03*
|
||||
X132080000Y-119380000D03*
|
||||
X134620000Y-119380000D03*
|
||||
X137160000Y-119380000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_1_2*%
|
||||
X175260000Y-111760000D03*
|
||||
D11*
|
||||
X175260000Y-109220000D03*
|
||||
X175260000Y-106680000D03*
|
||||
%TD*%
|
||||
%TO.C,J_Front_1*%
|
||||
X167640000Y-86360000D03*
|
||||
X167640000Y-83820000D03*
|
||||
D10*
|
||||
X167640000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.C,J7*%
|
||||
X187960000Y-81280000D03*
|
||||
D11*
|
||||
X187960000Y-78740000D03*
|
||||
X187960000Y-76200000D03*
|
||||
X187960000Y-73660000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J9*%
|
||||
X175260000Y-104140000D03*
|
||||
D11*
|
||||
X175260000Y-101600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,JJ_CAN_4*%
|
||||
X121920000Y-81280000D03*
|
||||
D11*
|
||||
X124460000Y-81280000D03*
|
||||
X127000000Y-81280000D03*
|
||||
X129540000Y-81280000D03*
|
||||
X132080000Y-81280000D03*
|
||||
X134620000Y-81280000D03*
|
||||
X137160000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J8*%
|
||||
X175260000Y-116840000D03*
|
||||
D11*
|
||||
X175260000Y-114300000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,CAN_2_1*%
|
||||
X180340000Y-106680000D03*
|
||||
D11*
|
||||
X180340000Y-104140000D03*
|
||||
X180340000Y-101600000D03*
|
||||
X180340000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_CAN_3*%
|
||||
X121920000Y-93980000D03*
|
||||
D11*
|
||||
X124460000Y-93980000D03*
|
||||
X127000000Y-93980000D03*
|
||||
X129540000Y-93980000D03*
|
||||
X132080000Y-93980000D03*
|
||||
X134620000Y-93980000D03*
|
||||
X137160000Y-93980000D03*
|
||||
%TD*%
|
||||
%TO.C,J1*%
|
||||
X167640000Y-116750000D03*
|
||||
D10*
|
||||
X165100000Y-116750000D03*
|
||||
%TD*%
|
||||
%TO.C,J11*%
|
||||
X175260000Y-78740000D03*
|
||||
D11*
|
||||
X175260000Y-76200000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Extension_2*%
|
||||
X167640000Y-66040000D03*
|
||||
D11*
|
||||
X167640000Y-68580000D03*
|
||||
X167640000Y-71120000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J5*%
|
||||
X187960000Y-106680000D03*
|
||||
D11*
|
||||
X187960000Y-104140000D03*
|
||||
X187960000Y-101600000D03*
|
||||
X187960000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J3*%
|
||||
X187960000Y-119380000D03*
|
||||
D11*
|
||||
X187960000Y-116840000D03*
|
||||
X187960000Y-114300000D03*
|
||||
X187960000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Stepdown1*%
|
||||
X153341400Y-83594200D03*
|
||||
D11*
|
||||
X153341400Y-86134200D03*
|
||||
X153341400Y-88674200D03*
|
||||
%TD*%
|
||||
M02*
|
||||
15
Switch V8/Meycad/Meycad-B_Paste.gbr
Normal file
15
Switch V8/Meycad/Meycad-B_Paste.gbr
Normal file
@@ -0,0 +1,15 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 APERTURE END LIST*
|
||||
M02*
|
||||
15
Switch V8/Meycad/Meycad-B_Silkscreen.gbr
Normal file
15
Switch V8/Meycad/Meycad-B_Silkscreen.gbr
Normal file
@@ -0,0 +1,15 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Legend,Bot*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 APERTURE END LIST*
|
||||
M02*
|
||||
43
Switch V8/Meycad/Meycad-Edge_Cuts.gbr
Normal file
43
Switch V8/Meycad/Meycad-Edge_Cuts.gbr
Normal file
@@ -0,0 +1,43 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Profile,NP*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%TA.AperFunction,Profile*%
|
||||
%ADD10C,0.050000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X171037200Y-57750000D02*
|
||||
X171500000Y-57750000D01*
|
||||
X171500000Y-121250000D01*
|
||||
X171037200Y-121250000D01*
|
||||
X171037200Y-57750000D01*
|
||||
X90116400Y-57574200D02*
|
||||
X190436400Y-57574200D01*
|
||||
X190436400Y-121574200D01*
|
||||
X90116400Y-121574200D01*
|
||||
X90116400Y-57574200D01*
|
||||
X106605200Y-76441200D02*
|
||||
X161000000Y-76441200D01*
|
||||
X161000000Y-77000000D01*
|
||||
X106605200Y-77000000D01*
|
||||
X106605200Y-76441200D01*
|
||||
X165287200Y-76441200D02*
|
||||
X170750000Y-76441200D01*
|
||||
X170750000Y-77000000D01*
|
||||
X165287200Y-77000000D01*
|
||||
X165287200Y-76441200D01*
|
||||
X90250000Y-76352400D02*
|
||||
X93560000Y-76352400D01*
|
||||
X93560000Y-76911200D01*
|
||||
X90250000Y-76911200D01*
|
||||
X90250000Y-76352400D01*
|
||||
M02*
|
||||
808
Switch V8/Meycad/Meycad-F_Cu.gbr
Normal file
808
Switch V8/Meycad/Meycad-F_Cu.gbr
Normal file
@@ -0,0 +1,808 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Copper,L1,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%TA.AperFunction,ComponentPad*%
|
||||
%ADD10R,1.700000X1.700000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,ComponentPad*%
|
||||
%ADD11C,1.700000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD12C,0.635000*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%ADD13C,0.381000*%
|
||||
%TD*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.P,J_Extension1,1,Pin_1*%
|
||||
%TO.N,/E5*%
|
||||
X104140000Y-71120000D03*
|
||||
D11*
|
||||
%TO.P,J_Extension1,2,Pin_2*%
|
||||
%TO.N,/E6*%
|
||||
X104140000Y-73660000D03*
|
||||
%TO.P,J_Extension1,3,Pin_3*%
|
||||
%TO.N,/E7*%
|
||||
X101600000Y-71120000D03*
|
||||
%TO.P,J_Extension1,4,Pin_4*%
|
||||
%TO.N,/E8*%
|
||||
X101600000Y-73660000D03*
|
||||
%TO.P,J_Extension1,5,Pin_5*%
|
||||
%TO.N,/E4*%
|
||||
X99060000Y-71120000D03*
|
||||
%TO.P,J_Extension1,6,Pin_6*%
|
||||
%TO.N,/E3*%
|
||||
X99060000Y-73660000D03*
|
||||
%TO.P,J_Extension1,7,Pin_7*%
|
||||
%TO.N,/E2*%
|
||||
X96520000Y-71120000D03*
|
||||
%TO.P,J_Extension1,8,Pin_8*%
|
||||
%TO.N,/E1*%
|
||||
X96520000Y-73660000D03*
|
||||
%TD*%
|
||||
%TO.P,CAN_4_1,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-73660000D03*
|
||||
%TO.P,CAN_4_1,3,Pin_3*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X180340000Y-76200000D03*
|
||||
%TO.P,CAN_4_1,2,Pin_2*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X180340000Y-78740000D03*
|
||||
D10*
|
||||
%TO.P,CAN_4_1,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.P,J_Front_1_1,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-99060000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_1,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-96520000D03*
|
||||
%TO.P,J_Front_1_1,3,Pin_3*%
|
||||
X175260000Y-93980000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J6,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J6,2,Pin_2*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X187960000Y-91440000D03*
|
||||
%TO.P,J6,3,Pin_3*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X187960000Y-88900000D03*
|
||||
%TO.P,J6,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-86360000D03*
|
||||
%TD*%
|
||||
%TO.P,Arduino_R1,12,Pin_12*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_12-Pad12)*%
|
||||
X107696000Y-111760000D03*
|
||||
%TO.P,Arduino_R1,11,Pin_11*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_11-Pad11)*%
|
||||
X107696000Y-109220000D03*
|
||||
%TO.P,Arduino_R1,10,Pin_10*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_10-Pad10)*%
|
||||
X107696000Y-106680000D03*
|
||||
%TO.P,Arduino_R1,9,Pin_9*%
|
||||
%TO.N,unconnected-(Arduino_R1-Pin_9-Pad9)*%
|
||||
X107696000Y-104140000D03*
|
||||
%TO.P,Arduino_R1,8,Pin_8*%
|
||||
%TO.N,/E1*%
|
||||
X107696000Y-101600000D03*
|
||||
%TO.P,Arduino_R1,7,Pin_7*%
|
||||
%TO.N,/E2*%
|
||||
X107696000Y-99060000D03*
|
||||
%TO.P,Arduino_R1,6,Pin_6*%
|
||||
%TO.N,/E3*%
|
||||
X107696000Y-96520000D03*
|
||||
%TO.P,Arduino_R1,5,Pin_5*%
|
||||
%TO.N,/E4*%
|
||||
X107696000Y-93980000D03*
|
||||
%TO.P,Arduino_R1,4,Pin_4*%
|
||||
%TO.N,/E8*%
|
||||
X107696000Y-91440000D03*
|
||||
%TO.P,Arduino_R1,3,Pin_3*%
|
||||
%TO.N,/E7*%
|
||||
X107696000Y-88900000D03*
|
||||
%TO.P,Arduino_R1,2,Pin_2*%
|
||||
%TO.N,/E6*%
|
||||
X107696000Y-86360000D03*
|
||||
D10*
|
||||
%TO.P,Arduino_R1,1,Pin_1*%
|
||||
%TO.N,/E5*%
|
||||
X107696000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.P,J2,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J2,2,Pin_2*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X180340000Y-116840000D03*
|
||||
%TO.P,J2,3,Pin_3*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X180340000Y-114300000D03*
|
||||
%TO.P,J2,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J10,1,Pin_1*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X175260000Y-91440000D03*
|
||||
D11*
|
||||
%TO.P,J10,2,Pin_2*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X175260000Y-88900000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_1_3,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-86360000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_3,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-83820000D03*
|
||||
%TO.P,J_Front_1_3,3,Pin_3*%
|
||||
X175260000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_2,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_2,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_2-Pin_2-Pad2)*%
|
||||
X167640000Y-96520000D03*
|
||||
%TO.P,J_Front_2,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J4,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J4,2,Pin_2*%
|
||||
%TO.N,/CAN3_L*%
|
||||
X180340000Y-91440000D03*
|
||||
%TO.P,J4,3,Pin_3*%
|
||||
%TO.N,/CAN3_H*%
|
||||
X180340000Y-88900000D03*
|
||||
%TO.P,J4,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-86360000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_CAN_2,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_2,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,3,Pin_3*%
|
||||
%TO.N,/CS2*%
|
||||
X127000000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-106680000D03*
|
||||
%TO.P,J_CAN_2,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_2-Pin_7-Pad7)*%
|
||||
X137160000Y-106680000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_3,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_3,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_3-Pin_2-Pad2)*%
|
||||
X167640000Y-109220000D03*
|
||||
%TO.P,J_Front_3,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-111760000D03*
|
||||
%TD*%
|
||||
%TO.P,Arduino_L1,12,Pin_12*%
|
||||
%TO.N,/5V*%
|
||||
X92456000Y-111760000D03*
|
||||
%TO.P,Arduino_L1,11,Pin_11*%
|
||||
%TO.N,/GND*%
|
||||
X92456000Y-109220000D03*
|
||||
%TO.P,Arduino_L1,10,Pin_10*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_10-Pad10)*%
|
||||
X92456000Y-106680000D03*
|
||||
%TO.P,Arduino_L1,9,Pin_9*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_9-Pad9)*%
|
||||
X92456000Y-104140000D03*
|
||||
%TO.P,Arduino_L1,8,Pin_8*%
|
||||
%TO.N,/CS1*%
|
||||
X92456000Y-101600000D03*
|
||||
%TO.P,Arduino_L1,7,Pin_7*%
|
||||
%TO.N,/CS2*%
|
||||
X92456000Y-99060000D03*
|
||||
%TO.P,Arduino_L1,6,Pin_6*%
|
||||
%TO.N,/CS3*%
|
||||
X92456000Y-96520000D03*
|
||||
%TO.P,Arduino_L1,5,Pin_5*%
|
||||
%TO.N,/CS4*%
|
||||
X92456000Y-93980000D03*
|
||||
%TO.P,Arduino_L1,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X92456000Y-91440000D03*
|
||||
%TO.P,Arduino_L1,3,Pin_3*%
|
||||
%TO.N,/SI*%
|
||||
X92456000Y-88900000D03*
|
||||
%TO.P,Arduino_L1,2,Pin_2*%
|
||||
%TO.N,/SCK*%
|
||||
X92456000Y-86360000D03*
|
||||
D10*
|
||||
%TO.P,Arduino_L1,1,Pin_1*%
|
||||
%TO.N,unconnected-(Arduino_L1-Pin_1-Pad1)*%
|
||||
X92456000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.P,J_CAN_1,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_1,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,3,Pin_3*%
|
||||
%TO.N,/CS1*%
|
||||
X127000000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-119380000D03*
|
||||
%TO.P,J_CAN_1,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_1-Pin_7-Pad7)*%
|
||||
X137160000Y-119380000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Front_1_2,1,Pin_1*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-111760000D03*
|
||||
D11*
|
||||
%TO.P,J_Front_1_2,2,Pin_2*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-109220000D03*
|
||||
%TO.P,J_Front_1_2,3,Pin_3*%
|
||||
X175260000Y-106680000D03*
|
||||
%TD*%
|
||||
%TO.P,J_Front_1,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-86360000D03*
|
||||
%TO.P,J_Front_1,2,Pin_2*%
|
||||
%TO.N,unconnected-(J_Front_1-Pin_2-Pad2)*%
|
||||
X167640000Y-83820000D03*
|
||||
D10*
|
||||
%TO.P,J_Front_1,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.P,J7,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-81280000D03*
|
||||
D11*
|
||||
%TO.P,J7,2,Pin_2*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X187960000Y-78740000D03*
|
||||
%TO.P,J7,3,Pin_3*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X187960000Y-76200000D03*
|
||||
%TO.P,J7,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-73660000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J9,1,Pin_1*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X175260000Y-104140000D03*
|
||||
D11*
|
||||
%TO.P,J9,2,Pin_2*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X175260000Y-101600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,JJ_CAN_4,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-81280000D03*
|
||||
D11*
|
||||
%TO.P,JJ_CAN_4,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,3,Pin_3*%
|
||||
%TO.N,/CS4*%
|
||||
X127000000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-81280000D03*
|
||||
%TO.P,JJ_CAN_4,7,Pin_7*%
|
||||
%TO.N,unconnected-(JJ_CAN_4-Pin_7-Pad7)*%
|
||||
X137160000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J8,1,Pin_1*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X175260000Y-116840000D03*
|
||||
D11*
|
||||
%TO.P,J8,2,Pin_2*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X175260000Y-114300000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,CAN_2_1,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,CAN_2_1,2,Pin_2*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X180340000Y-104140000D03*
|
||||
%TO.P,CAN_2_1,3,Pin_3*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X180340000Y-101600000D03*
|
||||
%TO.P,CAN_2_1,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_CAN_3,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-93980000D03*
|
||||
D11*
|
||||
%TO.P,J_CAN_3,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,3,Pin_3*%
|
||||
%TO.N,/CS3*%
|
||||
X127000000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,4,Pin_4*%
|
||||
%TO.N,/SO*%
|
||||
X129540000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,5,Pin_5*%
|
||||
%TO.N,/SI*%
|
||||
X132080000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,6,Pin_6*%
|
||||
%TO.N,/SCK*%
|
||||
X134620000Y-93980000D03*
|
||||
%TO.P,J_CAN_3,7,Pin_7*%
|
||||
%TO.N,unconnected-(J_CAN_3-Pin_7-Pad7)*%
|
||||
X137160000Y-93980000D03*
|
||||
%TD*%
|
||||
%TO.P,J1,2,Pin_2*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-116750000D03*
|
||||
D10*
|
||||
%TO.P,J1,1,Pin_1*%
|
||||
%TO.N,/GND*%
|
||||
X165100000Y-116750000D03*
|
||||
%TD*%
|
||||
%TO.P,J11,1,Pin_1*%
|
||||
%TO.N,/CAN4_L*%
|
||||
X175260000Y-78740000D03*
|
||||
D11*
|
||||
%TO.P,J11,2,Pin_2*%
|
||||
%TO.N,/CAN4_H*%
|
||||
X175260000Y-76200000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Extension_2,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X167640000Y-66040000D03*
|
||||
D11*
|
||||
%TO.P,J_Extension_2,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X167640000Y-68580000D03*
|
||||
%TO.P,J_Extension_2,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-71120000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J5,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-106680000D03*
|
||||
D11*
|
||||
%TO.P,J5,2,Pin_2*%
|
||||
%TO.N,/CAN2_L*%
|
||||
X187960000Y-104140000D03*
|
||||
%TO.P,J5,3,Pin_3*%
|
||||
%TO.N,/CAN2_H*%
|
||||
X187960000Y-101600000D03*
|
||||
%TO.P,J5,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J3,1,Pin_1*%
|
||||
%TO.N,/CAN_GND*%
|
||||
X187960000Y-119380000D03*
|
||||
D11*
|
||||
%TO.P,J3,2,Pin_2*%
|
||||
%TO.N,/CAN1_L*%
|
||||
X187960000Y-116840000D03*
|
||||
%TO.P,J3,3,Pin_3*%
|
||||
%TO.N,/CAN1_H*%
|
||||
X187960000Y-114300000D03*
|
||||
%TO.P,J3,4,Pin_4*%
|
||||
%TO.N,/CAN_24V*%
|
||||
X187960000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.P,J_Stepdown1,1,Pin_1*%
|
||||
%TO.N,/5V*%
|
||||
X153341400Y-83594200D03*
|
||||
D11*
|
||||
%TO.P,J_Stepdown1,2,Pin_2*%
|
||||
%TO.N,/GND*%
|
||||
X153341400Y-86134200D03*
|
||||
%TO.P,J_Stepdown1,3,Pin_3*%
|
||||
%TO.N,/24V*%
|
||||
X153341400Y-88674200D03*
|
||||
%TD*%
|
||||
D12*
|
||||
%TO.N,/GND*%
|
||||
X153341400Y-86134200D02*
|
||||
X156881400Y-86134200D01*
|
||||
X156881400Y-86134200D02*
|
||||
X162705400Y-80310200D01*
|
||||
X162705400Y-80310200D02*
|
||||
X162705400Y-69794600D01*
|
||||
X162705400Y-69794600D02*
|
||||
X163920000Y-68580000D01*
|
||||
X163920000Y-68580000D02*
|
||||
X167640000Y-68580000D01*
|
||||
D13*
|
||||
%TO.N,/E5*%
|
||||
X105641400Y-83289400D02*
|
||||
X105641400Y-72621400D01*
|
||||
X105641400Y-72621400D02*
|
||||
X104140000Y-71120000D01*
|
||||
%TO.N,/E7*%
|
||||
X102899900Y-78363484D02*
|
||||
X102899900Y-72419900D01*
|
||||
X102899900Y-72419900D02*
|
||||
X101600000Y-71120000D01*
|
||||
%TO.N,/E4*%
|
||||
X107696000Y-93980000D02*
|
||||
X105156000Y-93980000D01*
|
||||
X105156000Y-93980000D02*
|
||||
X103313400Y-92137400D01*
|
||||
X100301500Y-72361500D02*
|
||||
X99060000Y-71120000D01*
|
||||
X103313400Y-92137400D02*
|
||||
X103313400Y-80423128D01*
|
||||
X103313400Y-80423128D02*
|
||||
X100301500Y-77411228D01*
|
||||
X100301500Y-77411228D02*
|
||||
X100301500Y-72361500D01*
|
||||
%TO.N,/E2*%
|
||||
X97762900Y-76518772D02*
|
||||
X97762900Y-72362900D01*
|
||||
X97762900Y-72362900D02*
|
||||
X96520000Y-71120000D01*
|
||||
%TO.N,/E1*%
|
||||
X107696000Y-101600000D02*
|
||||
X102616000Y-101600000D01*
|
||||
X102616000Y-101600000D02*
|
||||
X101559400Y-100543400D01*
|
||||
X101559400Y-100543400D02*
|
||||
X101559400Y-81138344D01*
|
||||
X101559400Y-81138344D02*
|
||||
X96520000Y-76098944D01*
|
||||
X96520000Y-76098944D02*
|
||||
X96520000Y-73660000D01*
|
||||
D12*
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-88392000D02*
|
||||
X124460000Y-119380000D01*
|
||||
%TO.N,/5V*%
|
||||
X92456000Y-111760000D02*
|
||||
X93980000Y-111760000D01*
|
||||
X93980000Y-111760000D02*
|
||||
X96520000Y-114300000D01*
|
||||
X96520000Y-114300000D02*
|
||||
X117856000Y-114300000D01*
|
||||
X117856000Y-114300000D02*
|
||||
X121920000Y-110236000D01*
|
||||
X121920000Y-110236000D02*
|
||||
X121920000Y-106680000D01*
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-81280000D02*
|
||||
X124460000Y-84328000D01*
|
||||
X126209800Y-86134200D02*
|
||||
X126209800Y-86077800D01*
|
||||
X126209800Y-86077800D02*
|
||||
X124460000Y-84328000D01*
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-81280000D02*
|
||||
X121920000Y-119380000D01*
|
||||
X121920000Y-81280000D02*
|
||||
X121920000Y-80264000D01*
|
||||
X121920000Y-80264000D02*
|
||||
X122936000Y-79248000D01*
|
||||
X122936000Y-79248000D02*
|
||||
X151384000Y-79248000D01*
|
||||
X151384000Y-79248000D02*
|
||||
X153341400Y-81205400D01*
|
||||
X153341400Y-81205400D02*
|
||||
X153341400Y-83594200D01*
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-87884000D02*
|
||||
X124460000Y-88392000D01*
|
||||
X153341400Y-86134200D02*
|
||||
X126209800Y-86134200D01*
|
||||
X126209800Y-86134200D02*
|
||||
X124460000Y-87884000D01*
|
||||
D13*
|
||||
%TO.N,/E2*%
|
||||
X102141400Y-98077400D02*
|
||||
X103124000Y-99060000D01*
|
||||
X102141400Y-80897272D02*
|
||||
X102141400Y-98077400D01*
|
||||
X103124000Y-99060000D02*
|
||||
X107696000Y-99060000D01*
|
||||
%TO.N,/E3*%
|
||||
X102731400Y-95111400D02*
|
||||
X104140000Y-96520000D01*
|
||||
X102731400Y-80664200D02*
|
||||
X102731400Y-95111400D01*
|
||||
X104140000Y-96520000D02*
|
||||
X107696000Y-96520000D01*
|
||||
%TO.N,/E8*%
|
||||
X101601400Y-74114200D02*
|
||||
X101601400Y-77888056D01*
|
||||
X101601400Y-77888056D02*
|
||||
X103895400Y-80182056D01*
|
||||
X103895400Y-80182056D02*
|
||||
X103895400Y-90179400D01*
|
||||
X103895400Y-90179400D02*
|
||||
X105156000Y-91440000D01*
|
||||
X105156000Y-91440000D02*
|
||||
X107696000Y-91440000D01*
|
||||
%TO.N,/E7*%
|
||||
X102899900Y-78363484D02*
|
||||
X104477400Y-79940984D01*
|
||||
X105664000Y-88900000D02*
|
||||
X107696000Y-88900000D01*
|
||||
X104477400Y-79940984D02*
|
||||
X104477400Y-87713400D01*
|
||||
X104477400Y-87713400D02*
|
||||
X105664000Y-88900000D01*
|
||||
%TO.N,/E6*%
|
||||
X104141400Y-74114200D02*
|
||||
X104141400Y-78781912D01*
|
||||
X104141400Y-78781912D02*
|
||||
X105059400Y-79699912D01*
|
||||
X105059400Y-79699912D02*
|
||||
X105059400Y-85247400D01*
|
||||
X105059400Y-85247400D02*
|
||||
X106172000Y-86360000D01*
|
||||
X106172000Y-86360000D02*
|
||||
X107696000Y-86360000D01*
|
||||
%TO.N,/E5*%
|
||||
X105641400Y-83289400D02*
|
||||
X106172000Y-83820000D01*
|
||||
X106172000Y-83820000D02*
|
||||
X107696000Y-83820000D01*
|
||||
D12*
|
||||
%TO.N,/5V*%
|
||||
X162960000Y-66040000D02*
|
||||
X167640000Y-66040000D01*
|
||||
%TO.N,/GND*%
|
||||
X92021400Y-109534200D02*
|
||||
X92481400Y-109534200D01*
|
||||
D13*
|
||||
%TO.N,/E3*%
|
||||
X99061400Y-74114200D02*
|
||||
X99061400Y-76994200D01*
|
||||
X99061400Y-76994200D02*
|
||||
X102731400Y-80664200D01*
|
||||
D12*
|
||||
%TO.N,/24V*%
|
||||
X155541400Y-88674200D02*
|
||||
X161941400Y-88674200D01*
|
||||
X163941400Y-86674200D02*
|
||||
X163941400Y-86658600D01*
|
||||
X163941400Y-97941400D02*
|
||||
X165060000Y-99060000D01*
|
||||
X153341400Y-88674200D02*
|
||||
X155541400Y-88674200D01*
|
||||
X163941400Y-90500000D02*
|
||||
X163941400Y-97600000D01*
|
||||
X163941400Y-98374200D02*
|
||||
X163941400Y-97600000D01*
|
||||
X163941400Y-98374200D02*
|
||||
X163941400Y-110941400D01*
|
||||
X164760000Y-111760000D02*
|
||||
X167640000Y-111760000D01*
|
||||
X163941400Y-110941400D02*
|
||||
X164760000Y-111760000D01*
|
||||
X155541400Y-88674200D02*
|
||||
X155506400Y-88639200D01*
|
||||
X163941400Y-97600000D02*
|
||||
X163941400Y-97941400D01*
|
||||
X165060000Y-99060000D02*
|
||||
X167640000Y-99060000D01*
|
||||
X161941400Y-88674200D02*
|
||||
X163941400Y-86674200D01*
|
||||
D13*
|
||||
%TO.N,/E2*%
|
||||
X97762900Y-76518772D02*
|
||||
X102141400Y-80897272D01*
|
||||
D12*
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-116750000D02*
|
||||
X167640000Y-111760000D01*
|
||||
X162115600Y-88674200D02*
|
||||
X163941400Y-90500000D01*
|
||||
X164240000Y-86360000D02*
|
||||
X163941400Y-86658600D01*
|
||||
%TO.N,/5V*%
|
||||
X161869400Y-79946200D02*
|
||||
X161869400Y-67130600D01*
|
||||
%TO.N,/24V*%
|
||||
X167640000Y-86360000D02*
|
||||
X164240000Y-86360000D01*
|
||||
X155541400Y-88674200D02*
|
||||
X157741400Y-88674200D01*
|
||||
%TO.N,/5V*%
|
||||
X153341400Y-83594200D02*
|
||||
X158221400Y-83594200D01*
|
||||
X161869400Y-67130600D02*
|
||||
X162960000Y-66040000D01*
|
||||
%TO.N,/24V*%
|
||||
X163941400Y-86750000D02*
|
||||
X163941400Y-72308600D01*
|
||||
X163941400Y-72308600D02*
|
||||
X165130000Y-71120000D01*
|
||||
X163941400Y-86674200D02*
|
||||
X163941400Y-86750000D01*
|
||||
X163941400Y-86750000D02*
|
||||
X163941400Y-90500000D01*
|
||||
X165130000Y-71120000D02*
|
||||
X167640000Y-71120000D01*
|
||||
%TO.N,/5V*%
|
||||
X121920000Y-117856000D02*
|
||||
X121920000Y-119380000D01*
|
||||
%TO.N,/24V*%
|
||||
X161941400Y-88674200D02*
|
||||
X162115600Y-88674200D01*
|
||||
%TO.N,/5V*%
|
||||
X158221400Y-83594200D02*
|
||||
X161869400Y-79946200D01*
|
||||
%TO.N,/GND*%
|
||||
X124460000Y-84328000D02*
|
||||
X124460000Y-88392000D01*
|
||||
%TO.N,/CAN_24V*%
|
||||
X180340000Y-73660000D02*
|
||||
X187960000Y-73660000D01*
|
||||
%TO.N,/CAN4_H*%
|
||||
X175260000Y-76200000D02*
|
||||
X187960000Y-76200000D01*
|
||||
%TO.N,/CAN4_L*%
|
||||
X175260000Y-78740000D02*
|
||||
X187960000Y-78740000D01*
|
||||
%TO.N,/CAN_GND*%
|
||||
X180340000Y-119380000D02*
|
||||
X187960000Y-119380000D01*
|
||||
%TO.N,/CAN1_L*%
|
||||
X175260000Y-116840000D02*
|
||||
X187960000Y-116840000D01*
|
||||
%TO.N,/CAN_24V*%
|
||||
X175260000Y-86360000D02*
|
||||
X187960000Y-86360000D01*
|
||||
X175260000Y-111760000D02*
|
||||
X187960000Y-111760000D01*
|
||||
X175260000Y-99060000D02*
|
||||
X187960000Y-99060000D01*
|
||||
%TO.N,/CAN2_L*%
|
||||
X175260000Y-104140000D02*
|
||||
X187960000Y-104140000D01*
|
||||
%TO.N,/CAN2_H*%
|
||||
X175260000Y-101600000D02*
|
||||
X187960000Y-101600000D01*
|
||||
%TO.N,/CAN_GND*%
|
||||
X175260000Y-81280000D02*
|
||||
X175260000Y-83820000D01*
|
||||
X175260000Y-109220000D02*
|
||||
X175260000Y-106680000D01*
|
||||
X175260000Y-106680000D02*
|
||||
X187960000Y-106680000D01*
|
||||
X175260000Y-81280000D02*
|
||||
X187960000Y-81280000D01*
|
||||
X175260000Y-93980000D02*
|
||||
X187960000Y-93980000D01*
|
||||
X175260000Y-93980000D02*
|
||||
X175260000Y-96520000D01*
|
||||
%TO.N,/CAN1_H*%
|
||||
X175260000Y-114300000D02*
|
||||
X187960000Y-114300000D01*
|
||||
%TO.N,/CAN3_L*%
|
||||
X175260000Y-91440000D02*
|
||||
X187960000Y-91440000D01*
|
||||
%TO.N,/CAN3_H*%
|
||||
X175260000Y-88900000D02*
|
||||
X187960000Y-88900000D01*
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%TO.N,/24V*%
|
||||
G36*
|
||||
X163866780Y-87038880D02*
|
||||
G01*
|
||||
X163920436Y-87083634D01*
|
||||
X163941378Y-87150291D01*
|
||||
X163941400Y-87152624D01*
|
||||
X163941400Y-90195775D01*
|
||||
X163921715Y-90262814D01*
|
||||
X163868911Y-90308569D01*
|
||||
X163799753Y-90318513D01*
|
||||
X163736197Y-90289488D01*
|
||||
X163734494Y-90287985D01*
|
||||
X162043805Y-88766364D01*
|
||||
X162007147Y-88706890D01*
|
||||
X162008461Y-88637033D01*
|
||||
X162043806Y-88582033D01*
|
||||
X163734449Y-87060455D01*
|
||||
X163797447Y-87030240D01*
|
||||
X163866780Y-87038880D01*
|
||||
G37*
|
||||
%TD.AperFunction*%
|
||||
%TD*%
|
||||
%TA.AperFunction,Conductor*%
|
||||
%TO.N,/GND*%
|
||||
G36*
|
||||
X124665203Y-84533649D02*
|
||||
G01*
|
||||
X124671681Y-84539681D01*
|
||||
X126390902Y-86258902D01*
|
||||
X126424387Y-86320225D01*
|
||||
X126419403Y-86389917D01*
|
||||
X126377621Y-86445783D01*
|
||||
X124658400Y-87735200D01*
|
||||
X124592958Y-87759676D01*
|
||||
X124524671Y-87744886D01*
|
||||
X124475222Y-87695525D01*
|
||||
X124460000Y-87636000D01*
|
||||
X124460000Y-84627362D01*
|
||||
X124479685Y-84560323D01*
|
||||
X124532489Y-84514568D01*
|
||||
X124601647Y-84504624D01*
|
||||
X124665203Y-84533649D01*
|
||||
G37*
|
||||
%TD.AperFunction*%
|
||||
%TD*%
|
||||
M02*
|
||||
245
Switch V8/Meycad/Meycad-F_Mask.gbr
Normal file
245
Switch V8/Meycad/Meycad-F_Mask.gbr
Normal file
@@ -0,0 +1,245 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:30+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Soldermask,Top*%
|
||||
%TF.FilePolarity,Negative*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:30*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
%ADD10R,1.700000X1.700000*%
|
||||
%ADD11C,1.700000*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
%TO.C,J_Extension1*%
|
||||
X104140000Y-71120000D03*
|
||||
D11*
|
||||
X104140000Y-73660000D03*
|
||||
X101600000Y-71120000D03*
|
||||
X101600000Y-73660000D03*
|
||||
X99060000Y-71120000D03*
|
||||
X99060000Y-73660000D03*
|
||||
X96520000Y-71120000D03*
|
||||
X96520000Y-73660000D03*
|
||||
%TD*%
|
||||
%TO.C,CAN_4_1*%
|
||||
X180340000Y-73660000D03*
|
||||
X180340000Y-76200000D03*
|
||||
X180340000Y-78740000D03*
|
||||
D10*
|
||||
X180340000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.C,J_Front_1_1*%
|
||||
X175260000Y-99060000D03*
|
||||
D11*
|
||||
X175260000Y-96520000D03*
|
||||
X175260000Y-93980000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J6*%
|
||||
X187960000Y-93980000D03*
|
||||
D11*
|
||||
X187960000Y-91440000D03*
|
||||
X187960000Y-88900000D03*
|
||||
X187960000Y-86360000D03*
|
||||
%TD*%
|
||||
%TO.C,Arduino_R1*%
|
||||
X107696000Y-111760000D03*
|
||||
X107696000Y-109220000D03*
|
||||
X107696000Y-106680000D03*
|
||||
X107696000Y-104140000D03*
|
||||
X107696000Y-101600000D03*
|
||||
X107696000Y-99060000D03*
|
||||
X107696000Y-96520000D03*
|
||||
X107696000Y-93980000D03*
|
||||
X107696000Y-91440000D03*
|
||||
X107696000Y-88900000D03*
|
||||
X107696000Y-86360000D03*
|
||||
D10*
|
||||
X107696000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.C,J2*%
|
||||
X180340000Y-119380000D03*
|
||||
D11*
|
||||
X180340000Y-116840000D03*
|
||||
X180340000Y-114300000D03*
|
||||
X180340000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J10*%
|
||||
X175260000Y-91440000D03*
|
||||
D11*
|
||||
X175260000Y-88900000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_1_3*%
|
||||
X175260000Y-86360000D03*
|
||||
D11*
|
||||
X175260000Y-83820000D03*
|
||||
X175260000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_2*%
|
||||
X167640000Y-93980000D03*
|
||||
D11*
|
||||
X167640000Y-96520000D03*
|
||||
X167640000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J4*%
|
||||
X180340000Y-93980000D03*
|
||||
D11*
|
||||
X180340000Y-91440000D03*
|
||||
X180340000Y-88900000D03*
|
||||
X180340000Y-86360000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_CAN_2*%
|
||||
X121920000Y-106680000D03*
|
||||
D11*
|
||||
X124460000Y-106680000D03*
|
||||
X127000000Y-106680000D03*
|
||||
X129540000Y-106680000D03*
|
||||
X132080000Y-106680000D03*
|
||||
X134620000Y-106680000D03*
|
||||
X137160000Y-106680000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_3*%
|
||||
X167640000Y-106680000D03*
|
||||
D11*
|
||||
X167640000Y-109220000D03*
|
||||
X167640000Y-111760000D03*
|
||||
%TD*%
|
||||
%TO.C,Arduino_L1*%
|
||||
X92456000Y-111760000D03*
|
||||
X92456000Y-109220000D03*
|
||||
X92456000Y-106680000D03*
|
||||
X92456000Y-104140000D03*
|
||||
X92456000Y-101600000D03*
|
||||
X92456000Y-99060000D03*
|
||||
X92456000Y-96520000D03*
|
||||
X92456000Y-93980000D03*
|
||||
X92456000Y-91440000D03*
|
||||
X92456000Y-88900000D03*
|
||||
X92456000Y-86360000D03*
|
||||
D10*
|
||||
X92456000Y-83820000D03*
|
||||
%TD*%
|
||||
%TO.C,J_CAN_1*%
|
||||
X121920000Y-119380000D03*
|
||||
D11*
|
||||
X124460000Y-119380000D03*
|
||||
X127000000Y-119380000D03*
|
||||
X129540000Y-119380000D03*
|
||||
X132080000Y-119380000D03*
|
||||
X134620000Y-119380000D03*
|
||||
X137160000Y-119380000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Front_1_2*%
|
||||
X175260000Y-111760000D03*
|
||||
D11*
|
||||
X175260000Y-109220000D03*
|
||||
X175260000Y-106680000D03*
|
||||
%TD*%
|
||||
%TO.C,J_Front_1*%
|
||||
X167640000Y-86360000D03*
|
||||
X167640000Y-83820000D03*
|
||||
D10*
|
||||
X167640000Y-81280000D03*
|
||||
%TD*%
|
||||
%TO.C,J7*%
|
||||
X187960000Y-81280000D03*
|
||||
D11*
|
||||
X187960000Y-78740000D03*
|
||||
X187960000Y-76200000D03*
|
||||
X187960000Y-73660000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J9*%
|
||||
X175260000Y-104140000D03*
|
||||
D11*
|
||||
X175260000Y-101600000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,JJ_CAN_4*%
|
||||
X121920000Y-81280000D03*
|
||||
D11*
|
||||
X124460000Y-81280000D03*
|
||||
X127000000Y-81280000D03*
|
||||
X129540000Y-81280000D03*
|
||||
X132080000Y-81280000D03*
|
||||
X134620000Y-81280000D03*
|
||||
X137160000Y-81280000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J8*%
|
||||
X175260000Y-116840000D03*
|
||||
D11*
|
||||
X175260000Y-114300000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,CAN_2_1*%
|
||||
X180340000Y-106680000D03*
|
||||
D11*
|
||||
X180340000Y-104140000D03*
|
||||
X180340000Y-101600000D03*
|
||||
X180340000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_CAN_3*%
|
||||
X121920000Y-93980000D03*
|
||||
D11*
|
||||
X124460000Y-93980000D03*
|
||||
X127000000Y-93980000D03*
|
||||
X129540000Y-93980000D03*
|
||||
X132080000Y-93980000D03*
|
||||
X134620000Y-93980000D03*
|
||||
X137160000Y-93980000D03*
|
||||
%TD*%
|
||||
%TO.C,J1*%
|
||||
X167640000Y-116750000D03*
|
||||
D10*
|
||||
X165100000Y-116750000D03*
|
||||
%TD*%
|
||||
%TO.C,J11*%
|
||||
X175260000Y-78740000D03*
|
||||
D11*
|
||||
X175260000Y-76200000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Extension_2*%
|
||||
X167640000Y-66040000D03*
|
||||
D11*
|
||||
X167640000Y-68580000D03*
|
||||
X167640000Y-71120000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J5*%
|
||||
X187960000Y-106680000D03*
|
||||
D11*
|
||||
X187960000Y-104140000D03*
|
||||
X187960000Y-101600000D03*
|
||||
X187960000Y-99060000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J3*%
|
||||
X187960000Y-119380000D03*
|
||||
D11*
|
||||
X187960000Y-116840000D03*
|
||||
X187960000Y-114300000D03*
|
||||
X187960000Y-111760000D03*
|
||||
%TD*%
|
||||
D10*
|
||||
%TO.C,J_Stepdown1*%
|
||||
X153341400Y-83594200D03*
|
||||
D11*
|
||||
X153341400Y-86134200D03*
|
||||
X153341400Y-88674200D03*
|
||||
%TD*%
|
||||
M02*
|
||||
15
Switch V8/Meycad/Meycad-F_Paste.gbr
Normal file
15
Switch V8/Meycad/Meycad-F_Paste.gbr
Normal file
@@ -0,0 +1,15 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,9.0.2*%
|
||||
%TF.CreationDate,2025-07-20T17:27:29+02:00*%
|
||||
%TF.ProjectId,Meycad,4d657963-6164-42e6-9b69-6361645f7063,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Paste,Top*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW 9.0.2) date 2025-07-20 17:27:29*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
G04 APERTURE LIST*
|
||||
G04 APERTURE END LIST*
|
||||
M02*
|
||||
1528
Switch V8/Meycad/Meycad-F_Silkscreen.gbr
Normal file
1528
Switch V8/Meycad/Meycad-F_Silkscreen.gbr
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_170555.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_170555.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_171652.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_171652.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_172413.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_172413.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_173740.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-20_173740.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_184453.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_184453.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_185148.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_185148.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_185653.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_185653.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_190231.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_190231.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_191507.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-21_191507.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_140448.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_140448.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_141107.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_141107.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_142817.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_142817.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_163032.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_163032.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_163619.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-07-22_163619.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-03_150113.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-03_150113.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_193547.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_193547.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_194634.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_194634.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_195245.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_195245.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_195921.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_195921.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_200502.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-11_200502.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-12_060341.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-12_060341.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-13_053701.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-13_053701.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-21_121708.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-21_121708.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-23_071120.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-08-23_071120.zip
Normal file
Binary file not shown.
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-10-01_051328.zip
Normal file
BIN
Switch V8/Meycad/Meycad-backups/Meycad-2025-10-01_051328.zip
Normal file
Binary file not shown.
127
Switch V8/Meycad/Meycad-job.gbrjob
Normal file
127
Switch V8/Meycad/Meycad-job.gbrjob
Normal file
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"Header": {
|
||||
"GenerationSoftware": {
|
||||
"Vendor": "KiCad",
|
||||
"Application": "Pcbnew",
|
||||
"Version": "9.0.2"
|
||||
},
|
||||
"CreationDate": "2025-07-20T17:27:30+02:00"
|
||||
},
|
||||
"GeneralSpecs": {
|
||||
"ProjectId": {
|
||||
"Name": "Meycad",
|
||||
"GUID": "4d657963-6164-42e6-9b69-6361645f7063",
|
||||
"Revision": "rev?"
|
||||
},
|
||||
"Size": {
|
||||
"X": 100.37,
|
||||
"Y": 64.05
|
||||
},
|
||||
"LayerNumber": 2,
|
||||
"BoardThickness": 1.6,
|
||||
"Finish": "None"
|
||||
},
|
||||
"DesignRules": [
|
||||
{
|
||||
"Layers": "Outer",
|
||||
"PadToPad": 0.2,
|
||||
"PadToTrack": 0.2,
|
||||
"TrackToTrack": 0.2,
|
||||
"MinLineWidth": 0.381,
|
||||
"TrackToRegion": 0.5,
|
||||
"RegionToRegion": 0.5
|
||||
}
|
||||
],
|
||||
"FilesAttributes": [
|
||||
{
|
||||
"Path": "Meycad-F_Cu.gbr",
|
||||
"FileFunction": "Copper,L1,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-B_Cu.gbr",
|
||||
"FileFunction": "Copper,L2,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-F_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-B_Paste.gbr",
|
||||
"FileFunction": "SolderPaste,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-F_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Top",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-B_Silkscreen.gbr",
|
||||
"FileFunction": "Legend,Bot",
|
||||
"FilePolarity": "Positive"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-F_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Top",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-B_Mask.gbr",
|
||||
"FileFunction": "SolderMask,Bot",
|
||||
"FilePolarity": "Negative"
|
||||
},
|
||||
{
|
||||
"Path": "Meycad-Edge_Cuts.gbr",
|
||||
"FileFunction": "Profile",
|
||||
"FilePolarity": "Positive"
|
||||
}
|
||||
],
|
||||
"MaterialStackup": [
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Top Silk Screen"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Top Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Top Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "F.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "Dielectric",
|
||||
"Thickness": 1.51,
|
||||
"Material": "FR4",
|
||||
"Name": "F.Cu/B.Cu",
|
||||
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
|
||||
},
|
||||
{
|
||||
"Type": "Copper",
|
||||
"Thickness": 0.035,
|
||||
"Name": "B.Cu"
|
||||
},
|
||||
{
|
||||
"Type": "SolderMask",
|
||||
"Thickness": 0.01,
|
||||
"Name": "Bottom Solder Mask"
|
||||
},
|
||||
{
|
||||
"Type": "SolderPaste",
|
||||
"Name": "Bottom Solder Paste"
|
||||
},
|
||||
{
|
||||
"Type": "Legend",
|
||||
"Name": "Bottom Silk Screen"
|
||||
}
|
||||
]
|
||||
}
|
||||
22521
Switch V8/Meycad/Meycad.kicad_pcb
Normal file
22521
Switch V8/Meycad/Meycad.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
130
Switch V8/Meycad/Meycad.kicad_prl
Normal file
130
Switch V8/Meycad/Meycad.kicad_prl
Normal file
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"grid",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"footprint_references",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes"
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff_fffffff7_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Meycad.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"col_order": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"col_widths": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": 0
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
||||
618
Switch V8/Meycad/Meycad.kicad_pro
Normal file
618
Switch V8/Meycad/Meycad.kicad_pro
Normal file
@@ -0,0 +1,618 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": true,
|
||||
"text_position": 0,
|
||||
"units_format": 0
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.8,
|
||||
"height": 1.27,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "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_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_to_hole": "warning",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"mirrored_text_on_front_layer": "warning",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"nonmirrored_text_on_back_layer": "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_on_edge_cuts": "error",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_groove_width": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.0,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onvia": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "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",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Meycad.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"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)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "../../../../tmp/MeyCanV8/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"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": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from BOM",
|
||||
"name": "${EXCLUDE_FROM_BOM}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Exclude from Board",
|
||||
"name": "${EXCLUDE_FROM_BOARD}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": true,
|
||||
"name": "Default Editing",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Referenz"
|
||||
},
|
||||
"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": "",
|
||||
"space_save_all_events": true,
|
||||
"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": [
|
||||
[
|
||||
"95707ee4-6ed9-4d00-9b28-1b2b2ac99ef3",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
14604
Switch V8/Meycad/Meycad.kicad_sch
Normal file
14604
Switch V8/Meycad/Meycad.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
7842
Switch V8/Meycad/Meycad.kicad_sch-bak
Normal file
7842
Switch V8/Meycad/Meycad.kicad_sch-bak
Normal file
File diff suppressed because it is too large
Load Diff
102642
Switch V8/Meycad/fp-info-cache
Normal file
102642
Switch V8/Meycad/fp-info-cache
Normal file
File diff suppressed because it is too large
Load Diff
1
Switch V8/Meycad/~Meycad.kicad_pcb.lck
Normal file
1
Switch V8/Meycad/~Meycad.kicad_pcb.lck
Normal file
@@ -0,0 +1 @@
|
||||
{"hostname":"meydin","username":"meydin"}
|
||||
1
Switch V8/Meycad/~Meycad.kicad_sch.lck
Normal file
1
Switch V8/Meycad/~Meycad.kicad_sch.lck
Normal file
@@ -0,0 +1 @@
|
||||
{"hostname":"meydin","username":"meydin"}
|
||||
9
unlock_keyring.txt
Normal file
9
unlock_keyring.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
echo 'NOTE: This script will only work if launched via source or .' >&2
|
||||
echo -n 'Login password: ' >&2
|
||||
read -s _UNLOCK_PASSWORD || return
|
||||
killall -q -u "$(whoami)" gnome-keyring-daemon
|
||||
eval $(echo -n "${_UNLOCK_PASSWORD}" \
|
||||
| gnome-keyring-daemon --daemonize --login \
|
||||
| sed -e 's/^/export /')
|
||||
unset _UNLOCK_PASSWORD
|
||||
echo '' >&2
|
||||
Reference in New Issue
Block a user