This commit is contained in:
Ballance 2026-08-24 14:09:36 -04:00
commit 8e27665e21
11 changed files with 2247 additions and 0 deletions

141
ext-zone.html Normal file
View file

@ -0,0 +1,141 @@
<title>EXT Zone, Transistor & Collector Node</title>
<style>
:root{ --bg:#faf8f4;--ink:#1c1a17;--muted:#6b6459;--card:#fff;--line:#3a352e;
--red:#c0392b;--grn:#2e7d32;--slate:#5b6b7a;--amber:#c98a1a;--rule:#d8d2c7; }
@media (prefers-color-scheme:dark){:root{--bg:#17150f;--ink:#eee7d9;--muted:#a49a88;
--card:#211e17;--line:#c9c2b4;--red:#e5675a;--grn:#6bbf70;--slate:#8fa3b5;--amber:#e0b24e;--rule:#3a352b;}}
:root[data-theme=light]{--bg:#faf8f4;--ink:#1c1a17;--muted:#6b6459;--card:#fff;--line:#3a352e;
--red:#c0392b;--grn:#2e7d32;--slate:#5b6b7a;--amber:#c98a1a;--rule:#d8d2c7;}
:root[data-theme=dark]{--bg:#17150f;--ink:#eee7d9;--muted:#a49a88;--card:#211e17;--line:#c9c2b4;
--red:#e5675a;--grn:#6bbf70;--slate:#8fa3b5;--amber:#e0b24e;--rule:#3a352b;}
body{background:var(--bg);color:var(--ink);
font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;margin:0;padding:24px;}
.wrap{max-width:900px;margin:0 auto;}
h1{font-size:20px;margin:0 0 2px;} .sub{color:var(--muted);margin:0 0 18px;font-size:13px;}
.card{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:16px;margin-bottom:18px;}
.scroll{overflow-x:auto;}
svg{display:block;margin:0 auto;max-width:100%;height:auto;}
text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;fill:var(--ink);}
.lbl{font-size:13px;} .sm{font-size:11px;fill:var(--muted);} .big{font-size:14px;font-weight:bold;}
.w5{stroke:var(--red);stroke-width:3;fill:none;}
.wg{stroke:var(--line);stroke-width:3.4;fill:none;}
.wire{stroke:var(--line);stroke-width:2.2;fill:none;}
.wsig{stroke:var(--slate);stroke-width:2.4;fill:none;stroke-dasharray:6 4;}
.node{fill:var(--line);} .chip{fill:var(--card);stroke:var(--line);stroke-width:2;}
.key{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:10px;}
.key span{display:inline-flex;align-items:center;gap:6px;} .sw{width:22px;height:0;border-top:3px solid;}
ul{margin:6px 0 0;padding-left:18px;font-size:14px;} li{margin:3px 0;}
code{font-family:ui-monospace,Menlo,monospace;background:rgba(128,128,128,.12);padding:1px 5px;border-radius:4px;font-size:.92em;}
</style>
<div class="wrap">
<h1>EXT zone, the transistor & the collector node</h1>
<p class="sub">5 exterior LEDs in parallel · one PN2222 switches them all · D6</p>
<div class="card scroll">
<svg viewBox="0 0 820 470" role="img" aria-label="EXT zone: five parallel LEDs meeting at the transistor collector">
<!-- +5V rail -->
<line class="w5" x1="60" y1="45" x2="640" y2="45"/>
<text class="lbl" x="60" y="35" fill="var(--red)">+5V rail</text>
<!-- GND rail -->
<line class="wg" x1="60" y1="430" x2="760" y2="430"/>
<text class="lbl" x="60" y="452">GND rail</text>
<!-- 5 LED branches -->
<!-- each branch: vertical from +5V, LED, 220, down to collector bus at y=300 -->
<!-- collector bus -->
<line class="wire" x1="120" y1="300" x2="560" y2="300"/>
<text class="big" x="120" y="290" fill="var(--slate)">collector node</text>
<text class="sm" x="120" y="322">(where all 5 branches meet the transistor)</text>
<!-- branch generator: xs 140,240,340,440,540 -->
<!-- branch 1 -->
<g>
<line class="w5" x1="140" y1="45" x2="140" y2="80"/><circle class="node" cx="140" cy="45" r="3.2"/>
<polygon points="128,80 152,80 140,104" fill="none" stroke="var(--amber)" stroke-width="2"/>
<line x1="128" y1="104" x2="152" y2="104" stroke="var(--amber)" stroke-width="2.5"/>
<line class="wire" x1="140" y1="104" x2="140" y2="130"/>
<rect class="chip" x="122" y="130" width="36" height="46" rx="4"/><text class="sm" x="126" y="157">220</text>
<line class="wire" x1="140" y1="176" x2="140" y2="300"/><circle class="node" cx="140" cy="300" r="3.2"/>
<text class="sm" x="112" y="196">porch A</text>
</g>
<!-- branch 2 -->
<g>
<line class="w5" x1="240" y1="45" x2="240" y2="80"/><circle class="node" cx="240" cy="45" r="3.2"/>
<polygon points="228,80 252,80 240,104" fill="none" stroke="var(--amber)" stroke-width="2"/>
<line x1="228" y1="104" x2="252" y2="104" stroke="var(--amber)" stroke-width="2.5"/>
<line class="wire" x1="240" y1="104" x2="240" y2="130"/>
<rect class="chip" x="222" y="130" width="36" height="46" rx="4"/><text class="sm" x="226" y="157">220</text>
<line class="wire" x1="240" y1="176" x2="240" y2="300"/><circle class="node" cx="240" cy="300" r="3.2"/>
<text class="sm" x="212" y="196">porch B</text>
</g>
<!-- branch 3 -->
<g>
<line class="w5" x1="340" y1="45" x2="340" y2="80"/><circle class="node" cx="340" cy="45" r="3.2"/>
<polygon points="328,80 352,80 340,104" fill="none" stroke="var(--amber)" stroke-width="2"/>
<line x1="328" y1="104" x2="352" y2="104" stroke="var(--amber)" stroke-width="2.5"/>
<line class="wire" x1="340" y1="104" x2="340" y2="130"/>
<rect class="chip" x="322" y="130" width="36" height="46" rx="4"/><text class="sm" x="326" y="157">220</text>
<line class="wire" x1="340" y1="176" x2="340" y2="300"/><circle class="node" cx="340" cy="300" r="3.2"/>
<text class="sm" x="318" y="196">entry</text>
</g>
<!-- branch 4 -->
<g>
<line class="w5" x1="440" y1="45" x2="440" y2="80"/><circle class="node" cx="440" cy="45" r="3.2"/>
<polygon points="428,80 452,80 440,104" fill="none" stroke="var(--amber)" stroke-width="2"/>
<line x1="428" y1="104" x2="452" y2="104" stroke="var(--amber)" stroke-width="2.5"/>
<line class="wire" x1="440" y1="104" x2="440" y2="130"/>
<rect class="chip" x="422" y="130" width="36" height="46" rx="4"/><text class="sm" x="426" y="157">220</text>
<line class="wire" x1="440" y1="176" x2="440" y2="300"/><circle class="node" cx="440" cy="300" r="3.2"/>
<text class="sm" x="420" y="196">deck</text>
</g>
<!-- branch 5 -->
<g>
<line class="w5" x1="540" y1="45" x2="540" y2="80"/><circle class="node" cx="540" cy="45" r="3.2"/>
<polygon points="528,80 552,80 540,104" fill="none" stroke="var(--amber)" stroke-width="2"/>
<line x1="528" y1="104" x2="552" y2="104" stroke="var(--amber)" stroke-width="2.5"/>
<line class="wire" x1="540" y1="104" x2="540" y2="130"/>
<rect class="chip" x="522" y="130" width="36" height="46" rx="4"/><text class="sm" x="526" y="157">220</text>
<line class="wire" x1="540" y1="176" x2="540" y2="300"/><circle class="node" cx="540" cy="300" r="3.2"/>
<text class="sm" x="512" y="196">balcony</text>
</g>
<!-- transistor at right of collector bus -->
<line class="wire" x1="560" y1="300" x2="640" y2="300"/>
<line class="wire" x1="640" y1="300" x2="640" y2="326"/>
<circle class="chip" cx="640" cy="360" r="34"/>
<text class="lbl" x="618" y="365">Q3</text>
<text class="sm" x="600" y="410">PN2222</text>
<!-- collector top -->
<text class="sm" x="648" y="332">C (collector)</text>
<!-- emitter bottom -->
<line class="wg" x1="640" y1="394" x2="640" y2="430"/>
<circle class="node" cx="640" cy="430" r="3.2"/>
<text class="sm" x="648" y="418">E → GND</text>
<!-- base from D6 -->
<line class="wsig" x1="740" y1="360" x2="674" y2="360"/>
<text class="sm" x="648" y="352">B</text>
<rect class="chip" x="740" y="350" width="46" height="20" rx="4"/><text class="sm" x="745" y="364">1kΩ</text>
<line class="wsig" x1="786" y1="360" x2="806" y2="360"/>
<text class="sm" x="720" y="392">D6 (PWM) ──► base</text>
<text class="sm" x="60" y="65">current: +5V → each LED → its 220Ω → collector node → (Q3) → emitter → GND</text>
</svg>
<div class="key">
<span><span class="sw" style="border-color:var(--red)"></span>+5V</span>
<span><span class="sw" style="border-color:var(--line)"></span>wire / GND</span>
<span><span class="sw" style="border-color:var(--slate);border-top-style:dashed"></span>D6 signal</span>
<span><span class="sw" style="border-color:var(--amber)"></span>LED</span>
</div>
</div>
<div class="card">
<strong>The three transistor legs</strong>
<ul>
<li><code>C</code> collector, current comes <em>in</em> from the 5 LEDs (the "collector node")</li>
<li><code>B</code> base, the control leg; <code>D6</code> flips it on/off through the 1kΩ</li>
<li><code>E</code> emitter, current goes <em>out</em> to GND</li>
</ul>
<p class="sm" style="margin:8px 0 0">D6 high → base opens the valve → all 5 LEDs drain through C→E to ground → they light.
Leg order on the part (flat face toward you): <code>E · B · C</code>, left→right, collector is the right leg.</p>
</div>
</div>