Compare commits

..

No commits in common. "main" and "wip" have entirely different histories.
main ... wip

19 changed files with 90 additions and 97436 deletions

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 51 KiB

View file

@ -1,500 +0,0 @@
<?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>

Before

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,5 +1,5 @@
target extended-remote 192.168.27.119:2022
target extended-remote 192.168.1.97:2022
set print pretty on
set print elements 512
@ -29,3 +29,7 @@ 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,13 +273,6 @@
],
"zones_allow_external_fillets": false
},
"ipc2581": {
"dist": "",
"distpn": "",
"internal_id": "",
"mfg": "",
"mpn": ""
},
"layer_presets": [],
"viewports": []
},

View file

@ -1,16 +1,5 @@
# 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
target extended-remote 192.168.1.95:2022
set print pretty on
set print elements 512
@ -29,3 +18,8 @@ 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
########################################################################################################################
DRIVER_ADDR ?= 0
# - none -
########################################################################################################################
# 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) -DDRIVER_ADDR=$(DRIVER_ADDR)
COMMON_CFLAGS += -DDEBUG=$(DEBUG)
GEN_HEADERS := $(BUILDDIR)/generated/waveform_tables.h

View file

@ -17,6 +17,7 @@ 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;
@ -35,37 +36,7 @@ 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.
@ -161,9 +132,7 @@ int main(void) {
GPIOB->OSPEEDR = (3<<0) | (3<<1) | (3<<3);
/* GPIOC:
* C0, C3: (testpoint)
* C1: Fan 2 PWM
* C2: Fan 1 PWM
* C0-C3: (testpoint)
* C4: RJ45 LED 4
* C5: RJ45 LED 3
* C6: Fuse monitor 7
@ -174,14 +143,12 @@ int main(void) {
* C11-C15: (testpoint)
*/
GPIOC->MODER =
IN(0) | OUT(1) | OUT(2) | IN(3) | IN(9) | IN(11) | IN(12) | IN(13) | IN(14) | IN(15) |
IN(0) | IN(1) | IN(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)
@ -191,22 +158,6 @@ 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;
@ -226,79 +177,38 @@ int main(void) {
dma_tx_constant(COUNT_OF(waveform_zero_one), 0x00);
xfr_8b10b_encode_reset(&encoder_state_8b10b);
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;
int i = 0;
int j = 0;
int k = 0;
int n = 0;
while (23) {
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 ++;
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;
}
}
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();
}
}
}
@ -333,6 +243,7 @@ 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 ++;
@ -361,24 +272,33 @@ void DMA1_Channel1_IRQHandler() {
sym_arr[sym_pos] = -255;
if (tx_sympos == sizeof(struct data_packet)) {
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 (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;
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;
}
tx_sympos = 0;
} else {
uint8_t b = tx_buf_read->bytes[tx_sympos];
packet_rng_state = xorshift32(packet_rng_state);

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="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/">
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
@ -25,6 +25,7 @@
<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>
@ -39,15 +40,15 @@
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3208"
inkscape:window-height="1981"
inkscape:window-width="1920"
inkscape:window-height="1030"
id="namedview4"
showgrid="false"
inkscape:zoom="0.12102105"
inkscape:cx="-1222.9277"
inkscape:cy="-1739.3668"
inkscape:window-x="26"
inkscape:window-y="23"
inkscape:zoom="0.99999999"
inkscape:cx="119.84761"
inkscape:cy="40.617263"
inkscape:window-x="0"
inkscape:window-y="50"
inkscape:window-maximized="0"
inkscape:current-layer="svg2"
inkscape:measure-start="288.323,-37.2999"
@ -58,30 +59,27 @@
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:document-units="mm"
inkscape:snap-global="false"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1" />
inkscape:snap-global="false" />
<g
id="g7297-4"
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">
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">
<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.6453;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.6453276;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.6453;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.64532852;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.6453;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.64532852;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

View file

@ -1,96 +0,0 @@
#!/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,21 +90,6 @@ 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

@ -1,20 +0,0 @@
(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

@ -1,4 +0,0 @@
(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

@ -1,83 +0,0 @@
{
"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

@ -1,524 +0,0 @@
{
"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

@ -1,232 +0,0 @@
(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"))
)
)