component
IN-S63BT5B
Public Unreviewedby AravK
Inolux Corporation · Top View SMD LED · 0603 (1.6 × 0.8mm) · InGaN
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>IN-S63BT5B — Component Characterization</title>
<style>
@font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-700-normal.woff2') format('woff2'); font-weight: 700; }
@font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-500-normal.woff2') format('woff2'); font-weight: 500; }
@font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-400-normal.woff2') format('woff2'); font-weight: 400; }
@font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-500-normal.woff2') format('woff2'); font-weight: 500; }
@font-face { font-family: 'JetBrains Mono'; src: url('https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2') format('woff2'); font-weight: 400; }
:root {
--bg: #0d1117; --surface: #161b22; --elevated: #1c2128; --border: #30363d; --border-muted: #21262d;
--text: #e6edf3; --text-muted: #8b949e; --text-dim: #484f58;
--accent: #00b8b0; --accent-bright: #00e6dc; --accent-dim: rgba(0,184,176,0.12); --accent-border: rgba(0,184,176,0.25);
--green: #3fb950; --orange: #d29922; --red: #f85149; --purple: #8C6BF7; --blue: #58a6ff;
--led-color: #4169E1; --led-dim: #4169E11e; --led-border: #4169E159;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: 'Satoshi', sans-serif; background: var(--bg); color: var(--text); font-size: 13px; line-height: 1.6; overflow-y: auto; }
h1,h2,h3 { font-family: 'Familjen Grotesk', sans-serif; font-weight: 700; }
code { font-family: 'JetBrains Mono', monospace; font-size: 12px; }
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-bright); text-decoration: underline; }
.header { background: var(--surface); border-bottom: 1px solid var(--border-muted); padding: 20px 24px; }
.header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }
.header .brand { color: var(--accent); font-family: 'Familjen Grotesk', sans-serif; font-size: 12px; font-weight: 600; }
.header .vsep { width: 1px; height: 16px; background: var(--border); }
.header .crumb { color: var(--text-dim); font-size: 12px; }
.header h1 { font-size: 22px; margin-bottom: 2px; }
.header h1 .val { color: #4169E1; }
.header .subtitle { color: var(--text-muted); font-size: 13px; }
.header .tags { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }
.tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; }
.tag.pkg { background: rgba(0,184,176,0.12); color: var(--accent); }
.tag.mfr { background: rgba(88,166,255,0.12); color: var(--blue); }
.tag.series { background: rgba(140,107,247,0.12); color: var(--purple); }
.tag.rohs { background: rgba(63,185,80,0.12); color: var(--green); }
.tag.app { background: var(--led-dim); color: var(--led-color); }
.container { max-width: 1100px; margin: 0 auto; padding: 24px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
@media (max-width: 800px) { .grid-2, .grid-3 { grid-template-columns: 1fr; } }
.section { margin-bottom: 28px; }
.section-title { font-size: 14px; color: var(--text); margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid var(--border-muted); display: flex; align-items: center; gap: 8px; }
.card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }
.card:hover { border-color: var(--accent-border); }
.spec-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.spec-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; text-align: center; }
.spec-card .sc-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 4px; }
.spec-card .sc-value { font-size: 22px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }
.spec-card .sc-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.spec-card.highlight { border-color: var(--led-border); background: linear-gradient(180deg, #4169E10f, var(--surface)); }
.spec-card.highlight .sc-value { color: var(--led-color); }
.detail-table { width: 100%; border-collapse: collapse; }
.detail-table tr { border-bottom: 1px solid var(--border-muted); }
.detail-table tr:last-child { border-bottom: none; }
.detail-table td { padding: 8px 0; }
.detail-table td:first-child { color: var(--text-muted); font-size: 12px; width: 45%; }
.detail-table td:last-child { font-family: 'JetBrains Mono', monospace; font-size: 13px; text-align: right; }
.chart-wrap { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }
.chart-wrap h3 { font-size: 13px; color: var(--text); margin-bottom: 12px; }
.chart-wrap .chart-note { font-size: 11px; color: var(--text-dim); margin-top: 8px; }
svg text { font-family: 'JetBrains Mono', monospace; }
.pkg-drawing { display: flex; align-items: center; justify-content: center; padding: 20px; }
.env-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 700px) { .env-grid { grid-template-columns: 1fr; } }
.env-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; }
.env-card .env-name { font-size: 12px; font-weight: 600; margin-bottom: 4px; }
.env-card .env-spec { font-size: 11px; color: var(--text-muted); }
.env-card .env-detail { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text); margin-top: 4px; }
.vendor-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 700px) { .vendor-cards { grid-template-columns: 1fr; } }
.vendor-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 14px; }
.vendor-card .vc-name { font-size: 12px; font-weight: 600; margin-bottom: 6px; }
.vendor-card .vc-name.mouser { color: var(--blue); }
.vendor-card .vc-name.digikey { color: var(--red); }
.vendor-card .vc-name.jlcpcb { color: var(--green); }
.vendor-card .vc-price { font-size: 20px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }
.vendor-card .vc-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }
.vendor-card .vc-link { display: inline-block; margin-top: 8px; font-size: 11px; color: var(--accent); }
.vendor-card.recommended { border-color: var(--accent-border); }
.vendor-card.recommended::before { content: 'RECOMMENDED'; display: block; font-size: 9px; letter-spacing: 1px; color: var(--accent); margin-bottom: 6px; font-weight: 600; }
.copy-btn { background: none; border: 1px solid var(--border); color: var(--text-muted); border-radius: 4px; padding: 2px 6px; font-size: 13px; cursor: pointer; font-family: 'JetBrains Mono', monospace; vertical-align: middle; transition: border-color 0.15s, color 0.15s; }
.copy-btn:hover { border-color: var(--accent); color: var(--accent); }
.dl-btn { display: inline-block; margin-top: 10px; padding: 6px 14px; background: var(--accent-dim); border: 1px solid var(--accent-border); border-radius: 6px; color: var(--accent); font-size: 11px; font-weight: 500; font-family: 'Satoshi', sans-serif; text-decoration: none; transition: background 0.15s, border-color 0.15s; }
.dl-btn:hover { background: rgba(0,184,176,0.2); border-color: var(--accent); text-decoration: none; color: var(--accent-bright); }
.open-full-banner { display: flex; align-items: center; justify-content: center; padding: 12px 24px; background: linear-gradient(90deg, rgba(0,184,176,0.12), rgba(0,184,176,0.06)); border-bottom: 1px solid var(--accent-border); }
.open-full-btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 20px; background: var(--accent); color: var(--bg); font-family: 'Familjen Grotesk', sans-serif; font-size: 13px; font-weight: 600; border-radius: 6px; text-decoration: none; transition: background 0.15s; cursor: pointer; border: none; }
.open-full-btn:hover { background: var(--accent-bright); text-decoration: none; color: var(--bg); }
.source { text-align: center; color: var(--text-dim); font-size: 11px; padding: 24px 0 12px; border-top: 1px solid var(--border-muted); margin-top: 20px; }
.color-swatch { border-radius: 8px; padding: 20px; text-align: center; position: relative; overflow: hidden; }
.color-swatch .swatch-block { width: 100%; height: 80px; border-radius: 6px; margin-bottom: 12px; position: relative; }
.color-swatch .swatch-label { font-size: 14px; font-weight: 600; font-family: 'Familjen Grotesk', sans-serif; }
.color-swatch .swatch-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }
.calc-card { background: var(--surface); border: 1px solid var(--led-border); border-radius: 8px; padding: 20px; }
.calc-card h3 { font-size: 14px; color: var(--led-color); margin-bottom: 16px; font-family: 'Familjen Grotesk', sans-serif; }
.calc-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.calc-field label { display: block; font-size: 11px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }
.calc-field input { width: 100%; background: var(--bg); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: 8px 12px; font-family: 'JetBrains Mono', monospace; font-size: 14px; outline: none; transition: border-color 0.15s; }
.calc-field input:focus { border-color: var(--led-color); }
.calc-field .unit { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
.calc-results { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.calc-result { background: var(--bg); border: 1px solid var(--border-muted); border-radius: 6px; padding: 10px 12px; }
.calc-result .cr-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 2px; }
.calc-result .cr-value { font-size: 18px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; color: var(--led-color); }
.calc-result .cr-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.calc-schematic { margin-top: 16px; text-align: center; }
</style>
</head>
<body>
<div class="open-full-banner" id="fullPageBanner" style="display:none">
<span style="color:var(--text-muted);font-size:12px;margin-right:8px">Full page:</span>
<code style="color:var(--accent);font-size:11px;background:var(--elevated);padding:4px 8px;border-radius:4px;user-select:all">https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.html</code>
<button class="open-full-btn" id="copyFullUrl" style="margin-left:8px">Copy Link</button>
</div>
<script>
if(window.self!==window.top){document.getElementById('fullPageBanner').style.display='flex'}
document.getElementById('copyFullUrl').addEventListener('click',function(){var t=document.createElement('textarea');t.value='https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.html';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);this.textContent='Copied!';var b=this;setTimeout(function(){b.textContent='Copy Link'},1500)});
</script>
<div class="header">
<div class="header-top">
<div class="brand">Adom</div>
<div class="vsep"></div>
<div class="crumb">Components › LEDs › 0603</div>
</div>
<h1>IN-S63BT5B — <span class="val">Blue</span></h1>
<div class="subtitle">Inolux Corporation · Top View SMD LED · 0603 (1.6 × 0.8mm) · InGaN</div>
<div class="tags">
<span class="tag pkg">0603</span>
<span class="tag mfr">Inolux</span>
<span class="tag series">IN-S63BT</span>
<span class="tag rohs">RoHS</span>
<span class="tag app">Blue LED</span>
</div>
</div>
<div class="container">
<!-- Key Specs -->
<div class="section">
<div class="spec-cards">
<div class="spec-card highlight">
<div class="sc-label">Wavelength</div>
<div class="sc-value" style="color:#4169E1">468nm</div>
<div class="sc-detail">470nm peak</div>
</div>
<div class="spec-card">
<div class="sc-label">Luminous Intensity</div>
<div class="sc-value">72mcd</div>
<div class="sc-detail">@ 5mA</div>
</div>
<div class="spec-card">
<div class="sc-label">Forward Voltage</div>
<div class="sc-value">3.0V</div>
<div class="sc-detail">typical @ 5mA</div>
</div>
<div class="spec-card">
<div class="sc-label">Forward Current</div>
<div class="sc-value">25mA</div>
<div class="sc-detail">5mA typical</div>
</div>
<div class="spec-card">
<div class="sc-label">Viewing Angle</div>
<div class="sc-value">120°</div>
<div class="sc-detail">2θ½</div>
</div>
<div class="spec-card">
<div class="sc-label">Package</div>
<div class="sc-value">0603</div>
<div class="sc-detail">1.6×0.8×0.3mm</div>
</div>
</div>
</div>
<div class="grid-2">
<!-- Left column -->
<div>
<!-- Electrical Characteristics -->
<div class="section">
<h2 class="section-title">Electrical Characteristics</h2>
<div class="card">
<table class="detail-table">
<tr><td>Forward Voltage (typ)</td><td>3.0V @ 5mA</td></tr>
<tr><td>Forward Voltage (max)</td><td>3.4V</td></tr>
<tr><td>Reverse Voltage (max)</td><td>5V</td></tr>
<tr><td>Forward Current (max)</td><td>25mA</td></tr>
<tr><td>Peak Forward Current</td><td>100mA (1/10, 0.1ms)</td></tr>
<tr><td>Power Dissipation</td><td>75mW</td></tr>
<tr><td>Dominant Wavelength</td><td>468nm</td></tr>
<tr><td>Peak Wavelength</td><td>470nm</td></tr>
<tr><td>Luminous Intensity</td><td>72 mcd @ 5mA</td></tr>
<tr><td>Viewing Angle (2θ½)</td><td>120°</td></tr>
<tr><td>Material</td><td>InGaN</td></tr>
<tr><td>Lens Type</td><td>Clear</td></tr>
</table>
</div>
</div>
<!-- Operating Conditions -->
<div class="section">
<h2 class="section-title">Operating Conditions</h2>
<div class="card">
<table class="detail-table">
<tr><td>Operating Temp</td><td>−30°C to +85°C</td></tr>
<tr><td>Storage Temp</td><td>−40°C to +90°C</td></tr>
<tr><td>ESD Sensitivity</td><td>InGaN — handle with care</td></tr>
<tr><td>Polarity</td><td>Cathode marked on package</td></tr>
</table>
<div style="margin-top:10px;padding:8px 12px;background:rgba(248,81,73,0.08);border:1px solid rgba(248,81,73,0.2);border-radius:6px;font-size:11px;color:var(--red)">
⚠ ESD Sensitive Device — InGaN LEDs require proper ESD precautions during handling and assembly. Use grounded wrist straps and ESD-safe workstations.
</div>
</div>
</div>
</div>
<!-- Right column -->
<div>
<!-- Package Drawing -->
<div class="section">
<h2 class="section-title">Package & Dimensions</h2>
<div class="card">
<div class="pkg-drawing">
<svg width="100%" height="200" viewBox="0 0 500 200">
<!-- Top view -->
<text x="120" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Top View</text>
<rect x="55" y="24" width="130" height="65" rx="3" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>
<rect x="55" y="24" width="25" height="65" rx="1" fill="#4169E122" stroke="#4169E1" stroke-width="1"/>
<rect x="160" y="24" width="25" height="65" rx="1" fill="#4169E122" stroke="#4169E1" stroke-width="1"/>
<line x1="155" y1="28" x2="155" y2="85" stroke="#4169E1" stroke-width="1.5" stroke-dasharray="3,2"/>
<rect x="92" y="38" width="36" height="37" rx="1" fill="#4169E140" stroke="#4169E180" stroke-width="0.8"/>
<path d="M110,47 Q125,35 135,47" stroke="#4169E199" stroke-width="0.6" fill="none"/>
<text x="168" y="18" fill="#4169E1" font-size="9" text-anchor="middle">K (cathode)</text>
<text x="68" y="18" fill="#8b949e" font-size="9" text-anchor="middle">A</text>
<line x1="55" y1="102" x2="185" y2="102" stroke="#484f58" stroke-width="0.5"/>
<line x1="55" y1="98" x2="55" y2="106" stroke="#484f58" stroke-width="0.5"/>
<line x1="185" y1="98" x2="185" y2="106" stroke="#484f58" stroke-width="0.5"/>
<text x="120" y="118" fill="#e6edf3" font-size="10" text-anchor="middle">1.6 ± 0.1</text>
<line x1="195" y1="24" x2="195" y2="89" stroke="#484f58" stroke-width="0.5"/>
<line x1="191" y1="24" x2="199" y2="24" stroke="#484f58" stroke-width="0.5"/>
<line x1="191" y1="89" x2="199" y2="89" stroke="#484f58" stroke-width="0.5"/>
<text x="215" y="60" fill="#e6edf3" font-size="10">0.8 ± 0.1</text>
<!-- Side view -->
<text x="380" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Side View</text>
<rect x="315" y="48" width="130" height="30" rx="2" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>
<path d="M320,48 Q380,40 445,48" stroke="#4169E180" stroke-width="1.5" fill="#4169E114"/>
<rect x="315" y="48" width="20" height="30" rx="1" fill="#4169E122" stroke="#4169E1" stroke-width="1"/>
<rect x="425" y="48" width="20" height="30" rx="1" fill="#4169E122" stroke="#4169E1" stroke-width="1"/>
<line x1="455" y1="38" x2="455" y2="78" stroke="#484f58" stroke-width="0.5"/>
<line x1="451" y1="38" x2="459" y2="38" stroke="#484f58" stroke-width="0.5"/>
<line x1="451" y1="78" x2="459" y2="78" stroke="#484f58" stroke-width="0.5"/>
<text x="465" y="62" fill="#e6edf3" font-size="10">0.3 ± 0.05</text>
<text x="120" y="145" fill="#8b949e" font-size="10" text-anchor="middle">0603 (1608 metric)</text>
<text x="380" y="100" fill="#8b949e" font-size="10" text-anchor="middle">Clear lens · InGaN</text>
<rect x="55" y="158" width="390" height="28" rx="4" fill="#4169E10f" stroke="#4169E133" stroke-width="0.5"/>
<text x="250" y="176" fill="#4169E1" font-size="10" text-anchor="middle">⚠ Polarized — cathode mark on package indicates negative terminal</text>
</svg>
</div>
</div>
</div>
<!-- Land Pattern -->
<div class="section">
<h2 class="section-title">Recommended Land Pattern</h2>
<div class="card">
<table class="detail-table">
<tr><td>Pad Width</td><td>0.7 ± 0.1mm</td></tr>
<tr><td>Pad Height</td><td>0.7 ± 0.1mm</td></tr>
<tr><td>Pad Spacing (center-to-center)</td><td>0.7 ± 0.1mm</td></tr>
<tr><td>Polarity</td><td>Cathode marked on PCB</td></tr>
</table>
</div>
</div>
</div>
</div>
<!-- Color Swatch -->
<div class="section">
<h2 class="section-title">Emission Color</h2>
<div class="card color-swatch">
<div class="swatch-block" style="background: linear-gradient(135deg, #4169E1, #2850C0); box-shadow: 0 4px 24px #4169E144; display:flex; align-items:center; justify-content:center;">
<span style="font-size:28px;font-weight:700;font-family:'Familjen Grotesk',sans-serif;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,0.5)">Blue</span>
</div>
<div class="swatch-label" style="color:#4169E1">468nm Dominant Wavelength</div>
<div class="swatch-detail">Peak wavelength 470nm · InGaN semiconductor · CSS approximation: #4169E1</div>
</div>
</div>
<!-- Spectral Distribution -->
<div class="section">
<h2 class="section-title">Spectral Distribution</h2>
<div class="chart-wrap">
<h3>Emission Spectrum — Relative Intensity vs. Wavelength</h3>
<svg id="spectral-chart" width="100%" height="280" viewBox="0 0 700 280">
<rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>
<line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<defs>
<linearGradient id="ledGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4169E1" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#4169E1" stop-opacity="0.05"/>
</linearGradient>
</defs>
<path d="M60,220 L60,220 L64,220 L68,220 L72,220 L76,220 L80,220 L84,220 L88,220 L92,220 L96,220 L100,220 L104,220 L108,219 L112,219 L116,219 L120,218 L124,216 L128,214 L132,211 L136,208 L140,202 L144,195 L148,186 L152,175 L156,162 L160,146 L164,129 L168,111 L172,92 L176,73 L180,56 L184,41 L188,30 L192,22 L196,20 L200,22 L204,30 L208,41 L212,56 L216,73 L220,92 L224,111 L228,129 L232,146 L236,162 L240,175 L244,186 L248,195 L252,202 L256,208 L260,211 L264,214 L268,216 L272,218 L276,219 L280,219 L284,219 L288,220 L292,220 L296,220 L300,220 L304,220 L308,220 L312,220 L316,220 L320,220 L324,220 L328,220 L332,220 L336,220 L340,220 L344,220 L348,220 L352,220 L356,220 L360,220 L364,220 L368,220 L372,220 L376,220 L380,220 L384,220 L388,220 L392,220 L396,220 L400,220 L404,220 L408,220 L412,220 L416,220 L420,220 L424,220 L428,220 L432,220 L436,220 L440,220 L444,220 L448,220 L452,220 L456,220 L460,220 L464,220 L468,220 L472,220 L476,220 L480,220 L484,220 L488,220 L492,220 L496,220 L500,220 L504,220 L508,220 L512,220 L516,220 L520,220 L524,220 L528,220 L532,220 L536,220 L540,220 L544,220 L548,220 L552,220 L556,220 L560,220 L564,220 L568,220 L572,220 L576,220 L580,220 L584,220 L588,220 L592,220 L596,220 L600,220 L604,220 L608,220 L612,220 L616,220 L620,220 L624,220 L628,220 L632,220 L636,220 L640,220 L644,220 L648,220 L652,220 L656,220 L660,220 L660,220 Z" fill="url(#ledGrad)" opacity="0.3"/>
<path d="M60,220 L60,220 L64,220 L68,220 L72,220 L76,220 L80,220 L84,220 L88,220 L92,220 L96,220 L100,220 L104,220 L108,219 L112,219 L116,219 L120,218 L124,216 L128,214 L132,211 L136,208 L140,202 L144,195 L148,186 L152,175 L156,162 L160,146 L164,129 L168,111 L172,92 L176,73 L180,56 L184,41 L188,30 L192,22 L196,20 L200,22 L204,30 L208,41 L212,56 L216,73 L220,92 L224,111 L228,129 L232,146 L236,162 L240,175 L244,186 L248,195 L252,202 L256,208 L260,211 L264,214 L268,216 L272,218 L276,219 L280,219 L284,219 L288,220 L292,220 L296,220 L300,220 L304,220 L308,220 L312,220 L316,220 L320,220 L324,220 L328,220 L332,220 L336,220 L340,220 L344,220 L348,220 L352,220 L356,220 L360,220 L364,220 L368,220 L372,220 L376,220 L380,220 L384,220 L388,220 L392,220 L396,220 L400,220 L404,220 L408,220 L412,220 L416,220 L420,220 L424,220 L428,220 L432,220 L436,220 L440,220 L444,220 L448,220 L452,220 L456,220 L460,220 L464,220 L468,220 L472,220 L476,220 L480,220 L484,220 L488,220 L492,220 L496,220 L500,220 L504,220 L508,220 L512,220 L516,220 L520,220 L524,220 L528,220 L532,220 L536,220 L540,220 L544,220 L548,220 L552,220 L556,220 L560,220 L564,220 L568,220 L572,220 L576,220 L580,220 L584,220 L588,220 L592,220 L596,220 L600,220 L604,220 L608,220 L612,220 L616,220 L620,220 L624,220 L628,220 L632,220 L636,220 L640,220 L644,220 L648,220 L652,220 L656,220 L660,220" stroke="#4169E1" stroke-width="2.5" fill="none"/>
<!-- Peak annotation -->
<circle cx="196" cy="22" r="4" fill="#4169E1" opacity="0.9"/>
<line x1="196" y1="22" x2="196" y2="220" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>
<text x="196" y="238" fill="#4169E1" font-size="10" text-anchor="middle">468nm</text>
<!-- FWHM indicator -->
<line x1="166" y1="120" x2="226" y2="120" stroke="#4169E1" stroke-width="1" stroke-dasharray="4,2" opacity="0.6"/>
<text x="241" y="116" fill="#8b949e" font-size="9">FWHM ~30nm</text>
<!-- Y axis labels -->
<text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0%</text>
<text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">25%</text>
<text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">50%</text>
<text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">75%</text>
<text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">100%</text>
<text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Intensity</text>
<!-- X axis labels -->
<text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">400</text>
<text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">440</text>
<text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">480</text>
<text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">560</text>
<text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">640</text>
<text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">700</text>
<text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Wavelength (nm)</text>
</svg>
<div class="chart-note">Blue emission centered at 468nm dominant wavelength (470nm peak). The spectral width (~30nm FWHM) is typical of InGaN LEDs.</div>
</div>
</div>
<!-- IV Curve -->
<div class="section">
<h2 class="section-title">Forward Current vs. Forward Voltage</h2>
<div class="chart-wrap">
<h3>IV Characteristic — the essential curve for circuit design</h3>
<svg id="iv-chart" width="100%" height="280" viewBox="0 0 700 280">
<rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>
<line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="231" y1="20" x2="231" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="403" y1="20" x2="403" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="574" y1="20" x2="574" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<defs>
<linearGradient id="ivGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4169E1" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#4169E1" stop-opacity="0.05"/>
</linearGradient>
</defs>
<path d="M60,220 L435,220 L442,220 L450,219 L458,218 L465,214 L480,200 L495,164 L510,128 L532,74 L555,20 L555,220 L60,220 Z" fill="url(#ivGrad)" opacity="0.15"/>
<path d="M60,220 L435,220 L442,220 L450,219 L458,218 L465,214 L480,200 L495,164 L510,128 L532,74 L555,20" stroke="#4169E1" stroke-width="2.5" fill="none"/>
<!-- Operating point -->
<circle cx="480" cy="200" r="5" fill="#4169E1" opacity="0.9"/>
<line x1="480" y1="200" x2="480" y2="220" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<line x1="60" y1="200" x2="480" y2="200" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>
<rect x="485" y="186" width="110" height="28" rx="4" fill="#4169E11e"/>
<text x="540" y="199" fill="#4169E1" font-size="10" text-anchor="middle">Typ: 3.0V, 5mA</text>
<text x="540" y="210" fill="#8b949e" font-size="8" text-anchor="middle">Operating point</text>
<!-- Max If line -->
<line x1="60" y1="120" x2="660" y2="120" stroke="#f85149" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.3"/>
<text x="100" y="114" fill="#f85149" font-size="9">25mA max</text>
<!-- Y axis labels -->
<text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>
<text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">12.5</text>
<text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">25</text>
<text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">37.5</text>
<text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">50</text>
<text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Forward Current (mA)</text>
<text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>
<text x="231" y="255" fill="#484f58" font-size="9" text-anchor="middle">1.0</text>
<text x="403" y="255" fill="#484f58" font-size="9" text-anchor="middle">2.0</text>
<text x="574" y="255" fill="#484f58" font-size="9" text-anchor="middle">3.0</text>
<text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Voltage (V)</text>
</svg>
<div class="chart-note">Characteristic exponential IV curve for a InGaN blue LED. Design point: 3.0V typical at 5mA. Never exceed 25mA continuous forward current.</div>
</div>
</div>
<!-- Derating -->
<div class="section">
<h2 class="section-title">Forward Current Derating</h2>
<div class="chart-wrap">
<h3>Maximum Forward Current vs. Ambient Temperature</h3>
<svg id="derating-chart" width="100%" height="280" viewBox="0 0 700 280">
<rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>
<line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<defs>
<linearGradient id="derateGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#4169E1" stop-opacity="0.6"/>
<stop offset="100%" stop-color="#4169E1" stop-opacity="0.05"/>
</linearGradient>
</defs>
<!-- Derating: flat at 25mA until 25C, linear down to 0mA at ~89C -->
<path d="M60,20 L210,20 L540,187 L565,220 L60,220 Z" fill="url(#derateGrad)" opacity="0.12"/>
<path d="M60,20 L210,20" stroke="#4169E1" stroke-width="2.5" fill="none"/>
<path d="M210,20 L540,187" stroke="#4169E1" stroke-width="2.5" fill="none"/>
<path d="M540,187 L565,220" stroke="#4169E1" stroke-width="2.5" fill="none" stroke-dasharray="4,3"/>
<circle cx="210" cy="20" r="4" fill="#4169E1" opacity="0.9"/>
<text x="210" y="40" fill="#4169E1" font-size="10" text-anchor="middle">25mA @ 25°C</text>
<circle cx="540" cy="187" r="4" fill="#4169E1" opacity="0.9"/>
<text x="540" y="178" fill="#4169E1" font-size="10" text-anchor="middle">5mA @ 80°C</text>
<rect x="200" y="100" width="110" height="20" rx="4" fill="rgba(63,185,80,0.12)"/>
<text x="255" y="114" fill="#3fb950" font-size="10" text-anchor="middle">Safe operating</text>
<text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>
<text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">7.5</text>
<text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">15</text>
<text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">22.5</text>
<text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">30</text>
<text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Max If (mA)</text>
<text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>
<text x="210" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>
<text x="360" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>
<text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">80</text>
<text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">100</text>
<text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>
</svg>
<div class="chart-note">Maximum forward current decreases linearly with temperature above 25°C. At 85°C, significant derating is required. Design margin is critical in enclosed or high-temperature applications.</div>
</div>
</div>
<!-- Brightness vs Current -->
<div class="section">
<h2 class="section-title">Luminous Intensity vs. Forward Current</h2>
<div class="chart-wrap">
<h3>Relative Brightness (normalized at 5mA)</h3>
<svg id="brightness-current-chart" width="100%" height="280" viewBox="0 0 700 280">
<rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>
<line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<path d="M60,220 Q120,168 180,155 Q240,135 300,120 Q360,106 420,95 Q480,78 540,64 Q600,52 660,40"
stroke="#4169E1" stroke-width="2.5" fill="none"/>
<path d="M60,220 L660,20" stroke="#484f58" stroke-width="1" stroke-dasharray="5,4" opacity="0.4"/>
<text x="600" y="50" fill="#484f58" font-size="9">Linear</text>
<circle cx="300" cy="120" r="5" fill="#4169E1" opacity="0.9"/>
<line x1="60" y1="120" x2="300" y2="120" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>
<line x1="300" y1="120" x2="300" y2="220" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>
<text x="310" y="114" fill="#4169E1" font-size="10">1.0 @ 5mA</text>
<text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>
<text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>
<text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>
<text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>
<text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>
<text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>
<text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>
<text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>
<text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">20</text>
<text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">30</text>
<text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">40</text>
<text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>
<text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Current (mA)</text>
</svg>
<div class="chart-note">Brightness increases sublinearly with current. Diminishing returns at higher drive currents — optimize for efficiency at or below 5mA.</div>
</div>
</div>
<!-- Brightness vs Temperature -->
<div class="section">
<h2 class="section-title">Luminous Intensity vs. Temperature</h2>
<div class="chart-wrap">
<h3>Relative Brightness vs. Ambient Temperature (normalized at 25°C)</h3>
<svg id="brightness-temp-chart" width="100%" height="280" viewBox="0 0 700 280">
<rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>
<line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>
<line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>
<path d="M60,70 L180,95 L240,105 L300,112 L390,120 L480,134 L540,142 L600,148 L660,150"
stroke="#4169E1" stroke-width="2.5" fill="none"/>
<circle cx="390" cy="120" r="5" fill="#4169E1" opacity="0.9"/>
<line x1="60" y1="120" x2="390" y2="120" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>
<line x1="390" y1="120" x2="390" y2="220" stroke="#4169E1" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>
<text x="400" y="114" fill="#4169E1" font-size="10">1.0 @ 25°C</text>
<text x="100" y="62" fill="#58a6ff" font-size="9">Brighter when cold</text>
<text x="570" y="165" fill="#f85149" font-size="9">Dimmer when hot</text>
<text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>
<text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>
<text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>
<text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>
<text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>
<text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>
<text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">-30</text>
<text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">-10</text>
<text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>
<text x="390" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>
<text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>
<text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">70</text>
<text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>
</svg>
<div class="chart-note">InGaN LEDs lose brightness at elevated temperatures. At 70°C, expect ~30% reduction. Account for this in designs with wide temperature swings.</div>
</div>
</div>
<!-- Resistor Calculator -->
<div class="section">
<h2 class="section-title">LED Resistor Calculator</h2>
<div class="calc-card">
<h3>⚡ Series Resistor Selection</h3>
<div class="calc-inputs">
<div class="calc-field">
<label>Supply Voltage</label>
<input type="number" id="calc-vsupply" value="5.0" step="0.1" min="0">
<div class="unit">Volts</div>
</div>
<div class="calc-field">
<label>Desired Current</label>
<input type="number" id="calc-iled" value="5" step="1" min="0">
<div class="unit">Milliamps</div>
</div>
</div>
<div class="calc-results">
<div class="calc-result">
<div class="cr-label">Calculated Resistor</div>
<div class="cr-value" id="calc-r-exact">440 Ω</div>
<div class="cr-detail" id="calc-r-formula">R = (5.0V - 3.0V) / 5mA</div>
</div>
<div class="calc-result">
<div class="cr-label">Nearest E24 Value</div>
<div class="cr-value" id="calc-r-e24">430 Ω</div>
<div class="cr-detail" id="calc-r-actual">Actual If = 5.1mA</div>
</div>
<div class="calc-result">
<div class="cr-label">Resistor Power</div>
<div class="cr-value" id="calc-p-resistor">11.3 mW</div>
<div class="cr-detail" id="calc-p-r-detail">P = (V<sub>supply</sub> - V<sub>f</sub>) × I<sub>f</sub></div>
</div>
<div class="calc-result">
<div class="cr-label">LED Power</div>
<div class="cr-value" id="calc-p-led">14.3 mW</div>
<div class="cr-detail" id="calc-p-led-detail">P = V<sub>f</sub> × I<sub>f</sub> (max 75mW)</div>
</div>
</div>
<div class="calc-schematic">
<svg width="400" height="80" viewBox="0 0 400 80" style="max-width:100%">
<text x="20" y="38" fill="#e6edf3" font-size="11" font-family="JetBrains Mono,monospace" id="calc-svg-vsupply">5.0V</text>
<line x1="50" y1="35" x2="90" y2="35" stroke="#e6edf3" stroke-width="1.5"/>
<path d="M90,35 L100,25 L110,45 L120,25 L130,45 L140,25 L150,45 L160,35" stroke="#00b8b0" stroke-width="2" fill="none"/>
<text x="125" y="60" fill="#00b8b0" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-r">430Ω</text>
<line x1="160" y1="35" x2="210" y2="35" stroke="#e6edf3" stroke-width="1.5"/>
<polygon points="210,22 210,48 240,35" fill="none" stroke="#4169E1" stroke-width="2"/>
<line x1="240" y1="22" x2="240" y2="48" stroke="#4169E1" stroke-width="2"/>
<line x1="230" y1="18" x2="238" y2="10" stroke="#4169E1" stroke-width="1"/>
<line x1="235" y1="22" x2="243" y2="14" stroke="#4169E1" stroke-width="1"/>
<polygon points="238,10 234,13 237,14" fill="#4169E1"/>
<polygon points="243,14 239,17 242,18" fill="#4169E1"/>
<text x="225" y="65" fill="#4169E1" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace">LED</text>
<line x1="240" y1="35" x2="300" y2="35" stroke="#e6edf3" stroke-width="1.5"/>
<line x1="300" y1="28" x2="300" y2="42" stroke="#e6edf3" stroke-width="1.5"/>
<line x1="290" y1="42" x2="310" y2="42" stroke="#e6edf3" stroke-width="1.5"/>
<line x1="294" y1="47" x2="306" y2="47" stroke="#e6edf3" stroke-width="1.2"/>
<line x1="297" y1="52" x2="303" y2="52" stroke="#e6edf3" stroke-width="0.8"/>
<text x="320" y="42" fill="#8b949e" font-size="10" font-family="JetBrains Mono,monospace">GND</text>
<text x="180" y="26" fill="#8b949e" font-size="9" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-if">5mA</text>
<line x1="168" y1="30" x2="192" y2="30" stroke="#8b949e" stroke-width="0.5"/>
<polygon points="192,30 187,27 187,33" fill="#8b949e"/>
</svg>
</div>
</div>
</div>
<!-- Environmental -->
<div class="section">
<h2 class="section-title">Environmental & Handling</h2>
<div class="env-grid">
<div class="env-card">
<div class="env-name">ESD Sensitivity</div>
<div class="env-spec">InGaN — ESD precautions required</div>
<div class="env-detail">Use grounded wrist straps & ESD-safe tools</div>
</div>
<div class="env-card">
<div class="env-name">Operating Temperature</div>
<div class="env-spec">Continuous operation range</div>
<div class="env-detail">−30°C to +85°C</div>
</div>
<div class="env-card">
<div class="env-name">Storage Temperature</div>
<div class="env-spec">Unbiased storage</div>
<div class="env-detail">−40°C to +90°C</div>
</div>
<div class="env-card">
<div class="env-name">Moisture Sensitivity</div>
<div class="env-spec">MSL noted in packaging</div>
<div class="env-detail">Follow J-STD-020 bake requirements</div>
</div>
</div>
</div>
<!-- Symbol, Footprint & 3D View -->
<div class="section">
<h2 class="section-title">Symbol, Footprint & 3D Model</h2>
<div class="grid-2" style="margin-bottom:12px">
<!-- Interactive SymView -->
<div class="card" style="padding:0;overflow:hidden">
<div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Schematic Symbol</div>
<iframe src="IN-S63BT5B-symview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>
</div>
<!-- Interactive FpView -->
<div class="card" style="padding:0;overflow:hidden">
<div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Footprint (0603)</div>
<iframe src="IN-S63BT5B-fpview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>
</div>
</div>
<!-- 3D Model -->
<div class="card" style="text-align:center;margin-bottom:12px">
<div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);margin-bottom:12px">3D Model (interactive)</div>
<canvas id="viewer3d" width="600" height="300" style="width:100%;height:300px;border-radius:4px;cursor:grab"></canvas>
<div style="font-size:10px;color:var(--text-dim);margin-top:6px">Click & drag to rotate · Scroll to zoom</div>
</div>
<!-- Download / Export Bar -->
<div class="card" style="display:flex;align-items:center;gap:10px;flex-wrap:wrap">
<span style="font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px">Export:</span>
<a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.kicad_sym" download>KiCad Symbol (.kicad_sym)</a>
<a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.kicad_mod" download>KiCad Footprint (.kicad_mod)</a>
<a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.lbr" download>Fusion 360 (.lbr)</a>
<a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s63bt5b/IN-S63BT5B.step" download>3D Model (.step)</a>
</div>
</div>
<!-- Documents -->
<div class="section">
<h2 class="section-title">Documents</h2>
<div class="card">
<table class="detail-table">
<tr><td>Datasheet</td><td><a href="http://www.inolux-corp.com/datasheet/SMDLED/Mono%20Color%20Top%20View/IN-S63BT%20Series.pdf" target="_blank">IN-S63BT Series (PDF) →</a></td></tr>
<tr><td>Series</td><td>IN-S63BT</td></tr>
<tr><td>Manufacturer</td><td>Inolux Corporation</td></tr>
</table>
</div>
</div>
<div class="source">
IN-S63BT5B characterization · Data from Inolux IN-S63BT Series datasheet · 2026-06-03
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/pmrem/PMREMGenerator.js"></script>
<script>
(function() {
// ==================== 3D Viewer — IN-S63BT5B (0603 LED, blue) ====================
var canvas = document.getElementById('viewer3d');
if (canvas && window.THREE) {
var scene = new THREE.Scene();
var renderer = new THREE.WebGLRenderer({ canvas: canvas, antialias: true, alpha: true, logarithmicDepthBuffer: true });
renderer.setSize(canvas.width, canvas.height);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.2;
renderer.physicallyCorrectLights = true;
canvas.style.background = 'linear-gradient(180deg, #5a6b7e 0%, #2a3340 100%)';
var camera = new THREE.PerspectiveCamera(35, canvas.width / canvas.height, 0.01, 1000);
var pmremGen = new THREE.PMREMGenerator(renderer);
pmremGen.compileEquirectangularShader();
var envScene = new THREE.Scene();
envScene.background = new THREE.Color(0x3a4550);
var envLight1 = new THREE.DirectionalLight(0xffffff, 2);
envLight1.position.set(1, 3, 2); envScene.add(envLight1);
var envLight2 = new THREE.DirectionalLight(0x8899bb, 1);
envLight2.position.set(-2, 1, -1); envScene.add(envLight2);
var envRT = pmremGen.fromScene(envScene, 0.04);
scene.environment = envRT.texture;
scene.add(new THREE.HemisphereLight(0xe6edf3, 0xb3a699, 0.5));
var keyLight = new THREE.DirectionalLight(0xffffff, 1.5);
keyLight.position.set(2, 5, 3); scene.add(keyLight);
var fillLight = new THREE.DirectionalLight(0x8899aa, 0.5);
fillLight.position.set(-3, 2, -2); scene.add(fillLight);
var rimLight = new THREE.DirectionalLight(parseInt('#4169E1'.slice(1), 16), 0.4);
rimLight.position.set(0, -1, 3); scene.add(rimLight);
var S = 1.5; // 0603 is bigger than 0402 so scale less
var bodyW = 1.6, bodyD = 0.8, bodyH = 0.3;
var lensH = 0.08;
var termW = 0.25;
var bodyMat = new THREE.MeshStandardMaterial({ color: 0x2a2018, metalness: 0.0, roughness: 0.4 });
var lensMat = new THREE.MeshStandardMaterial({
color: parseInt('#4169E1'.slice(1), 16), metalness: 0.0, roughness: 0.15,
transparent: true, opacity: 0.55,
emissive: parseInt('#2850C0'.slice(1), 16), emissiveIntensity: 0.3
});
var termMat = new THREE.MeshStandardMaterial({ color: 0xc8ccd1, metalness: 1.0, roughness: 0.25 });
var padMat = new THREE.MeshStandardMaterial({ color: 0xc9a04c, metalness: 1.0, roughness: 0.22 });
var pcbMat = new THREE.MeshStandardMaterial({ color: 0x0a2a0a, metalness: 0.0, roughness: 0.6 });
var cathodeMat = new THREE.MeshStandardMaterial({ color: parseInt('#4169E1'.slice(1), 16), emissive: parseInt('#2850C0'.slice(1), 16), emissiveIntensity: 0.5, metalness: 0.0, roughness: 0.5 });
var innerW = bodyW - termW * 2 + 0.02;
var body = new THREE.Mesh(new THREE.BoxGeometry(innerW*S, bodyH*S, bodyD*S), bodyMat);
body.position.y = bodyH*S/2; scene.add(body);
var lens = new THREE.Mesh(new THREE.BoxGeometry(bodyW*0.85*S, lensH*S, bodyD*0.85*S), lensMat);
lens.position.y = (bodyH + lensH/2)*S; scene.add(lens);
function makeTerminal(xSign) {
var group = new THREE.Group();
var front = new THREE.Mesh(new THREE.BoxGeometry(termW*S, bodyH*S, bodyD*S*0.99), termMat);
front.position.set(xSign*(bodyW/2 - termW/2)*S, bodyH*S/2, 0);
group.add(front);
var bot = new THREE.Mesh(new THREE.BoxGeometry((termW+0.03)*S, 0.04*S, bodyD*S*0.99), termMat);
bot.position.set(xSign*(bodyW/2 - termW/2)*S, 0.02*S, 0);
group.add(bot);
return group;
}
scene.add(makeTerminal(-1));
scene.add(makeTerminal(1));
var cathMark = new THREE.Mesh(new THREE.BoxGeometry(0.02*S, 0.02*S, bodyD*0.7*S), cathodeMat);
cathMark.position.set(0.4*S, (bodyH + lensH + 0.02)*S, 0); scene.add(cathMark);
var pcb = new THREE.Mesh(new THREE.BoxGeometry(10*S, 0.08*S, 8*S), pcbMat);
pcb.position.y = -0.04*S; scene.add(pcb);
var pad1 = new THREE.Mesh(new THREE.BoxGeometry(0.7*S, 0.025*S, 0.7*S), padMat);
pad1.position.set(-0.35*S, 0.005*S, 0); scene.add(pad1);
var pad2 = new THREE.Mesh(new THREE.BoxGeometry(0.7*S, 0.025*S, 0.7*S), padMat);
pad2.position.set(0.35*S, 0.005*S, 0); scene.add(pad2);
var gridMat2 = new THREE.LineBasicMaterial({ color: 0x0d3d0d, transparent: true, opacity: 0.3 });
for (var i = -8; i <= 8; i++) {
var pts1 = [new THREE.Vector3(i*0.4*S, 0.045*S, -4*S), new THREE.Vector3(i*0.4*S, 0.045*S, 4*S)];
scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts1), gridMat2));
var pts2 = [new THREE.Vector3(-4*S, 0.045*S, i*0.4*S), new THREE.Vector3(4*S, 0.045*S, i*0.4*S)];
scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts2), gridMat2));
}
var isDragging = false, prevX = 0, prevY = 0;
var theta = Math.PI/4, phi = Math.PI/5.5, radius = 5.0;
var target = new THREE.Vector3(0, 0.3, 0);
function updateCamera() {
camera.position.x = radius * Math.sin(theta) * Math.cos(phi);
camera.position.y = radius * Math.sin(phi) + target.y;
camera.position.z = radius * Math.cos(theta) * Math.cos(phi);
camera.lookAt(target);
}
updateCamera();
canvas.addEventListener('mousedown', function(e) { isDragging = true; prevX = e.clientX; prevY = e.clientY; canvas.style.cursor = 'grabbing'; });
window.addEventListener('mouseup', function() { isDragging = false; canvas.style.cursor = 'grab'; });
canvas.addEventListener('mousemove', function(e) {
if (!isDragging) return;
theta -= (e.clientX - prevX) * 0.008;
phi = Math.max(0.05, Math.min(Math.PI/2.2, phi + (e.clientY - prevY) * 0.008));
prevX = e.clientX; prevY = e.clientY;
updateCamera();
});
canvas.addEventListener('wheel', function(e) {
e.preventDefault();
radius = Math.max(2, Math.min(12, radius + e.deltaY * 0.004));
updateCamera();
}, { passive: false });
function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); }
animate();
}
// ==================== Resistor Calculator ====================
var VF_TYP = 3.0;
var E24 = [10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91];
function nearestE24(val) {
if (val <= 0) return 0;
var decade = 1;
while (val >= 100) { val /= 10; decade *= 10; }
while (val < 10) { val *= 10; decade /= 10; }
var best = E24[0], bestDist = Math.abs(val - E24[0]);
for (var i = 1; i < E24.length; i++) {
var d = Math.abs(val - E24[i]);
if (d < bestDist) { bestDist = d; best = E24[i]; }
}
return best * decade;
}
function formatResistance(r) {
if (r >= 1e6) return (r/1e6).toFixed(1) + ' MΩ';
if (r >= 1e3) return (r/1e3).toFixed(0) + ' kΩ';
if (r >= 100) return r.toFixed(0) + ' Ω';
if (r >= 10) return r.toFixed(1) + ' Ω';
return r.toFixed(2) + ' Ω';
}
function updateCalculator() {
var vSupply = parseFloat(document.getElementById('calc-vsupply').value) || 0;
var iLed = parseFloat(document.getElementById('calc-iled').value) || 0;
var iLedA = iLed / 1000;
var vDrop = vSupply - VF_TYP;
var rExact = vDrop > 0 && iLedA > 0 ? vDrop / iLedA : 0;
var rE24 = nearestE24(rExact);
var iActual = rE24 > 0 ? vDrop / rE24 : 0;
var pResistor = vDrop * iActual;
var pLed = VF_TYP * iActual;
document.getElementById('calc-r-exact').innerHTML = rExact > 0 ? formatResistance(rExact) : '—';
document.getElementById('calc-r-formula').textContent = 'R = (' + vSupply.toFixed(1) + 'V - ' + VF_TYP + 'V) / ' + iLed.toFixed(0) + 'mA';
document.getElementById('calc-r-e24').innerHTML = rE24 > 0 ? formatResistance(rE24) : '—';
document.getElementById('calc-r-actual').textContent = iActual > 0 ? 'Actual If = ' + (iActual * 1000).toFixed(1) + 'mA' : '';
document.getElementById('calc-p-resistor').textContent = pResistor > 0 ? (pResistor * 1000).toFixed(1) + ' mW' : '—';
document.getElementById('calc-p-led').textContent = pLed > 0 ? (pLed * 1000).toFixed(1) + ' mW' : '—';
var svgVs = document.getElementById('calc-svg-vsupply');
if (svgVs) svgVs.textContent = vSupply.toFixed(1) + 'V';
var svgR = document.getElementById('calc-svg-r');
if (svgR) svgR.textContent = rE24 > 0 ? formatResistance(rE24) : '—';
var svgIf = document.getElementById('calc-svg-if');
if (svgIf) svgIf.textContent = iActual > 0 ? (iActual * 1000).toFixed(1) + 'mA' : '';
var pLedEl = document.getElementById('calc-p-led');
if (pLed * 1000 > 75) { pLedEl.style.color = '#f85149'; } else { pLedEl.style.color = ''; }
var rExactEl = document.getElementById('calc-r-exact');
if (vDrop <= 0) { rExactEl.innerHTML = '<span style="color:#f85149">V<sub>supply</sub> too low</span>'; }
}
document.getElementById('calc-vsupply').addEventListener('input', updateCalculator);
document.getElementById('calc-iled').addEventListener('input', updateCalculator);
updateCalculator();
})();
</script>
</body>
</html>