Compare commits

...
Sign in to create a new pull request.

10 commits
wip ... main

Author SHA1 Message Date
jaseg
ab1e29d663 Lsta updates from 37C3 2023-12-30 13:42:00 +01:00
jaseg
2dcae5db6f Fix some dumb bugs 2023-12-24 15:31:51 +01:00
jaseg
7b7b18cb14 Try to de-flicker transmission scheduling 2023-12-23 16:51:26 +01:00
jaseg
621d39437a Driver: Add basic remote control 2023-12-23 16:44:12 +01:00
jaseg
6033f3c6b9 vis: add some more chars 2023-12-23 16:15:17 +01:00
jaseg
1413a0e665 Add local changes 2023-12-20 18:05:06 +01:00
jaseg
7f376f46d6 Build WIP 2023-12-07 14:31:15 +01:00
jaseg
400ad2288d wire splitter: fix gerber export 2023-11-06 11:18:18 +01:00
jaseg
620bdcf705 Update wire splitter, export final 2023-11-06 11:16:52 +01:00
jaseg
91ce4bc0df Add wire splitter 2023-11-06 11:13:47 +01:00
19 changed files with 97436 additions and 90 deletions

1065
8seg_digit_circuit.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 51 KiB

View file

@ -0,0 +1,500 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg1"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="8seg_strand_power_distribution.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="3.3756135"
inkscape:cx="542.71616"
inkscape:cy="393.26184"
inkscape:window-width="3840"
inkscape:window-height="2091"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs1">
<rect
x="365.72055"
y="199.51234"
width="342.47363"
height="107.58745"
id="rect76" />
<rect
x="159.17676"
y="268.1709"
width="209.77623"
height="56.109158"
id="rect65" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect45" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect46" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect47" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect48" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect49" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect50" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect51" />
<rect
x="213.55869"
y="338.95828"
width="92.228409"
height="107.67358"
id="rect52" />
<rect
x="159.17676"
y="268.1709"
width="307.93604"
height="31.362564"
id="rect66" />
<rect
x="159.17676"
y="268.1709"
width="449.28024"
height="31.606376"
id="rect67" />
<rect
x="365.72055"
y="199.51234"
width="436.93361"
height="105.38921"
id="rect77" />
<rect
x="365.72055"
y="199.51234"
width="568.39698"
height="105.62805"
id="rect78" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g97"
transform="matrix(0.99867976,0,0,0.80998993,88.198567,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path7288-9"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7290-2"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7292-0"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g3"
transform="matrix(0.99867976,0,0,0.80998993,102.19874,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path2"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path3"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g6"
transform="matrix(0.99867976,0,0,0.80998993,116.19874,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path4"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path6"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g9"
transform="matrix(0.99867976,0,0,0.80998993,130.19891,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path7"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path8"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path9"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g12"
transform="matrix(0.99867976,0,0,0.80998993,144.19874,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path10"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path11"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path12"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g15"
transform="matrix(0.99867976,0,0,0.80998993,158.19891,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path13"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path14"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path15"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g18"
transform="matrix(0.99867976,0,0,0.80998993,172.19891,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path16"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path17"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path18"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g21"
transform="matrix(0.99867976,0,0,0.80998993,186.19908,0.32484439)"
style="stroke:#cc0000;stroke-width:1.11186">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path19"
d="m 40.760409,104.53616 v 15.71634 h 9.742942 v -15.71634 z"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path20"
d="m 40.760409,104.53616 9.742942,15.71634"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path21"
d="M 50.503351,104.53616 40.760409,120.2525"
style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:0.300112;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,-19.531248,-75.07778)"
id="text45"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect45);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="298.94265"
y="355.42094"
id="tspan2"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan1">1</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,-4.8796409,-75.07778)"
id="text46"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect46);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="296.63626"
y="355.42094"
id="tspan4"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan3">2</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,9.2213001,-75.07778)"
id="text47"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect47);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="296.74414"
y="355.42094"
id="tspan6"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan5">3</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,23.257104,-75.07778)"
id="text48"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect48);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="296.31273"
y="355.42094"
id="tspan8"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan7">4</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,37.086934,-75.07778)"
id="text49"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect49);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="297.19215"
y="355.42094"
id="tspan10"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan9">5</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,51.200505,-75.07778)"
id="text50"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect50);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="296.3708"
y="355.42094"
id="tspan12"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan11">6</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,64.786539,-75.07778)"
id="text51"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect51);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="297.2917"
y="355.42094"
id="tspan14"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan13">7</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.50666058,0,0,0.50666058,79.330959,-75.07778)"
id="text52"
style="font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display, Normal';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect52);display:inline;fill:#000000;stroke-width:0.592113;stroke-linecap:round;stroke-linejoin:round"><tspan
x="295.94769"
y="355.42094"
id="tspan16"><tspan
style="-inkscape-font-specification:'Sitka Display'"
id="tspan15">8</tspan></tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 140.75158,80.570218 h 12.4892"
id="path52"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 138.37356,82.867536 h 2.07802"
id="path56"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 140.60158,77.580565 h 27.24371"
id="path63"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 169.32363,77.580565 h 26.1367"
id="path64"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 196.93867,77.580565 h 26.1367"
id="path65"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,27.983625,10.314591)"
id="text65"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect65);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan
x="326.29349"
y="284.63383"
id="tspan18"><tspan
style="fill:#000000;stroke:none"
id="tspan17">0.2 m</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,2.0120841,5.8582719)"
id="text66"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect66);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan
x="279.80754"
y="284.63383"
id="tspan20"><tspan
style="fill:#000000;stroke:none"
id="tspan19">0.4 + 1.0 + 0.3 m = 1.7 m</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-35.385118,1.404148)"
id="text67"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect67);display:inline;fill:none;stroke:#000000;stroke-width:1.13386;stroke-linecap:round;stroke-linejoin:round"><tspan
x="247.66717"
y="284.63383"
id="tspan22"><tspan
style="fill:#000000;stroke:none"
id="tspan21">0.4 + 1.0 + 0.4 + 1.0 + 0.1 + 0.2 + 0.2 m = 3.3 m</tspan></tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 168.77046,80.570218 h 12.4892"
id="path67"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 166.39244,82.867536 h 2.07802"
id="path68"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 196.52763,80.570218 h 12.4892"
id="path69"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 194.14961,82.867536 h 2.07802"
id="path70"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 223.72646,80.570218 h 12.4892"
id="path71"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round"
d="m 221.34844,82.867536 h 2.07802"
id="path72"
sodipodi:nodetypes="cc" />
<path
style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
d="M 140.45158,73.993385 V 88.513586"
id="path73" />
<path
style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
d="M 168.714,73.993385 V 88.513586"
id="path74" />
<path
style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
d="M 196.30263,73.993385 V 88.513586"
id="path75" />
<path
style="fill:#000000;stroke:#808080;stroke-width:0.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
d="M 223.71141,73.993385 V 88.513586"
id="path76" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,23.84675,-15.672795)"
id="text76"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect76);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan
x="472.27943"
y="215.97367"
id="tspan23">Splitter &quot;A&quot; side is cable red side</tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-1.1460406,-9.3386453)"
id="text77"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect77);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan
x="366.318"
y="215.97367"
id="tspan24">Left (short) stub: Terminal block right side is cable red side</tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-35.928931,-3.0044956)"
id="text78"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:normal;font-family:'Sitka Display';-inkscape-font-specification:'Sitka Display';text-align:end;text-decoration-color:#000000;white-space:pre;shape-inside:url(#rect78);display:inline;fill:#000000;stroke:none;stroke-width:0.566929;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"><tspan
x="505.71223"
y="215.97367"
id="tspan25">Right (long) stub: Terminal block left side is cable red side</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,5 +1,5 @@
target extended-remote 192.168.1.97:2022
target extended-remote 192.168.27.119:2022
set print pretty on
set print elements 512
@ -29,7 +29,3 @@ define jdump
end
end
define reconnect
disconnect
target extended-remote 192.168.1.97:2022
end

View file

@ -209,7 +209,7 @@ void ADC1_IRQHandler(void) {
/* Read sample and apply threshold */
int sample = ADC1->DR; /* resets the EOC interrupt flag */
int bit = sample > THRESHOLD_ADC_COUNTS;
int bit = sample < THRESHOLD_ADC_COUNTS;
int bit_margin = ((int)sample) - THRESHOLD_ADC_COUNTS;
if (bit_margin < 0) {
bit_margin = -bit_margin;

View file

@ -273,6 +273,13 @@
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},

View file

@ -1,5 +1,16 @@
target extended-remote 192.168.1.95:2022
# blackmagic-1
# target extended-remote 192.168.27.252:2022
# blackmagic-2
# target extended-remote 193.168.27.114:2022
# blackmagic-3
target extended-remote 192.168.27.207:2022
# blackmagic-4
# target extended-remote 192.168.27.153:2022
set print pretty on
set print elements 512
@ -18,8 +29,3 @@ end
source ~/ref/PyCortexMDebug/cmdebug/svd_gdb.py
svd_load ~/ref/stm32square/svd/STM32G070.svd
define reconnect
disconnect
target extended-remote 192.168.1.95:2022
end

View file

@ -9,7 +9,7 @@ MUSL_DIR ?= upstream/musl
# Algorithm parameters
########################################################################################################################
# - none -
DRIVER_ADDR ?= 0
########################################################################################################################
# High-level build parameters
@ -91,7 +91,7 @@ CFLAGS += -fno-common -ffunction-sections -fdata-sections
COMMON_CFLAGS += -O$(OPT) -std=gnu2x -g
COMMON_CFLAGS += $(DEVICE_DEFINES)
COMMON_CFLAGS += -DDEBUG=$(DEBUG)
COMMON_CFLAGS += -DDEBUG=$(DEBUG) -DDRIVER_ADDR=$(DRIVER_ADDR)
GEN_HEADERS := $(BUILDDIR)/generated/waveform_tables.h

View file

@ -17,7 +17,6 @@ static void dma_tx_waveform(size_t table_size, const uint16_t *table);
#define SYNC_INTERVAL 13
static size_t time_to_sync = 0;
static size_t tx_bitpos = 0;
static size_t tx_sympos = 0;
static int tx_last_bit = 0;
@ -36,7 +35,37 @@ static union tx_buf_union *tx_buf_write = &tx_buf[2];
static bool idle_buf_ready = false;
void update_tx_buf(void);
int hex_to_int(char *hex, size_t len);
int hex_to_int(char *hex, size_t len) {
int rv = 0;
while (len--) {
rv = rv<<4;
char c = hex[len];
if ('0' <= c && c <= '9')
c = c - '0';
else if ('a' <= c && c <= 'f')
c = c - 'a' + 0xa;
else if ('A' <= c && c <= 'F')
c = c - 'A' + 0xa;
else
c = 0;
rv |= c;
}
return rv;
}
enum leds {
LED_ON = 1,
LED_PING = 2,
LED_OVERHEAT = 4,
LED_CONTROL_ERR = 8,
LED_INPUT_ERR = 16,
LED_OUTPUT_ERR = 32
};
char rxbuf[256];
size_t rxp = 0;
int main(void) {
/* Configure clocks for 64 MHz system clock.
@ -132,7 +161,9 @@ int main(void) {
GPIOB->OSPEEDR = (3<<0) | (3<<1) | (3<<3);
/* GPIOC:
* C0-C3: (testpoint)
* C0, C3: (testpoint)
* C1: Fan 2 PWM
* C2: Fan 1 PWM
* C4: RJ45 LED 4
* C5: RJ45 LED 3
* C6: Fuse monitor 7
@ -143,12 +174,14 @@ int main(void) {
* C11-C15: (testpoint)
*/
GPIOC->MODER =
IN(0) | IN(1) | IN(2) | IN(3) | IN(9) | IN(11) | IN(12) | IN(13) | IN(14) | IN(15) |
IN(0) | OUT(1) | OUT(2) | IN(3) | IN(9) | IN(11) | IN(12) | IN(13) | IN(14) | IN(15) |
OUT(4) | OUT(5) |
IN(6) | IN(7) | IN(8) |
AF(10);
GPIOC->OTYPER = (1<<1) | (1<<2);
GPIOC->AFR[1] = AFRH(10, 2);
GPIOC->OSPEEDR = (3<<10);
GPIOC->BRR = (1<<1) | (1<<2); /* Turn down fans (most fans don't turn off at 0% PWM) */
/* GPIOD:
* D0-D6: (testpoint)
@ -158,6 +191,22 @@ int main(void) {
GPIOD->MODER = IN(0) | IN(1) | IN(2) | IN(3) | IN(4) | IN(5) | IN(6) |
IN(8) | IN(9);
for (int i=0; i<10; i++) {
set_status_leds(LED_ON);
delay_us(250*1000);
set_status_leds(0);
delay_us(250*1000);
}
GPIOC->BSRR = (1<<1) | (1<<2); /* Enable fans */
for (int i=0; i<10; i++) {
set_status_leds(LED_ON);
delay_us(250*1000);
set_status_leds(0);
delay_us(250*1000);
}
TIM1->CCMR1 = (6<<TIM_CCMR1_OC2M_Pos) | TIM_CCMR1_OC2PE;
TIM1->CCMR2 = (6<<TIM_CCMR2_OC3M_Pos) | TIM_CCMR2_OC3PE;
TIM1->CCER = TIM_CCER_CC2E | TIM_CCER_CC2NE | TIM_CCER_CC2NP | TIM_CCER_CC3E | TIM_CCER_CC3NE | TIM_CCER_CC3P;
@ -177,38 +226,79 @@ int main(void) {
dma_tx_constant(COUNT_OF(waveform_zero_one), 0x00);
xfr_8b10b_encode_reset(&encoder_state_8b10b);
int i = 0;
int j = 0;
int k = 0;
int n = 0;
USART1->CR1 = /* 8-bit -> M1, M0 clear */
/* OVER8 clear. Use default 16x oversampling */
/* CMIF clear */
/* MME clear */
/* WAKE clear */
/* PCE, PS clear */
/* RXNEIE, other interrupts clear */
USART_CR1_TE
| USART_CR1_RE;
USART1->CR3 |= USART_CR3_DEM; /* Output DE signal on RTS pin */
USART1->BRR = 6667; /* Set baudrate to 9600 Bd */
USART1->CR1 |= USART_CR1_UE; /* And... go! */
int rj45_rx_ctr = 0;
int ping_ctr = 0;
int control_err_ctr = 0;
while (23) {
i++;
j++;
i %= 6;
j %= 4;
delay_us(30000);
set_rj45_leds(1 << j);
set_status_leds(1 << i);
if (i == 0) {
k++;
if (k == 16) {
k = 0;
n++;
if (n == 16) {
n = 0;
if (rj45_rx_ctr) {
set_rj45_leds(0x5);
rj45_rx_ctr--;
} else {
set_rj45_leds(0x0);
}
int leds = LED_ON;
if (ping_ctr) {
leds |= LED_PING;
ping_ctr--;
}
if (control_err_ctr) {
leds |= LED_CONTROL_ERR;
control_err_ctr--;
}
set_status_leds(leds);
int isr = USART1->ISR;
if ((isr & USART_ISR_ORE) || (isr & USART_ISR_FE)) {
USART1->ICR = USART_ICR_ORECF | USART_ICR_FECF;
}
if (isr & USART_ISR_RXNE_RXFNE) {
rj45_rx_ctr = 20000;
char c = USART1->RDR;
if (c == '\n') {
if (rxp > 2 && rxp != 4*16*3) {
control_err_ctr = 1000000;
rxp = 0;
continue;
}
for (size_t i=0; i<16; i++) {
int brightness = hex_to_int(&rxbuf[DRIVER_ADDR*16*3 + i*3], 1);
int channels = hex_to_int(&rxbuf[DRIVER_ADDR*16*3 + i*3 + 1], 2);
tx_buf_write->packet.channels[i] = channels;
if ((i&1) == 0) {
tx_buf_write->packet.brightness[i>>1] = brightness;
} else {
tx_buf_write->packet.brightness[i>>1] |= brightness<<4;
}
}
rxp = 0;
ping_ctr = 500000;
update_tx_buf();
} else {
if (rxp <= sizeof(rxbuf)) {
rxbuf[rxp] = c;
rxp ++;
}
}
uint8_t b = (k < 8) ? (1<<k) : ~(1<<(k-8));
memset(tx_buf_write, 0, sizeof(*tx_buf_write));
for (size_t i=0; i<COUNT_OF(tx_buf_write->packet.channels); i++) {
tx_buf_write->packet.channels[i] = 0xff;
}
for (size_t i=0; i<COUNT_OF(tx_buf_write->packet.brightness); i++) {
tx_buf_write->packet.brightness[i] = 0xff; //(n<<4) | n;
}
update_tx_buf();
}
}
}
@ -243,7 +333,6 @@ size_t cnd_pos = 0;
void DMA1_Channel1_IRQHandler() {
static int transfer_errors = 0;
static int current_symbol = 0;
static int idle_symbol = 0;
if (DMA1->ISR & DMA_ISR_TEIF1) {
transfer_errors ++;
@ -272,32 +361,23 @@ void DMA1_Channel1_IRQHandler() {
sym_arr[sym_pos] = -255;
idle_symbol++;
if (idle_symbol == 3) {
current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, -K23_7);
idle_symbol = 0;
} else if (tx_sympos == sizeof(struct data_packet)) {
if (time_to_sync > 0) {
current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, -K27_7);
sym_arr[sym_pos] = current_symbol;
time_to_sync--;
} else {
current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, -K28_1);
sym_arr[sym_pos] = current_symbol;
packet_rng_state = xorshift32(1);
time_to_sync = SYNC_INTERVAL;
}
if (tx_sympos == sizeof(struct data_packet)) {
if (idle_buf_ready) {
union tx_buf_union *tmp = tx_buf_idle;
tx_buf_idle = tx_buf_read;
tx_buf_read = tmp;
idle_buf_ready = false;
}
tx_sympos = 0;
current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, -K28_1);
sym_arr[sym_pos] = current_symbol;
packet_rng_state = xorshift32(1);
tx_sympos = 0;
} else {
current_symbol = xfr_8b10b_encode(&encoder_state_8b10b, -K23_7);
sym_arr[sym_pos] = current_symbol;
}
} else {
uint8_t b = tx_buf_read->bytes[tx_sympos];

View file

@ -2,21 +2,21 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="5mm"
height="2.5mm"
viewBox="0 0 18.897638 9.4488189"
sodipodi:docname="led_tape.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata
id="metadata8">
<rdf:RDF>
@ -25,7 +25,6 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
@ -40,15 +39,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1030"
inkscape:window-width="3208"
inkscape:window-height="1981"
id="namedview4"
showgrid="false"
inkscape:zoom="0.99999999"
inkscape:cx="119.84761"
inkscape:cy="40.617263"
inkscape:window-x="0"
inkscape:window-y="50"
inkscape:zoom="0.12102105"
inkscape:cx="-1222.9277"
inkscape:cy="-1739.3668"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:window-maximized="0"
inkscape:current-layer="svg2"
inkscape:measure-start="288.323,-37.2999"
@ -59,27 +58,30 @@
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:document-units="mm"
inkscape:snap-global="false" />
inkscape:snap-global="false"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
<g
id="g7297-4"
transform="matrix(1.3935337,0,0,1.5391961,-1554.0801,276.53669)"
style="stroke-width:20.64532852;stroke-miterlimit:4;stroke-dasharray:none;fill:none;stroke:#bfbfbf">
transform="matrix(1.5310128,0,0,1.6910455,-1737.4329,315.54284)"
style="fill:none;stroke:#bfbfbf;stroke-width:20.6453;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path7288-9"
d="M 1344,-246.55117 V 2697.4487 H 3791.9999 V -246.55117 Z"
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453276;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7290-2"
d="M 1344,-246.55117 3791.9999,2697.4487"
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.64532852;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path7292-0"
d="M 3791.9999,-246.55117 1344,2697.4487"
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.64532852;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill:none;fill-rule:evenodd;stroke:#bfbfbf;stroke-width:20.6453;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<path
inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 1,002 KiB

After

Width:  |  Height:  |  Size: 1,002 KiB

Before After
Before After

96
len_map.py Normal file
View file

@ -0,0 +1,96 @@
#!/usr/bin/env python3
# This script calculates the optimal cut distribution to reduce waste while matching the desired 2:2:4 segment count
# It applies brute force since the problem space is very small.
import numpy as np
import itertools
l_tot = 500
a, b, c = 94, 124, 80
n, m, l = 2, 2, 4
arr = np.array([a, b, c], dtype=int)
arr_count = np.array([n, m, l], dtype=int)
# Find all possible splits of a [l_tot] m led tape into segments of lengths [a], [b] and [c] that leave a remainder
# that's smaller than any of [a], [b] and [c].
candidates = []
for i in range(l_tot//a + 1):
l_rem_i = l_tot - i*a
if l_rem_i < 0:
continue
for j in range(l_rem_i//b + 1):
l_rem_j = l_rem_i - j*b
if l_rem_j < 0:
continue
k = l_rem_j // c
l_rem_k = l_rem_j - k*c
print(f'Candidate: ({i} {j} {k}) {i=}*{a} {j=}*{b=} {k=}*{c=} => remainder {l_rem_k}')
candidates.append((i, j, k))
candidates = np.array(candidates, dtype=int)
print()
# Find all ways to combine the cuts found above to cut [num_rolls] into segments, where the amount of segments of length
# [a], [b], and [c] that we get in total best matches the proportions we need ([n] times [a], [m] times [b], [l] times
# [c], so 2:2:4 times for 94:124:80 cm)
num_rolls = 3
indices_seen = set()
out = []
for indices in itertools.product(candidates, repeat=num_rolls):
indices = np.array(indices)
index_tup = tuple(sorted(map(tuple, indices)))
if index_tup in indices_seen:
continue
indices_seen.add(index_tup)
rem = l_tot - (indices * arr).sum(axis=1)
rem_total = rem.sum()
count_total = indices.sum(axis=0).astype(float)
count_total /= arr_count
spread = count_total.max() - count_total.min()
if spread > 2 or (rem < 2).any():
continue
print(indices.tolist(), f'{rem_total=} {spread=}')
out.append((spread, rem_total, indices.tolist(), rem.tolist(), indices.sum(axis=0).tolist()))
print()
# Print out the n best matches found. Sort first by how close we match our target 2:2:4 ratio, then by how much waste
# we leave.
print('Best matches:')
for spread, rem_total, indices, rem, index_sum in sorted(out, key=lambda x: (x[0], x[1]))[:25]:
print(indices, f'{spread=} {rem_total=} {rem=} {index_sum=}')
# Here's the output for future reference. There are a number of combinations that produce 68 cm of waste split across
# three 5m rolls of tape. We selected # 1 since it leaves leftovers of useful lengths.
#
# Best matches:
# [[0, 0, 6], [0, 4, 0], [4, 0, 1]] spread=0.25 rem_total=68 rem=[20, 4, 44] index_sum=[4, 4, 7]
# [[0, 0, 6], [1, 3, 0], [3, 1, 1]] spread=0.25 rem_total=68 rem=[20, 34, 14] index_sum=[4, 4, 7]
# [[0, 2, 3], [0, 2, 3], [4, 0, 1]] spread=0.25 rem_total=68 rem=[12, 12, 44] index_sum=[4, 4, 7]
# [[0, 2, 3], [1, 1, 3], [3, 1, 1]] spread=0.25 rem_total=68 rem=[12, 42, 14] index_sum=[4, 4, 7]
# [[0, 2, 3], [2, 1, 2], [2, 1, 2]] spread=0.25 rem_total=68 rem=[12, 28, 28] index_sum=[4, 4, 7]
# [[0, 3, 1], [1, 0, 5], [3, 1, 1]] spread=0.25 rem_total=68 rem=[48, 6, 14] index_sum=[4, 4, 7]
# [[0, 4, 0], [1, 0, 5], [3, 0, 2]] spread=0.25 rem_total=68 rem=[4, 6, 58] index_sum=[4, 4, 7]
# [[1, 0, 5], [1, 3, 0], [2, 1, 2]] spread=0.25 rem_total=68 rem=[6, 34, 28] index_sum=[4, 4, 7]
# [[0, 0, 6], [0, 3, 1], [3, 1, 1]] spread=0.5 rem_total=82 rem=[20, 48, 14] index_sum=[3, 4, 8]
# [[0, 0, 6], [0, 4, 0], [3, 0, 2]] spread=0.5 rem_total=82 rem=[20, 4, 58] index_sum=[3, 4, 8]
# [[0, 0, 6], [1, 3, 0], [2, 1, 2]] spread=0.5 rem_total=82 rem=[20, 34, 28] index_sum=[3, 4, 8]
# [[0, 1, 4], [0, 2, 3], [3, 1, 1]] spread=0.5 rem_total=82 rem=[56, 12, 14] index_sum=[3, 4, 8]
# [[0, 2, 3], [0, 2, 3], [3, 0, 2]] spread=0.5 rem_total=82 rem=[12, 12, 58] index_sum=[3, 4, 8]
# [[0, 2, 3], [1, 0, 5], [2, 2, 0]] spread=0.5 rem_total=82 rem=[12, 6, 64] index_sum=[3, 4, 8]
# [[0, 2, 3], [1, 1, 3], [2, 1, 2]] spread=0.5 rem_total=82 rem=[12, 42, 28] index_sum=[3, 4, 8]
# [[0, 3, 1], [1, 0, 5], [2, 1, 2]] spread=0.5 rem_total=82 rem=[48, 6, 28] index_sum=[3, 4, 8]
# [[0, 4, 0], [1, 0, 5], [2, 0, 3]] spread=0.5 rem_total=82 rem=[4, 6, 72] index_sum=[3, 4, 8]
# [[1, 0, 5], [1, 1, 3], [1, 3, 0]] spread=0.5 rem_total=82 rem=[6, 42, 34] index_sum=[3, 4, 8]
# [[0, 0, 6], [0, 3, 1], [4, 0, 1]] spread=0.5 rem_total=112 rem=[20, 48, 44] index_sum=[4, 3, 8]
# [[0, 0, 6], [1, 2, 1], [3, 1, 1]] spread=0.5 rem_total=112 rem=[20, 78, 14] index_sum=[4, 3, 8]
# [[0, 0, 6], [1, 3, 0], [3, 0, 2]] spread=0.5 rem_total=112 rem=[20, 34, 58] index_sum=[4, 3, 8]
# [[0, 0, 6], [2, 1, 2], [2, 2, 0]] spread=0.5 rem_total=112 rem=[20, 28, 64] index_sum=[4, 3, 8]
# [[0, 1, 4], [0, 2, 3], [4, 0, 1]] spread=0.5 rem_total=112 rem=[56, 12, 44] index_sum=[4, 3, 8]
# [[0, 1, 4], [1, 1, 3], [3, 1, 1]] spread=0.5 rem_total=112 rem=[56, 42, 14] index_sum=[4, 3, 8]
# [[0, 1, 4], [2, 1, 2], [2, 1, 2]] spread=0.5 rem_total=112 rem=[56, 28, 28] index_sum=[4, 3, 8]

View file

@ -90,6 +90,21 @@ body {
"9": 0x33,
"/": 0x0a,
"\\": 0x05,
".": 0x04,
",": 0x08,
"_": 0x40,
"!": 0x53,
"?": 0x52,
"*": 0x0f,
":": 0x50,
"(": 0x06,
"<": 0x06,
"[": 0xd0,
")": 0x09,
">": 0x09,
"]": 0x70,
"|": 0x20,
"#": 0xff,
};
function map_digit(codepoint) {

View file

@ -0,0 +1,20 @@
(footprint "double_wire_pads" (version 20221018) (generator pcbnew)
(layer "F.Cu")
(attr smd)
(fp_text reference "REF**" (at 0 -0.5 unlocked) (layer "F.SilkS")
(effects (font (size 1 1) (thickness 0.1)))
(tstamp cf043f51-e415-43dc-9a1a-f1be56a11d98)
)
(fp_text value "double_wire_pads" (at 0 1 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp db15ba4e-d2d9-45a1-8d68-26a6caa8a2ab)
)
(fp_text user "${REFERENCE}" (at 0 2.5 unlocked) (layer "F.Fab")
(effects (font (size 1 1) (thickness 0.15)))
(tstamp 7cca8717-8e6a-45c5-92f3-f50e60376275)
)
(pad "1" thru_hole rect (at -2.5 0 90) (size 8 3.5) (drill 2) (layers "*.Cu" "*.Mask")
(thermal_bridge_angle 45) (tstamp a9430b68-d1fa-4341-b8d1-e783a3cb168d))
(pad "2" thru_hole rect (at 2.5 0 90) (size 8 3.5) (drill 2) (layers "*.Cu" "*.Mask")
(thermal_bridge_angle 45) (tstamp c60f0d20-a2b9-415e-b867-94b73ce8e55d))
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,4 @@
(fp_lib_table
(version 7)
(lib (name "footprints")(type "KiCad")(uri "${KIPRJMOD}/footprints.pretty")(options "")(descr ""))
)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,83 @@
{
"board": {
"active_layer": 37,
"active_layer_preset": "All Layers",
"auto_track_width": true,
"hidden_netclasses": [],
"hidden_nets": [],
"high_contrast_mode": 0,
"net_color_mode": 1,
"opacity": {
"images": 0.6,
"pads": 1.0,
"tracks": 1.0,
"vias": 1.0,
"zones": 0.6
},
"selection_filter": {
"dimensions": true,
"footprints": true,
"graphics": true,
"keepouts": true,
"lockedItems": false,
"otherItems": true,
"pads": true,
"text": true,
"tracks": true,
"vias": true,
"zones": true
},
"visible_items": [
0,
1,
2,
3,
4,
5,
8,
9,
10,
11,
12,
13,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
32,
33,
34,
35,
36,
39,
40
],
"visible_layers": "fffffff_ffffffff",
"zone_display_mode": 0
},
"git": {
"repo_password": "",
"repo_type": "",
"repo_username": "",
"ssh_key": ""
},
"meta": {
"filename": "wire-splitter-pcb.kicad_prl",
"version": 3
},
"project": {
"files": []
}
}

View file

@ -0,0 +1,524 @@
{
"board": {
"3dviewports": [],
"design_settings": {
"defaults": {
"apply_defaults_to_fp_fields": false,
"apply_defaults_to_fp_shapes": false,
"apply_defaults_to_fp_text": false,
"board_outline_line_width": 0.049999999999999996,
"copper_line_width": 0.19999999999999998,
"copper_text_italic": false,
"copper_text_size_h": 1.5,
"copper_text_size_v": 1.5,
"copper_text_thickness": 0.3,
"copper_text_upright": false,
"courtyard_line_width": 0.049999999999999996,
"dimension_precision": 4,
"dimension_units": 3,
"dimensions": {
"arrow_length": 1270000,
"extension_offset": 500000,
"keep_text_aligned": true,
"suppress_zeroes": false,
"text_position": 0,
"units_format": 1
},
"fab_line_width": 0.09999999999999999,
"fab_text_italic": false,
"fab_text_size_h": 1.0,
"fab_text_size_v": 1.0,
"fab_text_thickness": 0.15,
"fab_text_upright": false,
"other_line_width": 0.09999999999999999,
"other_text_italic": false,
"other_text_size_h": 1.0,
"other_text_size_v": 1.0,
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.762,
"height": 1.524,
"width": 1.524
},
"silk_line_width": 0.09999999999999999,
"silk_text_italic": false,
"silk_text_size_h": 1.0,
"silk_text_size_v": 1.0,
"silk_text_thickness": 0.09999999999999999,
"silk_text_upright": false,
"zones": {
"min_clearance": 0.5
}
},
"diff_pair_dimensions": [
{
"gap": 0.0,
"via_gap": 0.0,
"width": 0.0
}
],
"drc_exclusions": [],
"meta": {
"version": 2
},
"rule_severities": {
"annular_width": "error",
"clearance": "error",
"connection_width": "warning",
"copper_edge_clearance": "error",
"copper_sliver": "warning",
"courtyards_overlap": "error",
"diff_pair_gap_out_of_range": "error",
"diff_pair_uncoupled_length_too_long": "error",
"drill_out_of_range": "error",
"duplicate_footprints": "warning",
"extra_footprint": "warning",
"footprint": "error",
"footprint_type_mismatch": "ignore",
"hole_clearance": "error",
"hole_near_hole": "error",
"invalid_outline": "error",
"isolated_copper": "warning",
"item_on_disabled_layer": "error",
"items_not_allowed": "error",
"length_out_of_range": "error",
"lib_footprint_issues": "warning",
"lib_footprint_mismatch": "warning",
"malformed_courtyard": "error",
"microvia_drill_out_of_range": "error",
"missing_courtyard": "ignore",
"missing_footprint": "warning",
"net_conflict": "warning",
"npth_inside_courtyard": "ignore",
"padstack": "warning",
"pth_inside_courtyard": "ignore",
"shorting_items": "error",
"silk_edge_clearance": "warning",
"silk_over_copper": "warning",
"silk_overlap": "warning",
"skew_out_of_range": "error",
"solder_mask_bridge": "error",
"starved_thermal": "error",
"text_height": "warning",
"text_thickness": "warning",
"through_hole_pad_without_hole": "error",
"too_many_vias": "error",
"track_dangling": "warning",
"track_width": "error",
"tracks_crossing": "error",
"unconnected_items": "error",
"unresolved_variable": "error",
"via_dangling": "warning",
"zones_intersect": "error"
},
"rules": {
"max_error": 0.005,
"min_clearance": 0.0,
"min_connection": 0.0,
"min_copper_edge_clearance": 0.5,
"min_hole_clearance": 0.25,
"min_hole_to_hole": 0.25,
"min_microvia_diameter": 0.19999999999999998,
"min_microvia_drill": 0.09999999999999999,
"min_resolved_spokes": 2,
"min_silk_clearance": 0.0,
"min_text_height": 0.7999999999999999,
"min_text_thickness": 0.08,
"min_through_hole_diameter": 0.3,
"min_track_width": 0.0,
"min_via_annular_width": 0.09999999999999999,
"min_via_diameter": 0.5,
"solder_mask_to_copper_clearance": 0.0,
"use_height_for_length_calcs": true
},
"teardrop_options": [
{
"td_onpadsmd": true,
"td_onroundshapesonly": false,
"td_ontrackend": false,
"td_onviapad": true
}
],
"teardrop_parameters": [
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_round_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_rect_shape",
"td_width_to_size_filter_ratio": 0.9
},
{
"td_allow_use_two_tracks": true,
"td_curve_segcount": 0,
"td_height_ratio": 1.0,
"td_length_ratio": 0.5,
"td_maxheight": 2.0,
"td_maxlen": 1.0,
"td_on_pad_in_zone": false,
"td_target_name": "td_track_end",
"td_width_to_size_filter_ratio": 0.9
}
],
"track_widths": [
0.0,
1.8
],
"tuning_pattern_settings": {
"diff_pair_defaults": {
"corner_radius_percentage": 100,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.1,
"single_sided": false,
"spacing": 0.6
},
"diff_pair_skew_defaults": {
"corner_radius_percentage": 100,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.1,
"single_sided": false,
"spacing": 0.6
},
"single_track_defaults": {
"corner_radius_percentage": 100,
"corner_style": 1,
"max_amplitude": 1.0,
"min_amplitude": 0.1,
"single_sided": false,
"spacing": 0.6
}
},
"via_dimensions": [
{
"diameter": 0.0,
"drill": 0.0
}
],
"zones_allow_external_fillets": false
},
"layer_presets": [],
"viewports": []
},
"boards": [],
"cvpcb": {
"equivalence_files": []
},
"erc": {
"erc_exclusions": [],
"meta": {
"version": 0
},
"pin_map": [
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
1,
0,
1,
2
],
[
0,
1,
0,
0,
0,
0,
1,
1,
2,
1,
1,
2
],
[
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2
],
[
1,
1,
1,
1,
1,
0,
1,
1,
1,
1,
1,
2
],
[
0,
0,
0,
1,
0,
0,
1,
0,
0,
0,
0,
2
],
[
0,
2,
1,
2,
0,
0,
1,
0,
2,
2,
2,
2
],
[
0,
2,
0,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
0,
2,
1,
1,
0,
0,
1,
0,
2,
0,
0,
2
],
[
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]
],
"rule_severities": {
"bus_definition_conflict": "error",
"bus_entry_needed": "error",
"bus_to_bus_conflict": "error",
"bus_to_net_conflict": "error",
"conflicting_netclasses": "error",
"different_unit_footprint": "error",
"different_unit_net": "error",
"duplicate_reference": "error",
"duplicate_sheet_names": "error",
"endpoint_off_grid": "warning",
"extra_units": "error",
"global_label_dangling": "warning",
"hier_label_mismatch": "error",
"label_dangling": "error",
"lib_symbol_issues": "warning",
"missing_bidi_pin": "warning",
"missing_input_pin": "warning",
"missing_power_pin": "error",
"missing_unit": "warning",
"multiple_net_names": "warning",
"net_not_bus_member": "warning",
"no_connect_connected": "warning",
"no_connect_dangling": "warning",
"pin_not_connected": "error",
"pin_not_driven": "error",
"pin_to_pin": "warning",
"power_pin_not_driven": "error",
"similar_labels": "warning",
"simulation_model_issue": "ignore",
"unannotated": "error",
"unit_value_mismatch": "error",
"unresolved_variable": "error",
"wire_dangling": "error"
}
},
"libraries": {
"pinned_footprint_libs": [],
"pinned_symbol_libs": []
},
"meta": {
"filename": "wire-splitter-pcb.kicad_pro",
"version": 1
},
"net_settings": {
"classes": [
{
"bus_width": 12,
"clearance": 0.2,
"diff_pair_gap": 0.25,
"diff_pair_via_gap": 0.25,
"diff_pair_width": 0.2,
"line_style": 0,
"microvia_diameter": 0.3,
"microvia_drill": 0.1,
"name": "Default",
"pcb_color": "rgba(0, 0, 0, 0.000)",
"schematic_color": "rgba(0, 0, 0, 0.000)",
"track_width": 0.2,
"via_diameter": 0.6,
"via_drill": 0.3,
"wire_width": 6
}
],
"meta": {
"version": 3
},
"net_colors": null,
"netclass_assignments": null,
"netclass_patterns": []
},
"pcbnew": {
"last_paths": {
"gencad": "",
"idf": "",
"netlist": "",
"plot": "gerber",
"pos_files": "",
"specctra_dsn": "",
"step": "",
"svg": "",
"vrml": ""
},
"page_layout_descr_file": ""
},
"schematic": {
"annotate_start_num": 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,
"pin_symbol_size": 25.0,
"text_offset_ratio": 0.15
},
"legacy_lib_dir": "",
"legacy_lib_list": [],
"meta": {
"version": 1
},
"net_format_name": "",
"page_layout_descr_file": "",
"plot_directory": "",
"spice_current_sheet_as_root": false,
"spice_external_command": "spice \"%I\"",
"spice_model_current_sheet_as_root": true,
"spice_save_all_currents": false,
"spice_save_all_voltages": false,
"subpart_first_id": 65,
"subpart_id_separator": 0
},
"sheets": [
[
"195662ba-81d5-4ede-8600-7793b163223d",
""
]
],
"text_variables": {}
}

View file

@ -0,0 +1,232 @@
(kicad_sch (version 20230121) (generator eeschema)
(uuid 195662ba-81d5-4ede-8600-7793b163223d)
(paper "A4")
(lib_symbols
(symbol "Connector_Generic:Conn_01x02" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
(property "Reference" "J" (at 0 2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "Conn_01x02" (at 0 -5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_keywords" "connector" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "Conn_01x02_1_1"
(rectangle (start -1.27 -2.413) (end 0 -2.667)
(stroke (width 0.1524) (type default))
(fill (type none))
)
(rectangle (start -1.27 0.127) (end 0 -0.127)
(stroke (width 0.1524) (type default))
(fill (type none))
)
(rectangle (start -1.27 1.27) (end 1.27 -3.81)
(stroke (width 0.254) (type default))
(fill (type background))
)
(pin passive line (at -5.08 0 0) (length 3.81)
(name "Pin_1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at -5.08 -2.54 0) (length 3.81)
(name "Pin_2" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
)
(junction (at 113.03 45.72) (diameter 0) (color 0 0 0 0)
(uuid 11901a65-2a66-4376-bc4b-2d8758ac6ebd)
)
(junction (at 96.52 48.26) (diameter 0) (color 0 0 0 0)
(uuid 25e2cdac-7cda-483d-8c90-d45ab302f9fa)
)
(junction (at 115.57 48.26) (diameter 0) (color 0 0 0 0)
(uuid 2ff7d7ae-c0ba-4e08-85c9-06748d1874ca)
)
(junction (at 93.98 45.72) (diameter 0) (color 0 0 0 0)
(uuid bdc97da8-8c62-4d80-bb7b-b5ab100d9cab)
)
(wire (pts (xy 93.98 45.72) (xy 74.93 45.72))
(stroke (width 0) (type default))
(uuid 07f5fca7-e238-4617-83db-ddecb948484b)
)
(wire (pts (xy 96.52 48.26) (xy 96.52 43.18))
(stroke (width 0) (type default))
(uuid 378be16c-ca77-4f0f-8148-d7e5ec9e71bc)
)
(wire (pts (xy 115.57 48.26) (xy 115.57 43.18))
(stroke (width 0) (type default))
(uuid 3f6fe1ad-8658-4acc-b474-f5ff782a9257)
)
(wire (pts (xy 74.93 45.72) (xy 74.93 43.18))
(stroke (width 0) (type default))
(uuid 5ae13bad-5734-46ea-b6bd-35181b675fd2)
)
(wire (pts (xy 115.57 48.26) (xy 134.62 48.26))
(stroke (width 0) (type default))
(uuid 5e097960-a0ee-4b3d-90ba-cc2b7d265059)
)
(wire (pts (xy 113.03 45.72) (xy 93.98 45.72))
(stroke (width 0) (type default))
(uuid 85fadff3-c723-43ca-8eef-c23e714d5511)
)
(wire (pts (xy 134.62 48.26) (xy 134.62 43.18))
(stroke (width 0) (type default))
(uuid 864cf265-10b6-42e7-9a0f-6e36f5620579)
)
(wire (pts (xy 113.03 45.72) (xy 113.03 43.18))
(stroke (width 0) (type default))
(uuid a9465065-d3c4-4c0e-861b-fe688b235ca0)
)
(wire (pts (xy 132.08 43.18) (xy 132.08 45.72))
(stroke (width 0) (type default))
(uuid c40a6ab7-493d-45c7-ab04-9c8f1435b1af)
)
(wire (pts (xy 132.08 45.72) (xy 113.03 45.72))
(stroke (width 0) (type default))
(uuid c521285d-d0ce-4121-8696-4937b57235b9)
)
(wire (pts (xy 93.98 45.72) (xy 93.98 43.18))
(stroke (width 0) (type default))
(uuid fcf60d41-ae8f-4fa7-8c00-bc9b2c38c1c7)
)
(wire (pts (xy 77.47 43.18) (xy 77.47 48.26))
(stroke (width 0) (type default))
(uuid fd2f0900-c47a-4749-9514-9fd90324daa1)
)
(wire (pts (xy 77.47 48.26) (xy 96.52 48.26))
(stroke (width 0) (type default))
(uuid fdb50a5a-5378-4611-b9dc-591a155e823e)
)
(wire (pts (xy 96.52 48.26) (xy 115.57 48.26))
(stroke (width 0) (type default))
(uuid ff1e020a-f7f8-4c43-a044-d249d4aa71d6)
)
(symbol (lib_id "Connector_Generic:Conn_01x02") (at 74.93 38.1 90) (unit 1)
(in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
(uuid 6a271670-9cc1-48a8-90d6-28daa1d0704e)
(property "Reference" "J1" (at 80.01 36.83 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Value" "Conn_01x02" (at 80.01 39.37 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Footprint" "footprints:double_wire_pads" (at 74.93 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 74.93 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 440d6680-f1d2-4b0c-bfa2-575d5ad5a1cc))
(pin "2" (uuid cbce39f0-6575-422a-b849-38f313ea95d4))
(instances
(project "wire-splitter-pcb"
(path "/195662ba-81d5-4ede-8600-7793b163223d"
(reference "J1") (unit 1)
)
)
)
)
(symbol (lib_id "Connector_Generic:Conn_01x02") (at 93.98 38.1 90) (unit 1)
(in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
(uuid 98bb5b63-4f36-4e7d-bf0a-526230579ce9)
(property "Reference" "J2" (at 99.06 36.83 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Value" "Conn_01x02" (at 99.06 39.37 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Footprint" "footprints:double_wire_pads" (at 93.98 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 93.98 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid ead486db-12cf-41d6-9f1b-873239ef776d))
(pin "2" (uuid 48bec30a-e718-4403-a318-58d0bd73f6e6))
(instances
(project "wire-splitter-pcb"
(path "/195662ba-81d5-4ede-8600-7793b163223d"
(reference "J2") (unit 1)
)
)
)
)
(symbol (lib_id "Connector_Generic:Conn_01x02") (at 113.03 38.1 90) (unit 1)
(in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
(uuid a1041d02-3ff3-473d-925c-8c8475517a5f)
(property "Reference" "J3" (at 118.11 36.83 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Value" "Conn_01x02" (at 118.11 39.37 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Footprint" "footprints:double_wire_pads" (at 113.03 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 113.03 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 308d78e4-3d93-49f6-951e-ae626a2368c5))
(pin "2" (uuid 916793c7-12eb-470f-a4c1-ed63ae92a469))
(instances
(project "wire-splitter-pcb"
(path "/195662ba-81d5-4ede-8600-7793b163223d"
(reference "J3") (unit 1)
)
)
)
)
(symbol (lib_id "Connector_Generic:Conn_01x02") (at 132.08 38.1 90) (unit 1)
(in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
(uuid d6a889e8-fd02-44b0-9b63-d0994d53dbe0)
(property "Reference" "J4" (at 137.16 36.83 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Value" "Conn_01x02" (at 137.16 39.37 90)
(effects (font (size 1.27 1.27)) (justify right))
)
(property "Footprint" "footprints:double_wire_pads" (at 132.08 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "~" (at 132.08 38.1 0)
(effects (font (size 1.27 1.27)) hide)
)
(pin "1" (uuid 4a718f90-5ec7-4f1a-8d1c-bdd68c448396))
(pin "2" (uuid 416929de-6439-4cff-8d42-c31512b88062))
(instances
(project "wire-splitter-pcb"
(path "/195662ba-81d5-4ede-8600-7793b163223d"
(reference "J4") (unit 1)
)
)
)
)
(sheet_instances
(path "/" (page "1"))
)
)