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:
|
Payload:
|
||||||
2 bytes | Byte -> Software-Version (1.0)
|
2 bytes | Byte -> Software-Version (1.0)
|
||||||
2 bytes | Byte -> Hw Version (4.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
|
0x050: Input Switch Triggered
|
||||||
-> Broadcast
|
-> Broadcast
|
||||||
@@ -46,4 +49,19 @@ Payload:
|
|||||||
* 2 byte: DeviceId
|
* 2 byte: DeviceId
|
||||||
* 1 byte: The State
|
* 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 _deviceTypeId = 0;
|
||||||
byte _majorHardwareVersion = 0;
|
byte _majorHardwareVersion = 0;
|
||||||
byte _minorHardwareVersion = 0;
|
byte _minorHardwareVersion = 0;
|
||||||
|
void (*LocalPinChangedHandler)(can_frame *frame);
|
||||||
|
|
||||||
void SetupMeyPin(PinState *state)
|
void SetupMeyPin(PinState *state) {
|
||||||
{
|
|
||||||
pinMode(state->pin_id, OUTPUT);
|
pinMode(state->pin_id, OUTPUT);
|
||||||
digitalWrite(state->pin_id, LOW);
|
digitalWrite(state->pin_id, LOW);
|
||||||
state->pin_state = false;
|
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->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();
|
interface->setNormalMode();
|
||||||
SendVersionPackage(interface);
|
SendVersionPackage(interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace))
|
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace)) {
|
||||||
{
|
|
||||||
CanBusses->ForEachInterface(handle);
|
CanBusses->ForEachInterface(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId)
|
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
|
||||||
{
|
|
||||||
_majorHardwareVersion = majorHardwareVersion;
|
_majorHardwareVersion = majorHardwareVersion;
|
||||||
_minorHardwareVersion = minorHardwareVersion;
|
_minorHardwareVersion = minorHardwareVersion;
|
||||||
_deviceTypeId = deviceTypeId;
|
_deviceTypeId = deviceTypeId;
|
||||||
CalculateMyDeviceId();
|
|
||||||
|
|
||||||
if (MeyPin != NULL);
|
if (MeyPin != NULL)
|
||||||
|
;
|
||||||
MeyPin->ForEach(SetupMeyPin);
|
MeyPin->ForEach(SetupMeyPin);
|
||||||
|
|
||||||
if (CanBusses != NULL)
|
if (CanBusses != NULL) {
|
||||||
{
|
|
||||||
CanBusses->ForEach(InitCanInterface, NULL);
|
CanBusses->ForEach(InitCanInterface, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddCanInterface(byte pinId)
|
void AddCanInterface(byte pinId) {
|
||||||
{
|
MCP2515 *newCanInterface = new MCP2515(pinId);
|
||||||
MCP2515* newCanInterface = new MCP2515(pinId);
|
CanInterface *canInterface = new CanInterface();
|
||||||
CanInterface* canInterface = new CanInterface();
|
|
||||||
canInterface->interface = newCanInterface;
|
canInterface->interface = newCanInterface;
|
||||||
|
|
||||||
if (CanBusses == NULL)
|
if (CanBusses == NULL)
|
||||||
@@ -58,10 +54,17 @@ void AddCanInterface(byte pinId)
|
|||||||
CanBusses->AddCanInterface(canInterface);
|
CanBusses->AddCanInterface(canInterface);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
void AddLocalPinChangedHandler(void (*localPinChangedHandler)(can_frame *frame)) {
|
||||||
{
|
LocalPinChangedHandler = localPinChangedHandler;
|
||||||
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)
|
if (MeyPin == NULL)
|
||||||
MeyPin = newState;
|
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)
|
if (!state->is_input)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool newValue = ReadPin(state);
|
bool newValue = ReadPin(state);
|
||||||
|
|
||||||
|
|
||||||
if (newValue != state->pin_state)
|
if (newValue != state->pin_state) {
|
||||||
{
|
|
||||||
delay(10);
|
delay(10);
|
||||||
newValue = ReadPin(state);
|
newValue = ReadPin(state);
|
||||||
if (newValue != state->pin_state)
|
if (newValue != state->pin_state) {
|
||||||
{
|
|
||||||
state->pin_state = newValue;
|
state->pin_state = newValue;
|
||||||
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
||||||
}
|
}
|
||||||
@@ -91,45 +91,27 @@ bool CheckPinStatus(PinState * state)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckMeyPinsTriggered()
|
void CheckMeyPinsTriggered() {
|
||||||
{
|
|
||||||
MeyPin->ForEach(CheckPinStatus);
|
MeyPin->ForEach(CheckPinStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadPin(PinState * state)
|
bool ReadPin(PinState *state) {
|
||||||
{
|
return digitalRead(state->pin_id);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void HandleFrame(can_frame *frame, MCP2515 *source)
|
void HandleFrame(can_frame *frame, MCP2515 *source) {
|
||||||
{
|
|
||||||
CanBusses->ForEach(DoSendCanPkg, frame, source);
|
CanBusses->ForEach(DoSendCanPkg, frame, source);
|
||||||
HandleTriggerMeypinCanPackage(frame);
|
HandleTriggerMeypinCanPackage(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTriggerMeypinCanPackage(can_frame *frame)
|
void HandleTriggerMeypinCanPackage(can_frame *frame) {
|
||||||
{
|
|
||||||
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID)
|
|
||||||
{
|
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID) {
|
||||||
uint16_t adressedDeviceId = ((uint16_t )frame->data[0] << 8) | frame->data[1] ;
|
|
||||||
|
|
||||||
|
uint16_t adressedDeviceId = ((uint16_t)frame->data[0] << 8) | frame->data[1];
|
||||||
if (adressedDeviceId != myDeviceId) return;
|
if (adressedDeviceId != myDeviceId) return;
|
||||||
|
|
||||||
|
|
||||||
@@ -138,10 +120,8 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
|||||||
|
|
||||||
PinState *adressedPin = MeyPin->Find(meyPinId);
|
PinState *adressedPin = MeyPin->Find(meyPinId);
|
||||||
|
|
||||||
if (adressedPin != NULL)
|
if (adressedPin != NULL) {
|
||||||
{
|
if (adressedPin->is_input == true) {
|
||||||
if (adressedPin->is_input == true)
|
|
||||||
{
|
|
||||||
pinMode(adressedPin->pin_id, OUTPUT);
|
pinMode(adressedPin->pin_id, OUTPUT);
|
||||||
adressedPin->is_input = false;
|
adressedPin->is_input = false;
|
||||||
}
|
}
|
||||||
@@ -153,49 +133,28 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
|||||||
digitalWrite(adressedPin->pin_id, state);
|
digitalWrite(adressedPin->pin_id, state);
|
||||||
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte CircularShift(byte b)
|
byte CircularShift(byte b) {
|
||||||
{
|
|
||||||
return (b << 1) | (b >> 7 & 1);
|
return (b << 1) | (b >> 7 & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t GetDeviceId(uint32_t canFrameId)
|
uint16_t GetDeviceId(uint32_t canFrameId) {
|
||||||
{
|
|
||||||
return canFrameId & 0xFFFF;
|
return canFrameId & 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t GetPackageType(uint32_t canFrameId)
|
uint16_t GetPackageType(uint32_t canFrameId) {
|
||||||
{
|
|
||||||
return (canFrameId / 0x10000) & 0xFFF;
|
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() {
|
uint32_t CreateCanId(uint16_t commandId) {
|
||||||
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;
|
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId | CAN_EFF_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendVersionPackage(MCP2515 *interface)
|
void SendVersionPackage(MCP2515 *interface) {
|
||||||
{
|
|
||||||
can_frame toSend;
|
can_frame toSend;
|
||||||
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
|
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
|
||||||
toSend.can_dlc = 5;
|
toSend.can_dlc = 5;
|
||||||
@@ -209,8 +168,7 @@ void SendVersionPackage(MCP2515 *interface)
|
|||||||
DoSendCanPkg(interface, &toSend);
|
DoSendCanPkg(interface, &toSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state)
|
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state) {
|
||||||
{
|
|
||||||
can_frame toSend;
|
can_frame toSend;
|
||||||
|
|
||||||
toSend.can_id = CreateCanId(TRIGGER_SWITCH_CAN_ID);
|
toSend.can_id = CreateCanId(TRIGGER_SWITCH_CAN_ID);
|
||||||
@@ -223,8 +181,32 @@ void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte sta
|
|||||||
HandleFrame(&toSend, NULL);
|
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;
|
can_frame toSend;
|
||||||
toSend.can_id = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
|
toSend.can_id = CreateCanId(SWITCH_TRIGGERED_CAN_ID);
|
||||||
toSend.can_dlc = 2;
|
toSend.can_dlc = 2;
|
||||||
@@ -232,24 +214,19 @@ void SendSwitchedTriggeredCanPackage(byte pinId, int state)
|
|||||||
toSend.data[1] = state;
|
toSend.data[1] = state;
|
||||||
|
|
||||||
DoSendCanPkg(&toSend);
|
DoSendCanPkg(&toSend);
|
||||||
|
if (LocalPinChangedHandler) {
|
||||||
|
LocalPinChangedHandler(&toSend);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoSendCanPkg(can_frame *frame)
|
void DoSendCanPkg(can_frame *frame) {
|
||||||
{
|
|
||||||
if (CanBusses != NULL)
|
if (CanBusses != NULL)
|
||||||
CanBusses->ForEach(DoSendCanPkg, frame);
|
CanBusses->ForEach(DoSendCanPkg, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame)
|
void DoSendCanPkg(MCP2515 *interface, can_frame *frame) {
|
||||||
{
|
|
||||||
byte cnt = 0;
|
byte cnt = 0;
|
||||||
while (interface->sendMessage(frame))
|
while (interface->sendMessage(frame)) {
|
||||||
{
|
|
||||||
if (++cnt > 10) return;
|
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 HELP_PACKAGE_CAN_ID = 0x0FFFUL;
|
||||||
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
||||||
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
|
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 AddCanInterface(byte pinId);
|
||||||
void SetMeyPin(byte index, byte meyPinId, byte pinId);
|
|
||||||
|
|
||||||
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
|
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
|
||||||
|
|
||||||
@@ -118,6 +125,10 @@ uint32_t CreateCanId(uint16_t commandId);
|
|||||||
void SendVersionPackage(MCP2515 *interface);
|
void SendVersionPackage(MCP2515 *interface);
|
||||||
|
|
||||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
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 BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
||||||
|
|
||||||
void DoSendCanPkg(can_frame *frame);
|
void DoSendCanPkg(can_frame *frame);
|
||||||
|
|||||||
@@ -6,109 +6,112 @@
|
|||||||
RemotePinInfo remotePinInfo = RemotePinInfo();
|
RemotePinInfo remotePinInfo = RemotePinInfo();
|
||||||
Rule *rules = NULL;
|
Rule *rules = NULL;
|
||||||
|
|
||||||
void PutRule(Rule *rule)
|
void PutRule(Rule *rule) {
|
||||||
{
|
|
||||||
if (rules == NULL)
|
if (rules == NULL)
|
||||||
rules = rule;
|
rules = rule;
|
||||||
else
|
else
|
||||||
rules->AddRule(rule);
|
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 *rule = new Rule();
|
||||||
|
|
||||||
rule->sourceDevId = sourceDevId;
|
rule->sourceDevId = sourceDevId;
|
||||||
rule->sourceMeyPinId = sourceMeyPinId;
|
rule->sourceMeyPinId = sourceMeyPinId;
|
||||||
rule->targetDevId = targetDevId;
|
rule->target.devId = targetDevId;
|
||||||
rule->targetMeyPinId = targetMeyPinId;
|
rule->target.meyPinId = targetMeyPinId;
|
||||||
|
rule->target.lastPinState = false;
|
||||||
rule->toggle = false;
|
rule->toggle = false;
|
||||||
rule->inverse = false;
|
rule->inverse = false;
|
||||||
rule->lastPinState = false;
|
|
||||||
|
|
||||||
PutRule(rule);
|
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 *rule = new Rule();
|
||||||
|
|
||||||
rule->sourceDevId = sourceDevId;
|
rule->sourceDevId = sourceDevId;
|
||||||
rule->sourceMeyPinId = sourceMeyPinId;
|
rule->sourceMeyPinId = sourceMeyPinId;
|
||||||
rule->targetDevId = targetDevId;
|
rule->target.devId = targetDevId;
|
||||||
rule->targetMeyPinId = targetMeyPinId;
|
rule->target.meyPinId = targetMeyPinId;
|
||||||
|
rule->target.lastPinState = false;
|
||||||
rule->toggle = true;
|
rule->toggle = true;
|
||||||
rule->inverse = false;
|
rule->inverse = false;
|
||||||
rule->lastPinState = false;
|
|
||||||
|
|
||||||
PutRule(rule);
|
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 *rule = new Rule();
|
||||||
|
|
||||||
rule->sourceDevId = sourceDevId;
|
rule->sourceDevId = sourceDevId;
|
||||||
rule->sourceMeyPinId = sourceMeyPinId;
|
rule->sourceMeyPinId = sourceMeyPinId;
|
||||||
rule->targetDevId = targetDevId;
|
rule->target.devId = targetDevId;
|
||||||
rule->targetMeyPinId = targetMeyPinId;
|
rule->target.meyPinId = targetMeyPinId;
|
||||||
|
rule->target.lastPinState = false;
|
||||||
rule->toggle = true;
|
rule->toggle = true;
|
||||||
rule->inverse = true;
|
rule->inverse = true;
|
||||||
rule->lastPinState = false;
|
|
||||||
|
|
||||||
PutRule(rule);
|
PutRule(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule)
|
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule) {
|
||||||
{
|
|
||||||
RemotePinInfo *currentRemotePinInfo = remotePinInfo.FindOrAdd(rule->targetDevId);
|
|
||||||
|
RemotePinInfo *currentRemotePinInfo = remotePinInfo.FindOrAdd(rule->target.devId);
|
||||||
|
|
||||||
if (currentRemotePinInfo == NULL) return;
|
if (currentRemotePinInfo == NULL) return;
|
||||||
|
|
||||||
// check the new state with the last one. Needs to be done, as the UP switch might
|
// 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)
|
// 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;
|
bool pinState = dt > 0;
|
||||||
|
|
||||||
if (rule->triggeredOnce && lastPinState == pinState) return;
|
if (rule->triggeredOnce && lastPinState == pinState) return;
|
||||||
rule->lastPinState = pinState;
|
|
||||||
|
rule->target.lastPinState = pinState;
|
||||||
rule->triggeredOnce = true;
|
rule->triggeredOnce = true;
|
||||||
|
|
||||||
if (rule->inverse)
|
if (rule->inverse)
|
||||||
pinState = !pinState;
|
pinState = !pinState;
|
||||||
|
|
||||||
if (rule->toggle)
|
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->target.meyPinId, pinState);
|
||||||
currentRemotePinInfo->setPinState(rule->targetMeyPinId, pinState);
|
BroadcastTriggerMeyPinCanPackage(rule->target.devId, rule->target.meyPinId, pinState);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTriggered(can_frame *frame)
|
void HandleTriggered(can_frame *frame) {
|
||||||
{
|
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
|
||||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id));
|
||||||
{
|
|
||||||
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id) );
|
if (currentPinState == NULL) {
|
||||||
|
|
||||||
if (currentPinState == NULL)
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentPinState->setPinState(frame->data[0], frame->data[1]);
|
currentPinState->setPinState(frame->data[0], frame->data[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleRules(can_frame *frame)
|
void SetLocalPinState(can_frame *frame)
|
||||||
{
|
{
|
||||||
HandleTriggered(frame);
|
HandleTriggered(frame);
|
||||||
|
}
|
||||||
if (rules == NULL) return;
|
|
||||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
void HandleRules(can_frame *frame) {
|
||||||
{
|
|
||||||
uint16_t deviceId = GetDeviceId(frame->can_id);
|
if (rules != NULL) {
|
||||||
uint8_t dt = frame->data[1];
|
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID) {
|
||||||
uint8_t state = frame->data[0];
|
uint16_t deviceId = GetDeviceId(frame->can_id);
|
||||||
|
uint8_t dt = frame->data[1];
|
||||||
rules->Traverse(deviceId, dt, state, CheckRule);
|
uint8_t state = frame->data[0];
|
||||||
}
|
|
||||||
|
rules->Traverse(deviceId, dt, state, CheckRule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HandleTriggered(frame);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,22 +4,24 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <mcp2515.h>;
|
#include <mcp2515.h>;
|
||||||
|
|
||||||
struct Rule
|
struct TargetPin{
|
||||||
{
|
uint16_t devId;
|
||||||
|
byte meyPinId;
|
||||||
|
bool lastPinState = false;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Rule {
|
||||||
uint16_t sourceDevId;
|
uint16_t sourceDevId;
|
||||||
byte sourceMeyPinId;
|
byte sourceMeyPinId;
|
||||||
uint16_t targetDevId;
|
TargetPin target = TargetPin();
|
||||||
byte targetMeyPinId;
|
|
||||||
bool toggle;
|
bool toggle;
|
||||||
bool inverse;
|
bool inverse;
|
||||||
Rule *nextRule = NULL;
|
Rule *nextRule = NULL;
|
||||||
bool lastPinState = false;
|
|
||||||
bool triggeredOnce = false;
|
bool triggeredOnce = false;
|
||||||
|
|
||||||
void AddRule(Rule *rule)
|
void AddRule(Rule *rule) {
|
||||||
{
|
if (this->nextRule == NULL) {
|
||||||
if (this->nextRule == NULL)
|
|
||||||
{
|
|
||||||
this->nextRule = rule;
|
this->nextRule = rule;
|
||||||
rule->nextRule = NULL;
|
rule->nextRule = NULL;
|
||||||
} else {
|
} 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);
|
handle(deviceId, dt, state, this);
|
||||||
|
|
||||||
if (this->nextRule != NULL)
|
if (this->nextRule != NULL)
|
||||||
this->nextRule->Traverse(deviceId, dt, state, handle);
|
this->nextRule->Traverse(deviceId, dt, state, handle);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
typedef struct RemotePinInfo
|
typedef struct RemotePinInfo {
|
||||||
{
|
|
||||||
const byte MAX_REMOTE_PIN_COUNT = 64;
|
const byte MAX_REMOTE_PIN_COUNT = 64;
|
||||||
uint16_t DeviceId = 0; // the id of the device
|
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
|
uint8_t pinState = 0; // bitmap of 8 MeyPin states of the device. 0000 0100, MeyPin #3 is HIGH in this example
|
||||||
RemotePinInfo *next = NULL;
|
RemotePinInfo *next = NULL;
|
||||||
|
|
||||||
bool getPinState(byte meyPin)
|
bool getPinState(byte meyPin) {
|
||||||
{
|
|
||||||
return (this->pinState >> (meyPin - 1)) & 1;
|
return (this->pinState >> (meyPin - 1)) & 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setPinState(byte meyPin, bool state)
|
void setPinState(byte meyPin, bool state) {
|
||||||
{
|
|
||||||
if (state)
|
if (state)
|
||||||
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
|
this->pinState = this->pinState | (1 << (meyPin - 1)); // 0001 0000
|
||||||
else
|
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;
|
if (this->next == NULL) return 1;
|
||||||
return this->next->Count() + 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)
|
if (count > MAX_REMOTE_PIN_COUNT)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
if (this->DeviceId == 0 && this->pinState == 0)
|
if (this->DeviceId == 0 && this->pinState == 0) {
|
||||||
{
|
|
||||||
this->DeviceId = deviceId;
|
this->DeviceId = deviceId;
|
||||||
this->pinState = 0;
|
this->pinState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->DeviceId == deviceId)
|
if (this->DeviceId == deviceId) {
|
||||||
{
|
|
||||||
//ToggleDebug();
|
//ToggleDebug();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next != NULL)
|
if (next != NULL) {
|
||||||
{
|
|
||||||
return next->FindOrAdd(deviceId, count + 1);
|
return next->FindOrAdd(deviceId, count + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,16 +90,18 @@ typedef struct RemotePinInfo
|
|||||||
this->next = theNext;
|
this->next = theNext;
|
||||||
return this->next;
|
return this->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern RemotePinInfo remotePinInfo;
|
extern RemotePinInfo remotePinInfo;
|
||||||
extern Rule *rules;
|
extern Rule *rules;
|
||||||
|
|
||||||
|
void SetLocalPinState(can_frame *frame);
|
||||||
|
|
||||||
void AddSimple(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
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 AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||||
void AddToggleInverse(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 HandleRules(can_frame *frame);
|
||||||
void PutRule(Rule *rule);
|
void PutRule(Rule *rule);
|
||||||
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
|
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -3,93 +3,114 @@
|
|||||||
#include "MeyCan.h";
|
#include "MeyCan.h";
|
||||||
#include "MeyRule.h";
|
#include "MeyRule.h";
|
||||||
|
|
||||||
|
#define PIN8 8
|
||||||
|
#define PIN9 9
|
||||||
|
|
||||||
const int16_t SW_FLUR = 0XD238;
|
const int16_t SW_FLUR = 0XD238;
|
||||||
const int16_t SW_ANBAU = 0x87A9;
|
const int16_t SW_ANBAU = 0x87A9;
|
||||||
const int16_t SW_WOHNZIMMER = 0x87CA;
|
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_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_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_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_FLUR_ELTERN = 0x0632;
|
||||||
const int16_t UP_KUECHE_FLUR = 0x07F5;
|
const int16_t UP_ELTERN = 0x08AE;
|
||||||
const int16_t UP_KUECHE_BAD = 0x0585;
|
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;
|
struct can_frame incomingCanFrame;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Software matching Hardware of meycan v8.1
|
||||||
|
*/
|
||||||
void setup() {
|
void setup() {
|
||||||
SPI.begin();
|
SPI.begin();
|
||||||
|
|
||||||
|
|
||||||
// AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 4); // Lichtschalter Wohnzimmer Licht 1
|
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 5);
|
||||||
// AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 3); // Lichtschalter Wohnzimmer Licht 2
|
AddToggle(UP_WOHNZIMMER_TUER, 1, SW_WOHNZIMMER, 6);
|
||||||
// AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 4); // Licht 1 von Terassenschalter
|
AddSimple(UP_WOHNZIMMER_TUER, 2, SW_WOHNZIMMER, 7);
|
||||||
// AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 3); // Licht 2 von Terassenschalter
|
AddSimple(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 8);
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
|
|
||||||
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
|
AddToggle(UP_KINDERZIMMER, 3, SW_FLUR, 6);
|
||||||
|
AddToggle(UP_KINDERZIMMER, 3, SW_WOHNZIMMER, 2);
|
||||||
delay(10); // a bit delay for mcp2515 to get the clock
|
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);
|
AddToggle(UP_FLUR_EINGANG, 1, SW_FLUR, 1);
|
||||||
SetMeyPin(1, 2, PIN_PC6);
|
AddToggle(UP_FLUR_EINGANG, 2, SW_FLUR, 6);
|
||||||
SetMeyPin(2, 3, PIN_PC5);
|
AddToggle(UP_FLUR_EINGANG, 2, SW_WOHNZIMMER, 2);
|
||||||
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);
|
|
||||||
|
|
||||||
AddCanInterface(PIN_PA2);
|
AddToggle(UP_ELTERN, 1, SW_FLUR, 2);
|
||||||
AddCanInterface(PIN_PA3);
|
|
||||||
AddCanInterface(PIN_PB0);
|
AddToggle(UP_BUERO, 1, SW_WOHNZIMMER, 3);
|
||||||
AddCanInterface(PIN_PB1);
|
|
||||||
|
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);
|
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);
|
HandleFrame(&incomingCanFrame, interface);
|
||||||
HandleRules(&incomingCanFrame);
|
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 "MeyCan.h";
|
||||||
#include <SPI.h>;
|
#include "driver/twai.h"
|
||||||
#include <mcp2515.h>;
|
|
||||||
|
|
||||||
|
|
||||||
PinState *MeyPin = NULL;
|
PinState *MeyPin = NULL;
|
||||||
CanInterface *CanBusses = NULL;
|
uint16_t myDeviceId = 0;
|
||||||
uint16_t myDeviceId;
|
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
|
void SetupMeyPin(PinState *state) {
|
||||||
{
|
if (state->is_input) {
|
||||||
interface->reset();
|
pinMode(state->pin_id, INPUT_PULLUP);
|
||||||
interface->setBitrate(CAN_500KBPS, MCP_8MHZ); //Sets CAN at speed 500KBPS and Clock 8MHz
|
state->pin_state = digitalRead(state->pin_id);
|
||||||
interface->setNormalMode();
|
} else {
|
||||||
|
pinMode(state->pin_id, OUTPUT);
|
||||||
SendVersionPackage(interface);
|
digitalWrite(state->pin_id, LOW);
|
||||||
}
|
state->pin_state = true;
|
||||||
|
|
||||||
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 SetCanInterface(byte index, byte pinId)
|
|
||||||
{
|
|
||||||
MCP2515* newCanInterface = new MCP2515(pinId);
|
|
||||||
CanInterface* canInterface = new CanInterface();
|
|
||||||
|
|
||||||
if (CanBusses == NULL)
|
|
||||||
CanBusses = canInterface;
|
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId) {
|
||||||
else
|
_majorHardwareVersion = majorHardwareVersion;
|
||||||
CanBusses->AddCanInterface(canInterface);
|
_minorHardwareVersion = minorHardwareVersion;
|
||||||
|
_deviceTypeId = deviceTypeId;
|
||||||
|
|
||||||
|
if (MeyPin != NULL)
|
||||||
|
MeyPin->ForEach(SetupMeyPin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetMeyPin(byte index, byte meyPinId, byte pinId)
|
|
||||||
{
|
void SetDevicedId(byte high, byte low) {
|
||||||
PinState* newState = new PinState();
|
myDeviceId = (high << 8) | low;
|
||||||
newState->Init(pinId, (byte) meyPinId);
|
}
|
||||||
|
|
||||||
|
void SetMeyPin(byte meyPinId, byte pinId) {
|
||||||
|
PinState *newState = new PinState();
|
||||||
|
newState->Init(pinId, (byte)meyPinId);
|
||||||
|
|
||||||
if (MeyPin == NULL)
|
if (MeyPin == NULL)
|
||||||
MeyPin = newState;
|
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)
|
if (!state->is_input)
|
||||||
return false;
|
return;
|
||||||
|
|
||||||
bool newValue = ReadPin(state);
|
bool newValue = ReadPin(state);
|
||||||
|
|
||||||
|
|
||||||
if (newValue != state->pin_state)
|
if (newValue != state->pin_state) {
|
||||||
{
|
|
||||||
delay(10);
|
delay(10);
|
||||||
newValue = ReadPin(state);
|
newValue = ReadPin(state);
|
||||||
if (newValue != state->pin_state)
|
if (newValue != state->pin_state) {
|
||||||
{
|
|
||||||
state->pin_state = newValue;
|
state->pin_state = newValue;
|
||||||
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
SendSwitchedTriggeredCanPackage(state->meyPinId, state->pin_state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckMeyPinsTriggered()
|
void CheckMeyPinsTriggered() {
|
||||||
{
|
|
||||||
MeyPin->ForEach(CheckPinStatus);
|
MeyPin->ForEach(CheckPinStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ReadPin(PinState * state)
|
|
||||||
{
|
uint16_t GetDeviceId(uint32_t canFrameId) {
|
||||||
if (state->pin_id == PIN_PD2)
|
return canFrameId & 0xFFFF;
|
||||||
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 GetPackageType(uint32_t canFrameId) {
|
||||||
void HandleFrame(can_frame *frame, MCP2515 *source)
|
return (canFrameId / 0x10000) & 0xFFF;
|
||||||
{
|
|
||||||
CanBusses->ForEach(DoSendCanPkg, frame, source);
|
|
||||||
HandleTriggerMeypinCanPackage(frame);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleTriggerMeypinCanPackage(can_frame *frame)
|
uint32_t CreateCanId(uint16_t commandId) {
|
||||||
{
|
return ((((uint32_t)commandId) & 0xFFF) * 0x10000) | myDeviceId;
|
||||||
if (GetPackageType(frame->can_id) == TRIGGER_SWITCH_CAN_ID)
|
}
|
||||||
{
|
|
||||||
uint16_t adressedDeviceId = ((uint16_t )frame->data[0] << 8) | frame->data[1] ;
|
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;
|
if (adressedDeviceId != myDeviceId) return;
|
||||||
|
|
||||||
|
|
||||||
@@ -132,10 +120,8 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
|||||||
|
|
||||||
PinState *adressedPin = MeyPin->Find(meyPinId);
|
PinState *adressedPin = MeyPin->Find(meyPinId);
|
||||||
|
|
||||||
if (adressedPin != NULL)
|
if (adressedPin != NULL) {
|
||||||
{
|
if (adressedPin->is_input == true) {
|
||||||
if (adressedPin->is_input == true)
|
|
||||||
{
|
|
||||||
pinMode(adressedPin->pin_id, OUTPUT);
|
pinMode(adressedPin->pin_id, OUTPUT);
|
||||||
adressedPin->is_input = false;
|
adressedPin->is_input = false;
|
||||||
}
|
}
|
||||||
@@ -147,104 +133,17 @@ void HandleTriggerMeypinCanPackage(can_frame *frame)
|
|||||||
digitalWrite(adressedPin->pin_id, state);
|
digitalWrite(adressedPin->pin_id, state);
|
||||||
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
SendSwitchedTriggeredCanPackage(adressedPin->meyPinId, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte CircularShift(byte b)
|
|
||||||
{
|
void HandleFrame(twai_message_t *frame) {
|
||||||
return (b << 1) | (b >> 7 & 1);
|
HandleTriggerMeypinCanPackage(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t GetDeviceId(uint32_t canFrameId)
|
|
||||||
{
|
|
||||||
return canFrameId & 0xFFFF;
|
void DoSendCanPkg(twai_message_t *frame) {
|
||||||
}
|
esp_err_t ret = twai_transmit(frame, pdMS_TO_TICKS(1000));
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +1,9 @@
|
|||||||
#ifndef MEYCAN_H
|
#ifndef MEYCAN_H
|
||||||
#define MEYCAN_H
|
#define MEYCAN_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#include <mcp2515.h>
|
#include "driver/twai.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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct PinState
|
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 SOFTWARE_VERSION_LOW = 0;
|
||||||
const byte HARDWARE_VERSION_HIGH = 7;
|
const byte HARDWARE_VERSION_HIGH = 8;
|
||||||
const byte HARDWARE_VERSION_LOW = 0;
|
const byte HARDWARE_VERSION_LOW = 1;
|
||||||
|
|
||||||
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
|
const uint16_t HELP_PACKAGE_CAN_ID = 0x0FFFUL;
|
||||||
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
const uint16_t SWITCH_TRIGGERED_CAN_ID = 0x0050;
|
||||||
const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
|
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));
|
void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
|
||||||
bool ReadPin(PinState *state);
|
uint32_t CreateCanId(uint16_t commandId);
|
||||||
bool CheckPinStatus(PinState * state);
|
void SetDevicedId(byte high, byte low);
|
||||||
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
|
void SetMeyPin(byte meyPinId, byte pinId);
|
||||||
void HandleFrame(can_frame *frame, MCP2515 *source);
|
|
||||||
void HandleTriggerMeypinCanPackage(can_frame *frame);
|
|
||||||
byte CircularShift(byte b);
|
|
||||||
uint16_t GetDeviceId(uint32_t canFrameId);
|
uint16_t GetDeviceId(uint32_t canFrameId);
|
||||||
uint16_t GetPackageType(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 SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
||||||
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
|
||||||
|
|
||||||
void DoSendCanPkg(can_frame *frame);
|
void HandleFrame(twai_message_t *frame);
|
||||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame);
|
void CheckPinStatus(PinState *state);
|
||||||
|
void CheckMeyPinsTriggered(); /* checks weather a meypin triggered and sends a can pkg is neccessary */
|
||||||
void CalculateMyDeviceId();
|
|
||||||
|
|
||||||
|
void DoSendCanPkg(twai_message_t *frame) ;
|
||||||
#endif
|
#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 <Arduino.h>
|
||||||
#include <mcp2515.h>;
|
#include <driver/i2s.h>
|
||||||
#include "MeyCan.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() {
|
void setup() {
|
||||||
return;
|
Serial.begin(115200);
|
||||||
SPI.begin();
|
i2s_setup();
|
||||||
|
|
||||||
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
|
// Explicit GND for LED and Input
|
||||||
delay(10); // a bit delay for mcp2515 to get the clock
|
pinMode(21, OUTPUT);
|
||||||
|
digitalWrite(21, LOW);
|
||||||
|
|
||||||
SetMeyPin(0, 1, PIN_PD0);
|
int err;
|
||||||
SetMeyPin(1, 2, PIN_PC7);
|
dec = opus_decoder_create(SAMPLE_RATE, CHANNELS, &err);
|
||||||
SetMeyPin(2, 3, PIN_PD2);
|
if (err != OPUS_OK) {
|
||||||
SetMeyPin(3, 4, PIN_PD1);
|
Serial.printf("opus_decoder_create failed: %d\n", err);
|
||||||
SetMeyPin(4, 5, PIN_PD5);
|
return;
|
||||||
SetMeyPin(5, 6, PIN_PD3);
|
}
|
||||||
SetMeyPin(6, 7, PIN_PD7);
|
Serial.println("Opus playback started");
|
||||||
SetMeyPin(7, 8, PIN_PD6);
|
ConfigureAndSetupMeyCan();
|
||||||
|
|
||||||
delay(20);
|
xTaskCreate(canTaskFunc, "can", 4096, nullptr, 5, nullptr);
|
||||||
|
|
||||||
SetCanInterface(0, PIN_PD4);
|
|
||||||
SetupMeyCan();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
void loop()
|
play_ogg_opus(music_opus, music_opus_len);
|
||||||
{
|
opus_decoder_ctl(dec, OPUS_RESET_STATE);
|
||||||
CheckMeyPinsTriggered();
|
|
||||||
}
|
}
|
||||||
|
|||||||
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