Compare commits
10 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab1e29d663 | ||
|
|
2dcae5db6f | ||
|
|
7b7b18cb14 | ||
|
|
621d39437a | ||
|
|
6033f3c6b9 | ||
|
|
1413a0e665 | ||
|
|
7f376f46d6 | ||
|
|
400ad2288d | ||
|
|
620bdcf705 | ||
|
|
91ce4bc0df |
19 changed files with 97436 additions and 90 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 |
|
|
@ -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 pretty on
|
||||||
set print elements 512
|
set print elements 512
|
||||||
|
|
||||||
|
|
@ -29,7 +29,3 @@ define jdump
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
define reconnect
|
|
||||||
disconnect
|
|
||||||
target extended-remote 192.168.1.97:2022
|
|
||||||
end
|
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,7 @@ void ADC1_IRQHandler(void) {
|
||||||
|
|
||||||
/* Read sample and apply threshold */
|
/* Read sample and apply threshold */
|
||||||
int sample = ADC1->DR; /* resets the EOC interrupt flag */
|
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;
|
int bit_margin = ((int)sample) - THRESHOLD_ADC_COUNTS;
|
||||||
if (bit_margin < 0) {
|
if (bit_margin < 0) {
|
||||||
bit_margin = -bit_margin;
|
bit_margin = -bit_margin;
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,13 @@
|
||||||
],
|
],
|
||||||
"zones_allow_external_fillets": false
|
"zones_allow_external_fillets": false
|
||||||
},
|
},
|
||||||
|
"ipc2581": {
|
||||||
|
"dist": "",
|
||||||
|
"distpn": "",
|
||||||
|
"internal_id": "",
|
||||||
|
"mfg": "",
|
||||||
|
"mpn": ""
|
||||||
|
},
|
||||||
"layer_presets": [],
|
"layer_presets": [],
|
||||||
"viewports": []
|
"viewports": []
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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 pretty on
|
||||||
set print elements 512
|
set print elements 512
|
||||||
|
|
||||||
|
|
@ -18,8 +29,3 @@ end
|
||||||
source ~/ref/PyCortexMDebug/cmdebug/svd_gdb.py
|
source ~/ref/PyCortexMDebug/cmdebug/svd_gdb.py
|
||||||
svd_load ~/ref/stm32square/svd/STM32G070.svd
|
svd_load ~/ref/stm32square/svd/STM32G070.svd
|
||||||
|
|
||||||
define reconnect
|
|
||||||
disconnect
|
|
||||||
target extended-remote 192.168.1.95:2022
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ MUSL_DIR ?= upstream/musl
|
||||||
# Algorithm parameters
|
# Algorithm parameters
|
||||||
########################################################################################################################
|
########################################################################################################################
|
||||||
|
|
||||||
# - none -
|
DRIVER_ADDR ?= 0
|
||||||
|
|
||||||
########################################################################################################################
|
########################################################################################################################
|
||||||
# High-level build parameters
|
# High-level build parameters
|
||||||
|
|
@ -91,7 +91,7 @@ CFLAGS += -fno-common -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
COMMON_CFLAGS += -O$(OPT) -std=gnu2x -g
|
COMMON_CFLAGS += -O$(OPT) -std=gnu2x -g
|
||||||
COMMON_CFLAGS += $(DEVICE_DEFINES)
|
COMMON_CFLAGS += $(DEVICE_DEFINES)
|
||||||
COMMON_CFLAGS += -DDEBUG=$(DEBUG)
|
COMMON_CFLAGS += -DDEBUG=$(DEBUG) -DDRIVER_ADDR=$(DRIVER_ADDR)
|
||||||
|
|
||||||
GEN_HEADERS := $(BUILDDIR)/generated/waveform_tables.h
|
GEN_HEADERS := $(BUILDDIR)/generated/waveform_tables.h
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ static void dma_tx_waveform(size_t table_size, const uint16_t *table);
|
||||||
|
|
||||||
#define SYNC_INTERVAL 13
|
#define SYNC_INTERVAL 13
|
||||||
|
|
||||||
static size_t time_to_sync = 0;
|
|
||||||
static size_t tx_bitpos = 0;
|
static size_t tx_bitpos = 0;
|
||||||
static size_t tx_sympos = 0;
|
static size_t tx_sympos = 0;
|
||||||
static int tx_last_bit = 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;
|
static bool idle_buf_ready = false;
|
||||||
|
|
||||||
void update_tx_buf(void);
|
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) {
|
int main(void) {
|
||||||
/* Configure clocks for 64 MHz system clock.
|
/* Configure clocks for 64 MHz system clock.
|
||||||
|
|
@ -132,7 +161,9 @@ int main(void) {
|
||||||
GPIOB->OSPEEDR = (3<<0) | (3<<1) | (3<<3);
|
GPIOB->OSPEEDR = (3<<0) | (3<<1) | (3<<3);
|
||||||
|
|
||||||
/* GPIOC:
|
/* GPIOC:
|
||||||
* C0-C3: (testpoint)
|
* C0, C3: (testpoint)
|
||||||
|
* C1: Fan 2 PWM
|
||||||
|
* C2: Fan 1 PWM
|
||||||
* C4: RJ45 LED 4
|
* C4: RJ45 LED 4
|
||||||
* C5: RJ45 LED 3
|
* C5: RJ45 LED 3
|
||||||
* C6: Fuse monitor 7
|
* C6: Fuse monitor 7
|
||||||
|
|
@ -143,12 +174,14 @@ int main(void) {
|
||||||
* C11-C15: (testpoint)
|
* C11-C15: (testpoint)
|
||||||
*/
|
*/
|
||||||
GPIOC->MODER =
|
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) |
|
OUT(4) | OUT(5) |
|
||||||
IN(6) | IN(7) | IN(8) |
|
IN(6) | IN(7) | IN(8) |
|
||||||
AF(10);
|
AF(10);
|
||||||
|
GPIOC->OTYPER = (1<<1) | (1<<2);
|
||||||
GPIOC->AFR[1] = AFRH(10, 2);
|
GPIOC->AFR[1] = AFRH(10, 2);
|
||||||
GPIOC->OSPEEDR = (3<<10);
|
GPIOC->OSPEEDR = (3<<10);
|
||||||
|
GPIOC->BRR = (1<<1) | (1<<2); /* Turn down fans (most fans don't turn off at 0% PWM) */
|
||||||
|
|
||||||
/* GPIOD:
|
/* GPIOD:
|
||||||
* D0-D6: (testpoint)
|
* 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) |
|
GPIOD->MODER = IN(0) | IN(1) | IN(2) | IN(3) | IN(4) | IN(5) | IN(6) |
|
||||||
IN(8) | IN(9);
|
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->CCMR1 = (6<<TIM_CCMR1_OC2M_Pos) | TIM_CCMR1_OC2PE;
|
||||||
TIM1->CCMR2 = (6<<TIM_CCMR2_OC3M_Pos) | TIM_CCMR2_OC3PE;
|
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;
|
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);
|
dma_tx_constant(COUNT_OF(waveform_zero_one), 0x00);
|
||||||
xfr_8b10b_encode_reset(&encoder_state_8b10b);
|
xfr_8b10b_encode_reset(&encoder_state_8b10b);
|
||||||
|
|
||||||
int i = 0;
|
USART1->CR1 = /* 8-bit -> M1, M0 clear */
|
||||||
int j = 0;
|
/* OVER8 clear. Use default 16x oversampling */
|
||||||
int k = 0;
|
/* CMIF clear */
|
||||||
int n = 0;
|
/* 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) {
|
while (23) {
|
||||||
i++;
|
if (rj45_rx_ctr) {
|
||||||
j++;
|
set_rj45_leds(0x5);
|
||||||
i %= 6;
|
rj45_rx_ctr--;
|
||||||
j %= 4;
|
|
||||||
delay_us(30000);
|
} else {
|
||||||
set_rj45_leds(1 << j);
|
set_rj45_leds(0x0);
|
||||||
set_status_leds(1 << i);
|
}
|
||||||
if (i == 0) {
|
|
||||||
k++;
|
int leds = LED_ON;
|
||||||
if (k == 16) {
|
if (ping_ctr) {
|
||||||
k = 0;
|
leds |= LED_PING;
|
||||||
n++;
|
ping_ctr--;
|
||||||
if (n == 16) {
|
}
|
||||||
n = 0;
|
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() {
|
void DMA1_Channel1_IRQHandler() {
|
||||||
static int transfer_errors = 0;
|
static int transfer_errors = 0;
|
||||||
static int current_symbol = 0;
|
static int current_symbol = 0;
|
||||||
static int idle_symbol = 0;
|
|
||||||
|
|
||||||
if (DMA1->ISR & DMA_ISR_TEIF1) {
|
if (DMA1->ISR & DMA_ISR_TEIF1) {
|
||||||
transfer_errors ++;
|
transfer_errors ++;
|
||||||
|
|
@ -272,32 +361,23 @@ void DMA1_Channel1_IRQHandler() {
|
||||||
|
|
||||||
sym_arr[sym_pos] = -255;
|
sym_arr[sym_pos] = -255;
|
||||||
|
|
||||||
idle_symbol++;
|
if (tx_sympos == sizeof(struct data_packet)) {
|
||||||
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) {
|
if (idle_buf_ready) {
|
||||||
union tx_buf_union *tmp = tx_buf_idle;
|
union tx_buf_union *tmp = tx_buf_idle;
|
||||||
tx_buf_idle = tx_buf_read;
|
tx_buf_idle = tx_buf_read;
|
||||||
tx_buf_read = tmp;
|
tx_buf_read = tmp;
|
||||||
idle_buf_ready = false;
|
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 {
|
} else {
|
||||||
uint8_t b = tx_buf_read->bytes[tx_sympos];
|
uint8_t b = tx_buf_read->bytes[tx_sympos];
|
||||||
|
|
|
||||||
48
led_tape.svg
48
led_tape.svg
|
|
@ -2,21 +2,21 @@
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<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"
|
version="1.1"
|
||||||
id="svg2"
|
id="svg2"
|
||||||
width="5mm"
|
width="5mm"
|
||||||
height="2.5mm"
|
height="2.5mm"
|
||||||
viewBox="0 0 18.897638 9.4488189"
|
viewBox="0 0 18.897638 9.4488189"
|
||||||
sodipodi:docname="led_tape.svg"
|
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
|
<metadata
|
||||||
id="metadata8">
|
id="metadata8">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|
@ -40,15 +39,15 @@
|
||||||
guidetolerance="10"
|
guidetolerance="10"
|
||||||
inkscape:pageopacity="0"
|
inkscape:pageopacity="0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="3208"
|
||||||
inkscape:window-height="1030"
|
inkscape:window-height="1981"
|
||||||
id="namedview4"
|
id="namedview4"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:zoom="0.99999999"
|
inkscape:zoom="0.12102105"
|
||||||
inkscape:cx="119.84761"
|
inkscape:cx="-1222.9277"
|
||||||
inkscape:cy="40.617263"
|
inkscape:cy="-1739.3668"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="26"
|
||||||
inkscape:window-y="50"
|
inkscape:window-y="23"
|
||||||
inkscape:window-maximized="0"
|
inkscape:window-maximized="0"
|
||||||
inkscape:current-layer="svg2"
|
inkscape:current-layer="svg2"
|
||||||
inkscape:measure-start="288.323,-37.2999"
|
inkscape:measure-start="288.323,-37.2999"
|
||||||
|
|
@ -59,27 +58,30 @@
|
||||||
fit-margin-right="0"
|
fit-margin-right="0"
|
||||||
fit-margin-bottom="0"
|
fit-margin-bottom="0"
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:snap-global="false" />
|
inkscape:snap-global="false"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1" />
|
||||||
<g
|
<g
|
||||||
id="g7297-4"
|
id="g7297-4"
|
||||||
transform="matrix(1.3935337,0,0,1.5391961,-1554.0801,276.53669)"
|
transform="matrix(1.5310128,0,0,1.6910455,-1737.4329,315.54284)"
|
||||||
style="stroke-width:20.64532852;stroke-miterlimit:4;stroke-dasharray:none;fill:none;stroke:#bfbfbf">
|
style="fill:none;stroke:#bfbfbf;stroke-width:20.6453;stroke-miterlimit:4;stroke-dasharray:none">
|
||||||
<path
|
<path
|
||||||
sodipodi:nodetypes="ccccc"
|
sodipodi:nodetypes="ccccc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path7288-9"
|
id="path7288-9"
|
||||||
d="M 1344,-246.55117 V 2697.4487 H 3791.9999 V -246.55117 Z"
|
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
|
<path
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path7290-2"
|
id="path7290-2"
|
||||||
d="M 1344,-246.55117 3791.9999,2697.4487"
|
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
|
<path
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path7292-0"
|
id="path7292-0"
|
||||||
d="M 3791.9999,-246.55117 1344,2697.4487"
|
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>
|
</g>
|
||||||
<path
|
<path
|
||||||
inkscape:connector-curvature="0"
|
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]
|
||||||
|
|
||||||
|
|
@ -90,6 +90,21 @@ body {
|
||||||
"9": 0x33,
|
"9": 0x33,
|
||||||
"/": 0x0a,
|
"/": 0x0a,
|
||||||
"\\": 0x05,
|
"\\": 0x05,
|
||||||
|
".": 0x04,
|
||||||
|
",": 0x08,
|
||||||
|
"_": 0x40,
|
||||||
|
"!": 0x53,
|
||||||
|
"?": 0x52,
|
||||||
|
"*": 0x0f,
|
||||||
|
":": 0x50,
|
||||||
|
"(": 0x06,
|
||||||
|
"<": 0x06,
|
||||||
|
"[": 0xd0,
|
||||||
|
")": 0x09,
|
||||||
|
">": 0x09,
|
||||||
|
"]": 0x70,
|
||||||
|
"|": 0x20,
|
||||||
|
"#": 0xff,
|
||||||
};
|
};
|
||||||
|
|
||||||
function map_digit(codepoint) {
|
function map_digit(codepoint) {
|
||||||
|
|
|
||||||
BIN
wire-splitter-pcb/8seg-wire-splitter-v1-23-11-04-grb-final.zip
Normal file
BIN
wire-splitter-pcb/8seg-wire-splitter-v1-23-11-04-grb-final.zip
Normal file
Binary file not shown.
|
|
@ -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))
|
||||||
|
)
|
||||||
91078
wire-splitter-pcb/fp-info-cache
Normal file
91078
wire-splitter-pcb/fp-info-cache
Normal file
File diff suppressed because it is too large
Load diff
4
wire-splitter-pcb/fp-lib-table
Normal file
4
wire-splitter-pcb/fp-lib-table
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
(fp_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "footprints")(type "KiCad")(uri "${KIPRJMOD}/footprints.pretty")(options "")(descr ""))
|
||||||
|
)
|
||||||
3638
wire-splitter-pcb/wire-splitter-pcb.kicad_pcb
Normal file
3638
wire-splitter-pcb/wire-splitter-pcb.kicad_pcb
Normal file
File diff suppressed because it is too large
Load diff
83
wire-splitter-pcb/wire-splitter-pcb.kicad_prl
Normal file
83
wire-splitter-pcb/wire-splitter-pcb.kicad_prl
Normal 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": []
|
||||||
|
}
|
||||||
|
}
|
||||||
524
wire-splitter-pcb/wire-splitter-pcb.kicad_pro
Normal file
524
wire-splitter-pcb/wire-splitter-pcb.kicad_pro
Normal 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": {}
|
||||||
|
}
|
||||||
232
wire-splitter-pcb/wire-splitter-pcb.kicad_sch
Normal file
232
wire-splitter-pcb/wire-splitter-pcb.kicad_sch
Normal 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"))
|
||||||
|
)
|
||||||
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue