Build WIP
This commit is contained in:
parent
400ad2288d
commit
7f376f46d6
5 changed files with 1687 additions and 24 deletions
1065
8seg_digit_circuit.svg
Normal file
1065
8seg_digit_circuit.svg
Normal file
File diff suppressed because it is too large
Load diff
|
After Width: | Height: | Size: 51 KiB |
500
8seg_strand_power_distribution.svg
Normal file
500
8seg_strand_power_distribution.svg
Normal 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 "A" 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 |
|
|
@ -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;
|
||||
|
|
|
|||
48
led_tape.svg
48
led_tape.svg
|
|
@ -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 |
96
len_map.py
Normal file
96
len_map.py
Normal 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]
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue