├── .cargo └── config.toml ├── .gitignore ├── .vscode └── settings.json ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── memory.x ├── pcb ├── ir-smart-led-controller.csv ├── ir-smart-led-controller.kicad_pcb ├── ir-smart-led-controller.kicad_prl ├── ir-smart-led-controller.kicad_pro ├── ir-smart-led-controller.kicad_sch ├── ir-smart-led-controller.kicad_sym ├── ir-smart-led-controller.pdf ├── ir-smart-led-controller.png ├── ir-smart-led-controller.zip └── sym-lib-table ├── readme.md ├── rust-toolchain └── src ├── main.rs └── strip.rs /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [target.thumbv6m-none-eabi] 2 | runner = "probe-run --chip STM32G030J6Mx" 3 | 4 | rustflags = [ 5 | "-C", "linker=arm-none-eabi-ld", 6 | "-C", "link-arg=-Tlink.x", 7 | "-C", "link-arg=-Tdefmt.x", 8 | ] 9 | 10 | [build] 11 | target = "thumbv6m-none-eabi" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | pcb/fp-info-cache 3 | pcb/ir-smart-led-controller-backups/* 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.cargo.target": "thumbv6m-none-eabi", 3 | "rust-analyzer.checkOnSave.allTargets": false 4 | } -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "aho-corasick" 7 | version = "0.7.19" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" 10 | dependencies = [ 11 | "memchr", 12 | ] 13 | 14 | [[package]] 15 | name = "arrayvec" 16 | version = "0.7.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 19 | 20 | [[package]] 21 | name = "atomic-polyfill" 22 | version = "0.1.10" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "9c041a8d9751a520ee19656232a18971f18946a7900f1520ee4400002244dd89" 25 | dependencies = [ 26 | "critical-section", 27 | ] 28 | 29 | [[package]] 30 | name = "autocfg" 31 | version = "1.1.0" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 34 | 35 | [[package]] 36 | name = "bare-metal" 37 | version = "0.2.5" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" 40 | dependencies = [ 41 | "rustc_version 0.2.3", 42 | ] 43 | 44 | [[package]] 45 | name = "bare-metal" 46 | version = "1.0.0" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" 49 | 50 | [[package]] 51 | name = "bit_field" 52 | version = "0.10.1" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" 55 | 56 | [[package]] 57 | name = "bitfield" 58 | version = "0.13.2" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" 61 | 62 | [[package]] 63 | name = "bitflags" 64 | version = "1.3.2" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 67 | 68 | [[package]] 69 | name = "bytemuck" 70 | version = "1.12.2" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "5aec14f5d4e6e3f927cd0c81f72e5710d95ee9019fbeb4b3021193867491bfd8" 73 | 74 | [[package]] 75 | name = "byteorder" 76 | version = "1.4.3" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 79 | 80 | [[package]] 81 | name = "cfg-if" 82 | version = "1.0.0" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 85 | 86 | [[package]] 87 | name = "cortex-m" 88 | version = "0.7.6" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | checksum = "70858629a458fdfd39f9675c4dc309411f2a3f83bede76988d81bf1a0ecee9e0" 91 | dependencies = [ 92 | "bare-metal 0.2.5", 93 | "bitfield", 94 | "embedded-hal", 95 | "volatile-register", 96 | ] 97 | 98 | [[package]] 99 | name = "cortex-m-rt" 100 | version = "0.6.15" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | checksum = "454f278bf469e2de0a4d22ea019d169d8944f86957c8207a39e3f66c32be2fc6" 103 | dependencies = [ 104 | "cortex-m-rt-macros", 105 | "r0", 106 | ] 107 | 108 | [[package]] 109 | name = "cortex-m-rt-macros" 110 | version = "0.6.15" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | checksum = "c8e3aa52243e26f5922fa522b0814019e0c98fc567e2756d715dce7ad7a81f49" 113 | dependencies = [ 114 | "proc-macro2", 115 | "quote", 116 | "syn", 117 | ] 118 | 119 | [[package]] 120 | name = "cortex-m-rtic" 121 | version = "1.1.3" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "c6b82f1c39acd6c3a35c2013b6110c20f5bc534522791fabadeed49ccada2dce" 124 | dependencies = [ 125 | "bare-metal 1.0.0", 126 | "cortex-m", 127 | "cortex-m-rtic-macros", 128 | "heapless", 129 | "rtic-core", 130 | "rtic-monotonic", 131 | "version_check", 132 | ] 133 | 134 | [[package]] 135 | name = "cortex-m-rtic-macros" 136 | version = "1.1.5" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "9e8e9645ef54bec1cf70ac33e9bf9566e6507ab5b41ae6baf3735662194e8607" 139 | dependencies = [ 140 | "proc-macro-error", 141 | "proc-macro2", 142 | "quote", 143 | "rtic-syntax", 144 | "syn", 145 | ] 146 | 147 | [[package]] 148 | name = "critical-section" 149 | version = "0.2.7" 150 | source = "registry+https://github.com/rust-lang/crates.io-index" 151 | checksum = "95da181745b56d4bd339530ec393508910c909c784e8962d15d722bacf0bcbcd" 152 | dependencies = [ 153 | "bare-metal 1.0.0", 154 | "cfg-if", 155 | "cortex-m", 156 | "riscv", 157 | ] 158 | 159 | [[package]] 160 | name = "defmt" 161 | version = "0.3.2" 162 | source = "registry+https://github.com/rust-lang/crates.io-index" 163 | checksum = "d3a0ae7494d9bff013d7b89471f4c424356a71e9752e0c78abe7e6c608a16bb3" 164 | dependencies = [ 165 | "bitflags", 166 | "defmt-macros", 167 | ] 168 | 169 | [[package]] 170 | name = "defmt-macros" 171 | version = "0.3.3" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "8500cbe4cca056412efce4215a63d0bc20492942aeee695f23b624a53e0a6854" 174 | dependencies = [ 175 | "defmt-parser", 176 | "proc-macro-error", 177 | "proc-macro2", 178 | "quote", 179 | "syn", 180 | ] 181 | 182 | [[package]] 183 | name = "defmt-parser" 184 | version = "0.3.1" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | checksum = "0db23d29972d99baa3de2ee2ae3f104c10564a6d05a346eb3f4c4f2c0525a06e" 187 | 188 | [[package]] 189 | name = "defmt-rtt" 190 | version = "0.3.2" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "1d2cbbbd58847d508d97629b32cd9730a2d28532f71e219714614406029f18b1" 193 | dependencies = [ 194 | "critical-section", 195 | "defmt", 196 | ] 197 | 198 | [[package]] 199 | name = "embedded-hal" 200 | version = "0.2.7" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" 203 | dependencies = [ 204 | "nb 0.1.3", 205 | "void", 206 | ] 207 | 208 | [[package]] 209 | name = "fugit" 210 | version = "0.3.6" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "7ab17bb279def6720d058cb6c052249938e7f99260ab534879281a95367a87e5" 213 | dependencies = [ 214 | "gcd", 215 | ] 216 | 217 | [[package]] 218 | name = "gcd" 219 | version = "2.1.0" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | checksum = "f37978dab2ca789938a83b2f8bc1ef32db6633af9051a6cd409eff72cbaaa79a" 222 | dependencies = [ 223 | "paste", 224 | ] 225 | 226 | [[package]] 227 | name = "hash32" 228 | version = "0.2.1" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 231 | dependencies = [ 232 | "byteorder", 233 | ] 234 | 235 | [[package]] 236 | name = "hashbrown" 237 | version = "0.12.3" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 240 | 241 | [[package]] 242 | name = "heapless" 243 | version = "0.7.16" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" 246 | dependencies = [ 247 | "atomic-polyfill", 248 | "hash32", 249 | "rustc_version 0.4.0", 250 | "spin", 251 | "stable_deref_trait", 252 | ] 253 | 254 | [[package]] 255 | name = "indexmap" 256 | version = "1.9.1" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" 259 | dependencies = [ 260 | "autocfg", 261 | "hashbrown", 262 | ] 263 | 264 | [[package]] 265 | name = "infrared" 266 | version = "0.11.0" 267 | source = "registry+https://github.com/rust-lang/crates.io-index" 268 | checksum = "6328c6548e218efc9fb8373c65d44929923df59bb139d1855c0a6eeaaf7deda8" 269 | dependencies = [ 270 | "embedded-hal", 271 | "nb 1.0.0", 272 | ] 273 | 274 | [[package]] 275 | name = "ir-smart-led-controller" 276 | version = "0.0.1" 277 | dependencies = [ 278 | "cortex-m", 279 | "cortex-m-rt", 280 | "cortex-m-rtic", 281 | "defmt", 282 | "defmt-rtt", 283 | "infrared", 284 | "panic-halt", 285 | "panic-probe", 286 | "smart-leds", 287 | "stm32g0xx-hal", 288 | "ushell", 289 | "ws2812-spi", 290 | ] 291 | 292 | [[package]] 293 | name = "lazy_static" 294 | version = "1.4.0" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 297 | 298 | [[package]] 299 | name = "lock_api" 300 | version = "0.4.9" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 303 | dependencies = [ 304 | "autocfg", 305 | "scopeguard", 306 | ] 307 | 308 | [[package]] 309 | name = "memchr" 310 | version = "2.5.0" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 313 | 314 | [[package]] 315 | name = "nb" 316 | version = "0.1.3" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" 319 | dependencies = [ 320 | "nb 1.0.0", 321 | ] 322 | 323 | [[package]] 324 | name = "nb" 325 | version = "1.0.0" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" 328 | 329 | [[package]] 330 | name = "panic-halt" 331 | version = "0.2.0" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812" 334 | 335 | [[package]] 336 | name = "panic-probe" 337 | version = "0.3.0" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "3ab1f00eac22bd18f8e5cae9555f2820b3a0c166b5b556ee3e203746ea6dcf3a" 340 | dependencies = [ 341 | "cortex-m", 342 | ] 343 | 344 | [[package]] 345 | name = "paste" 346 | version = "1.0.9" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" 349 | 350 | [[package]] 351 | name = "proc-macro-error" 352 | version = "1.0.4" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 355 | dependencies = [ 356 | "proc-macro-error-attr", 357 | "proc-macro2", 358 | "quote", 359 | "syn", 360 | "version_check", 361 | ] 362 | 363 | [[package]] 364 | name = "proc-macro-error-attr" 365 | version = "1.0.4" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 368 | dependencies = [ 369 | "proc-macro2", 370 | "quote", 371 | "version_check", 372 | ] 373 | 374 | [[package]] 375 | name = "proc-macro2" 376 | version = "1.0.47" 377 | source = "registry+https://github.com/rust-lang/crates.io-index" 378 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 379 | dependencies = [ 380 | "unicode-ident", 381 | ] 382 | 383 | [[package]] 384 | name = "quote" 385 | version = "1.0.21" 386 | source = "registry+https://github.com/rust-lang/crates.io-index" 387 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" 388 | dependencies = [ 389 | "proc-macro2", 390 | ] 391 | 392 | [[package]] 393 | name = "r0" 394 | version = "0.2.2" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" 397 | 398 | [[package]] 399 | name = "regex" 400 | version = "1.6.0" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" 403 | dependencies = [ 404 | "aho-corasick", 405 | "memchr", 406 | "regex-syntax", 407 | ] 408 | 409 | [[package]] 410 | name = "regex-syntax" 411 | version = "0.6.27" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" 414 | 415 | [[package]] 416 | name = "rgb" 417 | version = "0.8.34" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | checksum = "3603b7d71ca82644f79b5a06d1220e9a58ede60bd32255f698cb1af8838b8db3" 420 | dependencies = [ 421 | "bytemuck", 422 | ] 423 | 424 | [[package]] 425 | name = "riscv" 426 | version = "0.7.0" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | checksum = "6907ccdd7a31012b70faf2af85cd9e5ba97657cc3987c4f13f8e4d2c2a088aba" 429 | dependencies = [ 430 | "bare-metal 1.0.0", 431 | "bit_field", 432 | "riscv-target", 433 | ] 434 | 435 | [[package]] 436 | name = "riscv-target" 437 | version = "0.1.2" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "88aa938cda42a0cf62a20cfe8d139ff1af20c2e681212b5b34adb5a58333f222" 440 | dependencies = [ 441 | "lazy_static", 442 | "regex", 443 | ] 444 | 445 | [[package]] 446 | name = "rtic-core" 447 | version = "1.0.0" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "d9369355b04d06a3780ec0f51ea2d225624db777acbc60abd8ca4832da5c1a42" 450 | 451 | [[package]] 452 | name = "rtic-monotonic" 453 | version = "1.0.0" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "fb8b0b822d1a366470b9cea83a1d4e788392db763539dc4ba022bcc787fece82" 456 | 457 | [[package]] 458 | name = "rtic-syntax" 459 | version = "1.0.2" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "3ad3ae243dd8d0a1b064615f664d4fa7e63929939074c564cbe5efdc4c503065" 462 | dependencies = [ 463 | "indexmap", 464 | "proc-macro2", 465 | "quote", 466 | "syn", 467 | ] 468 | 469 | [[package]] 470 | name = "rustc_version" 471 | version = "0.2.3" 472 | source = "registry+https://github.com/rust-lang/crates.io-index" 473 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 474 | dependencies = [ 475 | "semver 0.9.0", 476 | ] 477 | 478 | [[package]] 479 | name = "rustc_version" 480 | version = "0.4.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 483 | dependencies = [ 484 | "semver 1.0.14", 485 | ] 486 | 487 | [[package]] 488 | name = "scopeguard" 489 | version = "1.1.0" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 492 | 493 | [[package]] 494 | name = "semver" 495 | version = "0.9.0" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 498 | dependencies = [ 499 | "semver-parser", 500 | ] 501 | 502 | [[package]] 503 | name = "semver" 504 | version = "1.0.14" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" 507 | 508 | [[package]] 509 | name = "semver-parser" 510 | version = "0.7.0" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 513 | 514 | [[package]] 515 | name = "smart-leds" 516 | version = "0.3.0" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "38dd45fa275f70b4110eac5f5182611ad384f88bb22b68b9a9c3cafd7015290b" 519 | dependencies = [ 520 | "smart-leds-trait", 521 | ] 522 | 523 | [[package]] 524 | name = "smart-leds-trait" 525 | version = "0.2.1" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "ebf6d833fa93f16a1c1874e62c2aebe8567e5bdd436d59bf543ed258b6f7a8e3" 528 | dependencies = [ 529 | "rgb", 530 | ] 531 | 532 | [[package]] 533 | name = "spin" 534 | version = "0.9.4" 535 | source = "registry+https://github.com/rust-lang/crates.io-index" 536 | checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" 537 | dependencies = [ 538 | "lock_api", 539 | ] 540 | 541 | [[package]] 542 | name = "stable_deref_trait" 543 | version = "1.2.0" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 546 | 547 | [[package]] 548 | name = "stm32g0" 549 | version = "0.14.0" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "dfc2ac544cea741c92a501bfd027d197354cd22ee92b439aea26d2ee0b55bcd7" 552 | dependencies = [ 553 | "bare-metal 1.0.0", 554 | "cortex-m", 555 | "cortex-m-rt", 556 | "vcell", 557 | ] 558 | 559 | [[package]] 560 | name = "stm32g0xx-hal" 561 | version = "0.1.5" 562 | source = "git+https://github.com/stm32-rs/stm32g0xx-hal#9582c4a6bd8e726f429186d6e5589dda234b2958" 563 | dependencies = [ 564 | "bare-metal 1.0.0", 565 | "cortex-m", 566 | "embedded-hal", 567 | "fugit", 568 | "nb 1.0.0", 569 | "stm32g0", 570 | "void", 571 | ] 572 | 573 | [[package]] 574 | name = "syn" 575 | version = "1.0.103" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" 578 | dependencies = [ 579 | "proc-macro2", 580 | "quote", 581 | "unicode-ident", 582 | ] 583 | 584 | [[package]] 585 | name = "uluru" 586 | version = "2.2.0" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | checksum = "308dcc9d947b227796f851adb99936fb060681a89c002c9c1928404a3b6c2d72" 589 | dependencies = [ 590 | "arrayvec", 591 | ] 592 | 593 | [[package]] 594 | name = "unicode-ident" 595 | version = "1.0.5" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 598 | 599 | [[package]] 600 | name = "ushell" 601 | version = "0.3.5" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "b19e60f2bf204a9d0dc681c688d76f0cb438fc2d5662788f28edb4cdcc7fa220" 604 | dependencies = [ 605 | "embedded-hal", 606 | "heapless", 607 | "nb 1.0.0", 608 | "uluru", 609 | ] 610 | 611 | [[package]] 612 | name = "vcell" 613 | version = "0.1.3" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" 616 | 617 | [[package]] 618 | name = "version_check" 619 | version = "0.9.4" 620 | source = "registry+https://github.com/rust-lang/crates.io-index" 621 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 622 | 623 | [[package]] 624 | name = "void" 625 | version = "1.0.2" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 628 | 629 | [[package]] 630 | name = "volatile-register" 631 | version = "0.2.1" 632 | source = "registry+https://github.com/rust-lang/crates.io-index" 633 | checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6" 634 | dependencies = [ 635 | "vcell", 636 | ] 637 | 638 | [[package]] 639 | name = "ws2812-spi" 640 | version = "0.3.0" 641 | source = "registry+https://github.com/rust-lang/crates.io-index" 642 | checksum = "c6c2ba0d6c0ea9c117487411e93dc5dacaafc2c17698677a03d1c67901d4c70a" 643 | dependencies = [ 644 | "embedded-hal", 645 | "nb 0.1.3", 646 | "smart-leds-trait", 647 | ] 648 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ir-smart-led-controller" 3 | authors = ["Vitaly Domnikov "] 4 | edition = "2018" 5 | license = "MIT/Apache-2.0" 6 | readme = "README.md" 7 | repository = "https://github.com/dotcypress/ir-smart-led-controller" 8 | version = "0.0.1" 9 | 10 | [dependencies] 11 | cortex-m = "0.7.3" 12 | cortex-m-rt = "0.6.15" 13 | cortex-m-rtic = "1.0.0" 14 | defmt = "0.3.0" 15 | defmt-rtt = "0.3.1" 16 | infrared = "0.11.0" 17 | panic-halt = "0.2.0" 18 | panic-probe = "0.3.0" 19 | smart-leds = "0.3.0" 20 | stm32g0xx-hal = { git = "https://github.com/stm32-rs/stm32g0xx-hal", features = ["rt", "stm32g030"] } 21 | ushell = "0.3.5" 22 | ws2812-spi = { version = "0.3.0", features = [] } 23 | 24 | [profile.release] 25 | debug = false 26 | codegen-units = 1 27 | incremental = false 28 | lto = true 29 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | MIT LICENSE 2 | 3 | Copyright (c) 2021 Vitaly Domnikov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /memory.x: -------------------------------------------------------------------------------- 1 | /* Linker script for the STM32G030J6Mx */ 2 | MEMORY 3 | { 4 | FLASH : ORIGIN = 0x08000000, LENGTH = 16K 5 | RAM : ORIGIN = 0x20000000, LENGTH = 8K 6 | } -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.csv: -------------------------------------------------------------------------------- 1 | Reference, Value, Footprint, Datasheet 2 | "C1","1uF","Capacitor_SMD:C_0603_1608Metric","~" 3 | "C2","1uF","Capacitor_SMD:C_0603_1608Metric","~" 4 | "C3","100nF","Capacitor_SMD:C_0603_1608Metric","~" 5 | "U1","STM32G030J6Mx","Package_SO:SOIC-8_3.9x4.9mm_P1.27mm","https://www.st.com/resource/en/datasheet/stm32g030j6.pdf" 6 | "U2","TSSP58038","OptoDevice:Vishay_MINICAST-3Pin","http://www.vishay.com/docs/82476/tssp58p38.pdf" 7 | "U3","LDK220","Package_TO_SOT_SMD:SOT-23-5","https://www.st.com/resource/en/datasheet/ldk220.pdf" 8 | 9 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.kicad_pcb: -------------------------------------------------------------------------------- 1 | (kicad_pcb (version 20220914) (generator pcbnew) 2 | 3 | (general 4 | (thickness 0.332) 5 | ) 6 | 7 | (paper "A5") 8 | (layers 9 | (0 "F.Cu" signal) 10 | (31 "B.Cu" power) 11 | (32 "B.Adhes" user "B.Adhesive") 12 | (33 "F.Adhes" user "F.Adhesive") 13 | (34 "B.Paste" user) 14 | (35 "F.Paste" user) 15 | (36 "B.SilkS" user "B.Silkscreen") 16 | (37 "F.SilkS" user "F.Silkscreen") 17 | (38 "B.Mask" user) 18 | (39 "F.Mask" user) 19 | (40 "Dwgs.User" user "User.Drawings") 20 | (41 "Cmts.User" user "User.Comments") 21 | (42 "Eco1.User" user "User.Eco1") 22 | (43 "Eco2.User" user "User.Eco2") 23 | (44 "Edge.Cuts" user) 24 | (45 "Margin" user) 25 | (46 "B.CrtYd" user "B.Courtyard") 26 | (47 "F.CrtYd" user "F.Courtyard") 27 | (48 "B.Fab" user) 28 | (49 "F.Fab" user) 29 | ) 30 | 31 | (setup 32 | (stackup 33 | (layer "F.SilkS" (type "Top Silk Screen")) 34 | (layer "F.Paste" (type "Top Solder Paste")) 35 | (layer "F.Mask" (type "Top Solder Mask") (color "Purple") (thickness 0.0254)) 36 | (layer "F.Cu" (type "copper") (thickness 0.0356)) 37 | (layer "dielectric 1" (type "core") (thickness 0.21) (material "FR408-HR") (epsilon_r 3.7) (loss_tangent 0.0091)) 38 | (layer "B.Cu" (type "copper") (thickness 0.0356)) 39 | (layer "B.Mask" (type "Bottom Solder Mask") (color "Purple") (thickness 0.0254)) 40 | (layer "B.Paste" (type "Bottom Solder Paste")) 41 | (layer "B.SilkS" (type "Bottom Silk Screen") (color "White")) 42 | (copper_finish "Immersion gold") 43 | (dielectric_constraints no) 44 | ) 45 | (pad_to_mask_clearance 0) 46 | (pcbplotparams 47 | (layerselection 0x00010fc_ffffffff) 48 | (plot_on_all_layers_selection 0x0000000_00000000) 49 | (disableapertmacros false) 50 | (usegerberextensions false) 51 | (usegerberattributes true) 52 | (usegerberadvancedattributes true) 53 | (creategerberjobfile true) 54 | (dashed_line_dash_ratio 12.000000) 55 | (dashed_line_gap_ratio 3.000000) 56 | (svgprecision 6) 57 | (plotframeref false) 58 | (viasonmask false) 59 | (mode 1) 60 | (useauxorigin false) 61 | (hpglpennumber 1) 62 | (hpglpenspeed 20) 63 | (hpglpendiameter 15.000000) 64 | (dxfpolygonmode true) 65 | (dxfimperialunits true) 66 | (dxfusepcbnewfont true) 67 | (psnegative false) 68 | (psa4output false) 69 | (plotreference true) 70 | (plotvalue true) 71 | (plotinvisibletext false) 72 | (sketchpadsonfab false) 73 | (subtractmaskfromsilk false) 74 | (outputformat 1) 75 | (mirror false) 76 | (drillshape 0) 77 | (scaleselection 1) 78 | (outputdirectory "fab/") 79 | ) 80 | ) 81 | 82 | (net 0 "") 83 | (net 1 "+5V") 84 | (net 2 "GND") 85 | (net 3 "Net-(U1-Pad5)") 86 | (net 4 "VDD") 87 | (net 5 "Net-(J1-Pad2)") 88 | (net 6 "unconnected-(U3-Pad4)") 89 | (net 7 "unconnected-(U1-Pad7)") 90 | (net 8 "unconnected-(U1-Pad8)") 91 | (net 9 "unconnected-(U1-Pad1)") 92 | (net 10 "unconnected-(U1-Pad4)") 93 | 94 | (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") 95 | (tstamp 019deca1-7fa8-4f20-b151-838ae3686efc) 96 | (at 104.3178 57.6834 90) 97 | (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") 98 | (tags "capacitor") 99 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 100 | (property "Sheetname" "") 101 | (path "/177f5fef-e824-4779-8085-3ad999ff3426") 102 | (attr smd) 103 | (fp_text reference "C3" (at 1.9304 -0.0254) (layer "F.SilkS") hide 104 | (effects (font (size 0.7 0.7) (thickness 0.15))) 105 | (tstamp 184d6823-a60c-43d4-84b1-2898cd902e6d) 106 | ) 107 | (fp_text value "C" (at 0 1.43 90) (layer "F.Fab") 108 | (effects (font (size 1 1) (thickness 0.15))) 109 | (tstamp 51c72455-0e99-45f8-b1a9-b67389c546e0) 110 | ) 111 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") 112 | (effects (font (size 0.4 0.4) (thickness 0.06))) 113 | (tstamp d26571ff-5fbb-4fb7-b573-0a1849b3b2c5) 114 | ) 115 | (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) 116 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a2e8f167-a1c5-4055-953a-7d8ddd6662cb)) 117 | (fp_line (start -0.14058 0.51) (end 0.14058 0.51) 118 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 45461944-39ad-4ac7-8175-fdefa084a721)) 119 | (fp_line (start -1.48 -0.73) (end 1.48 -0.73) 120 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 04a43e72-4e9a-45e9-a4fb-71fe330bca7a)) 121 | (fp_line (start -1.48 0.73) (end -1.48 -0.73) 122 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp cf6bbd09-dbe9-4109-951a-7b2e0efd6449)) 123 | (fp_line (start 1.48 -0.73) (end 1.48 0.73) 124 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 70d768aa-3881-48de-b41c-1f3a2e263f06)) 125 | (fp_line (start 1.48 0.73) (end -1.48 0.73) 126 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ead17be4-b1c3-4138-8fc3-e92bdd013692)) 127 | (fp_line (start -0.8 -0.4) (end 0.8 -0.4) 128 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 16f3801d-0131-4fa4-9885-1a4c5c9ddba1)) 129 | (fp_line (start -0.8 0.4) (end -0.8 -0.4) 130 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp e880afd7-c3fe-4aab-abd2-38abb701664d)) 131 | (fp_line (start 0.8 -0.4) (end 0.8 0.4) 132 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6e8f2df9-1807-4d2a-bce4-2e814e810987)) 133 | (fp_line (start 0.8 0.4) (end -0.8 0.4) 134 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 94375e2e-04ab-4647-beb9-dde2ec894559)) 135 | (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 136 | (net 4 "VDD") (tstamp 5927fd18-9a1a-4e6e-90e5-41683c847b9c)) 137 | (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 138 | (net 2 "GND") (tstamp d117e9ea-1863-49e7-8a00-36458f1ba798)) 139 | (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" 140 | (offset (xyz 0 0 0)) 141 | (scale (xyz 1 1 1)) 142 | (rotate (xyz 0 0 0)) 143 | ) 144 | ) 145 | 146 | (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") 147 | (tstamp 0f7490ae-1590-4afe-9389-bbee5250c05f) 148 | (at 101.1936 57.6834 90) 149 | (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") 150 | (tags "capacitor") 151 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 152 | (property "Sheetname" "") 153 | (path "/1bf4bfe3-f758-4a85-86f5-c84a6bd4f9e4") 154 | (attr smd) 155 | (fp_text reference "C1" (at 1.9558 0.0254) (layer "F.SilkS") hide 156 | (effects (font (size 0.7 0.7) (thickness 0.15))) 157 | (tstamp 6ffa2809-af7d-4279-8630-a1fed4386933) 158 | ) 159 | (fp_text value "C" (at 0 1.43 90) (layer "F.Fab") 160 | (effects (font (size 1 1) (thickness 0.15))) 161 | (tstamp 5284fb0c-3258-4971-a179-9e2d65a57cf9) 162 | ) 163 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") 164 | (effects (font (size 0.4 0.4) (thickness 0.06))) 165 | (tstamp 221ad29c-8feb-4e3c-abad-5669bbf5a77d) 166 | ) 167 | (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) 168 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp a795ee96-52ae-44a1-a0cb-a67ef88f4eb9)) 169 | (fp_line (start -0.14058 0.51) (end 0.14058 0.51) 170 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 03ff5c18-b3c9-4fe3-816a-ac5ecc0f3867)) 171 | (fp_line (start -1.48 -0.73) (end 1.48 -0.73) 172 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 636d0a6b-c6b8-42e9-87f0-4b0236582d71)) 173 | (fp_line (start -1.48 0.73) (end -1.48 -0.73) 174 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 0c0f4071-d99c-4ac1-bdee-7c0752ccae6d)) 175 | (fp_line (start 1.48 -0.73) (end 1.48 0.73) 176 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d5549e1d-49e7-4e52-bda1-bd0e9a1ba3ed)) 177 | (fp_line (start 1.48 0.73) (end -1.48 0.73) 178 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 88f55f9b-7963-4329-a7a6-4872344e2525)) 179 | (fp_line (start -0.8 -0.4) (end 0.8 -0.4) 180 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7c16154c-30b8-41d6-b07d-19899c31417c)) 181 | (fp_line (start -0.8 0.4) (end -0.8 -0.4) 182 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c868f0cf-dd7f-420f-b64b-01b0b4e9605a)) 183 | (fp_line (start 0.8 -0.4) (end 0.8 0.4) 184 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2b861936-5a43-4675-9f0e-fa15378c093a)) 185 | (fp_line (start 0.8 0.4) (end -0.8 0.4) 186 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6854a7b7-2ea1-49e7-9bd4-d6402cd2f2ec)) 187 | (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 188 | (net 1 "+5V") (pintype "passive") (tstamp e692bc42-dd28-42cd-9305-0461f78c5083)) 189 | (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 190 | (net 2 "GND") (pintype "passive") (tstamp ac8de5a6-4efb-4326-bbf1-f5d40480dcb4)) 191 | (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" 192 | (offset (xyz 0 0 0)) 193 | (scale (xyz 1 1 1)) 194 | (rotate (xyz 0 0 0)) 195 | ) 196 | ) 197 | 198 | (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (layer "F.Cu") 199 | (tstamp 4878c48e-20fb-4231-abc9-0f8770017140) 200 | (at 108.0366 65.0494 -90) 201 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") 202 | (tags "Through hole pin header THT 1x03 2.54mm single row") 203 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 204 | (property "Sheetname" "") 205 | (path "/e96e6247-4828-425a-bb07-149e75fcd270") 206 | (attr through_hole) 207 | (fp_text reference "U2" (at 0.1016 7.2748) (layer "F.SilkS") hide 208 | (effects (font (size 0.7 0.7) (thickness 0.15))) 209 | (tstamp a38ab970-c750-4054-81e9-039092a40c3c) 210 | ) 211 | (fp_text value "TSSP58038" (at 0 7.41 90) (layer "F.Fab") 212 | (effects (font (size 1 1) (thickness 0.15))) 213 | (tstamp 57062e07-0312-4b0e-8e05-85a617f5a41c) 214 | ) 215 | (fp_text user "${REFERENCE}" (at 0 2.54) (layer "F.Fab") 216 | (effects (font (size 1 1) (thickness 0.15))) 217 | (tstamp 526ffd85-5c12-461c-86a6-1b1f592bbfea) 218 | ) 219 | (fp_line (start -1.33 -1.33) (end 0 -1.33) 220 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 4ecf83c6-5387-4620-967b-969d51875b6d)) 221 | (fp_line (start -1.33 0) (end -1.33 -1.33) 222 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 90ab971c-9fe9-4077-8bc8-84780629b566)) 223 | (fp_line (start -1.33 1.27) (end -1.33 6.41) 224 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5f6a67c0-e3ed-4a0f-ae0e-2d64304df30d)) 225 | (fp_line (start -1.33 1.27) (end 1.33 1.27) 226 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b6a60bbe-c687-4e1f-aeea-e695f40988b3)) 227 | (fp_line (start -1.33 6.41) (end 1.33 6.41) 228 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 0793450b-71f7-4ca4-9c6c-eb057562fa8c)) 229 | (fp_line (start 1.33 1.27) (end 1.33 6.41) 230 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 052a1ad7-9d28-4b00-924c-14051b0aa53c)) 231 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) 232 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ae45f906-18f2-4cde-90d6-d82efb661041)) 233 | (fp_line (start -1.8 6.85) (end 1.8 6.85) 234 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 5f13cd62-8880-4c36-a77a-60d17113ebc0)) 235 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) 236 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6766ecb6-260d-40d8-8ee3-1c5e3758aaf5)) 237 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) 238 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 50fe2afd-ff0c-4036-b109-892939cc6d2a)) 239 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) 240 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp dde11191-d9e0-478e-b0f0-4530ea348f8b)) 241 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) 242 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d43f7ae6-422a-4c22-baa5-1f466d6141e7)) 243 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) 244 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b475d549-61ae-4927-a240-e46f5ef2457a)) 245 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) 246 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2abd572b-927a-4979-9969-ac42d812e779)) 247 | (fp_line (start 1.27 6.35) (end -1.27 6.35) 248 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 8e73356b-2aa7-4411-ac33-06ded034c66c)) 249 | (pad "1" thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 250 | (net 3 "Net-(U1-Pad5)") (pinfunction "OUT") (tstamp 64cfd69c-e7f0-414e-a25b-23034d7bf297)) 251 | (pad "2" thru_hole oval (at 0 2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 252 | (net 2 "GND") (pinfunction "GND") (tstamp 9c87c453-85c9-477b-a5fa-844e2906e217)) 253 | (pad "3" thru_hole oval (at 0 5.08 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 254 | (net 4 "VDD") (pinfunction "Vs") (tstamp 4869b4be-44f1-4770-a7d7-c8ef76761acf)) 255 | (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl" 256 | (offset (xyz 0 0 0)) 257 | (scale (xyz 1 1 1)) 258 | (rotate (xyz 0 0 0)) 259 | ) 260 | ) 261 | 262 | (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" (layer "F.Cu") 263 | (tstamp 8bd745aa-ce85-46c3-ac6b-4327fca60a62) 264 | (at 108.0516 68.7832 -90) 265 | (descr "Through hole straight pin header, 1x03, 2.54mm pitch, single row") 266 | (tags "Through hole pin header THT 1x03 2.54mm single row") 267 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 268 | (property "Sheetname" "") 269 | (path "/f8374557-a6b3-432e-8e1f-c54fb7439493") 270 | (attr through_hole) 271 | (fp_text reference "J1" (at 0 7.1628 180) (layer "F.SilkS") hide 272 | (effects (font (size 0.7 0.7) (thickness 0.15))) 273 | (tstamp 4384e807-206c-4645-bbc1-c20e42e981d6) 274 | ) 275 | (fp_text value "Conn_01x03" (at 0 7.41 90) (layer "F.Fab") 276 | (effects (font (size 1 1) (thickness 0.15))) 277 | (tstamp 4c3a09f3-6c34-4039-bbb3-1e4fd673a633) 278 | ) 279 | (fp_text user "${REFERENCE}" (at 0 2.54) (layer "F.Fab") 280 | (effects (font (size 1 1) (thickness 0.15))) 281 | (tstamp 62c4b5dd-d4ae-44e1-b92c-533730b31a74) 282 | ) 283 | (fp_line (start -1.33 -1.33) (end 0 -1.33) 284 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 93be1dd4-4400-4169-9d5e-085bbdc3eb0e)) 285 | (fp_line (start -1.33 0) (end -1.33 -1.33) 286 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 9872ee9a-dca5-4877-99fa-5f66f6cd419b)) 287 | (fp_line (start -1.33 1.27) (end -1.33 6.41) 288 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 750a0ab5-8e51-4a5e-8b51-ae15b32bac48)) 289 | (fp_line (start -1.33 1.27) (end 1.33 1.27) 290 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 8469e857-f210-4e4e-a67e-a809148aae6f)) 291 | (fp_line (start -1.33 6.41) (end 1.33 6.41) 292 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 77247ca7-5ea0-4b17-9193-6cdf8ca42241)) 293 | (fp_line (start 1.33 1.27) (end 1.33 6.41) 294 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 72748ee2-1eeb-440f-9709-a3de95623708)) 295 | (fp_line (start -1.8 -1.8) (end -1.8 6.85) 296 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8c90beb0-2c8d-4b73-968e-11220d92bce9)) 297 | (fp_line (start -1.8 6.85) (end 1.8 6.85) 298 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6f1f865b-829b-4e26-b041-fdeecbc92bed)) 299 | (fp_line (start 1.8 -1.8) (end -1.8 -1.8) 300 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 64046f98-f5f4-46d7-987f-ca244499aae5)) 301 | (fp_line (start 1.8 6.85) (end 1.8 -1.8) 302 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e6595792-d4d7-454b-83c3-33974bbc9881)) 303 | (fp_line (start -1.27 -0.635) (end -0.635 -1.27) 304 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 66a54f77-c9bc-4e53-bddb-b7fb8440df2e)) 305 | (fp_line (start -1.27 6.35) (end -1.27 -0.635) 306 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 0ddcfb7a-01ec-43eb-ad4e-8b9c0d4d43ae)) 307 | (fp_line (start -0.635 -1.27) (end 1.27 -1.27) 308 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4dba3fc0-f597-4b48-a2af-278f35c5d866)) 309 | (fp_line (start 1.27 -1.27) (end 1.27 6.35) 310 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f94e9ede-71ea-453e-b20b-cab2601cdfc6)) 311 | (fp_line (start 1.27 6.35) (end -1.27 6.35) 312 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 1b9fe52d-6882-4898-badb-d3fd48ebc380)) 313 | (pad "1" thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 314 | (net 2 "GND") (pinfunction "Pin_1") (pintype "passive") (tstamp f97d9d62-b2da-496c-960e-400502c162c2)) 315 | (pad "2" thru_hole oval (at 0 2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 316 | (net 5 "Net-(J1-Pad2)") (pinfunction "Pin_2") (pintype "passive") (tstamp 03e43855-da0c-4b04-8542-b51b6a7a153c)) 317 | (pad "3" thru_hole oval (at 0 5.08 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) 318 | (net 1 "+5V") (pinfunction "Pin_3") (pintype "passive") (tstamp b514107b-cc4e-4160-ab72-473e1e83f1c0)) 319 | (model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x03_P2.54mm_Vertical.wrl" 320 | (offset (xyz 0 0 0)) 321 | (scale (xyz 1 1 1)) 322 | (rotate (xyz 0 0 0)) 323 | ) 324 | ) 325 | 326 | (footprint "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (layer "F.Cu") 327 | (tstamp 9b0f1ba7-4558-4e08-bb17-2dda721874ad) 328 | (at 107.8484 59.436 -90) 329 | (descr "SOIC, 8 Pin (JEDEC MS-012AA, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_8.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") 330 | (tags "SOIC SO") 331 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 332 | (property "Sheetname" "") 333 | (path "/c3d528b8-b82e-463c-af54-e40e4ec54812") 334 | (attr smd) 335 | (fp_text reference "U1" (at 0.0508 1.0922) (layer "F.SilkS") hide 336 | (effects (font (size 0.7 0.7) (thickness 0.15))) 337 | (tstamp fbd89b70-8ebb-48ec-b3b3-ffdfaab28376) 338 | ) 339 | (fp_text value "STM32G030J6Mx" (at 0 3.4 90) (layer "F.Fab") 340 | (effects (font (size 1 1) (thickness 0.15))) 341 | (tstamp 2a09b296-6abe-433b-a217-2ffaf3933478) 342 | ) 343 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") 344 | (effects (font (size 0.98 0.98) (thickness 0.15))) 345 | (tstamp 81b66535-2ae9-4508-98ac-d95dcd31d764) 346 | ) 347 | (fp_line (start 0 -2.56) (end -3.45 -2.56) 348 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 55248945-0986-464d-938d-d6c5b708b377)) 349 | (fp_line (start 0 -2.56) (end 1.95 -2.56) 350 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp f768e086-790e-46ad-9f5c-a7a640d27ca0)) 351 | (fp_line (start 0 2.56) (end -1.95 2.56) 352 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp aa91383f-bdef-499b-b3c9-d9f12ecf70b1)) 353 | (fp_line (start 0 2.56) (end 1.95 2.56) 354 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp d51ca7c3-9fc9-4482-b0ed-07ad25aafa78)) 355 | (fp_line (start -3.7 -2.7) (end -3.7 2.7) 356 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a871c8fb-768c-4df8-a8cd-ba8064b009d1)) 357 | (fp_line (start -3.7 2.7) (end 3.7 2.7) 358 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 60b7dd7e-3df8-4e15-bad6-8e3d27837ed5)) 359 | (fp_line (start 3.7 -2.7) (end -3.7 -2.7) 360 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 322c0efb-821d-4ac7-9187-eea12c1e3baa)) 361 | (fp_line (start 3.7 2.7) (end 3.7 -2.7) 362 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ccf1d8fd-4559-48c7-be9a-0734c619fceb)) 363 | (fp_line (start -1.95 -1.475) (end -0.975 -2.45) 364 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 45388a81-d54c-4629-8fdd-012c6a84d49c)) 365 | (fp_line (start -1.95 2.45) (end -1.95 -1.475) 366 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 3ece99bd-4b8d-4298-979d-b41b44b1d435)) 367 | (fp_line (start -0.975 -2.45) (end 1.95 -2.45) 368 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d0c9a2fd-fc03-4c41-b83e-275e33240338)) 369 | (fp_line (start 1.95 -2.45) (end 1.95 2.45) 370 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4b62047c-543c-486d-be65-1a7f769cb1ff)) 371 | (fp_line (start 1.95 2.45) (end -1.95 2.45) 372 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2751397b-318c-4823-aa62-7c3ebc4c90b1)) 373 | (pad "1" smd roundrect (at -2.475 -1.905 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 374 | (net 9 "unconnected-(U1-Pad1)") (pinfunction "PC14") (tstamp 7b68b62f-54e5-4d09-be32-24f56d96d99b)) 375 | (pad "2" smd roundrect (at -2.475 -0.635 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 376 | (net 4 "VDD") (pinfunction "VDD") (tstamp 58fb8873-11bd-4baf-9d89-7f105763bc04)) 377 | (pad "3" smd roundrect (at -2.475 0.635 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 378 | (net 2 "GND") (pinfunction "GND") (tstamp dec4e585-9a2b-48b7-9477-4e344291f667)) 379 | (pad "4" smd roundrect (at -2.475 1.905 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 380 | (net 10 "unconnected-(U1-Pad4)") (pinfunction "PA0") (tstamp 10e99f89-2478-4f66-98c6-ae8d98ad9160)) 381 | (pad "5" smd roundrect (at 2.475 1.905 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 382 | (net 3 "Net-(U1-Pad5)") (pinfunction "PA11") (tstamp 05a2d68a-e1c4-45f7-b9d8-f143dc05739d)) 383 | (pad "6" smd roundrect (at 2.475 0.635 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 384 | (net 5 "Net-(J1-Pad2)") (pinfunction "PA12") (tstamp a4ce2cd0-fe8a-4b8a-bccd-07b7688e2831)) 385 | (pad "7" smd roundrect (at 2.475 -0.635 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 386 | (net 7 "unconnected-(U1-Pad7)") (pinfunction "PA13") (tstamp f898e9ad-73cf-4ab2-b49a-c3cd81b20ef1)) 387 | (pad "8" smd roundrect (at 2.475 -1.905 270) (size 1.95 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 388 | (net 8 "unconnected-(U1-Pad8)") (pinfunction "PA14") (tstamp 63c78bc3-e163-4ff5-890d-4f51fa768322)) 389 | (model "${KICAD6_3DMODEL_DIR}/Package_SO.3dshapes/SOIC-8_3.9x4.9mm_P1.27mm.wrl" 390 | (offset (xyz 0 0 0)) 391 | (scale (xyz 1 1 1)) 392 | (rotate (xyz 0 0 0)) 393 | ) 394 | ) 395 | 396 | (footprint "Capacitor_SMD:C_0603_1608Metric" (layer "F.Cu") 397 | (tstamp a0070a69-64ea-43fa-83eb-257416035d47) 398 | (at 102.7684 57.6834 90) 399 | (descr "Capacitor SMD 0603 (1608 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator") 400 | (tags "capacitor") 401 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 402 | (property "Sheetname" "") 403 | (path "/62bfe1e6-8ccd-47e5-b825-7c8283629a85") 404 | (attr smd) 405 | (fp_text reference "C2" (at 1.9558 -0.0254) (layer "F.SilkS") hide 406 | (effects (font (size 0.7 0.7) (thickness 0.15))) 407 | (tstamp cd1ba595-07b1-4c40-92c8-5f6f443edf81) 408 | ) 409 | (fp_text value "C" (at 0 1.43 90) (layer "F.Fab") 410 | (effects (font (size 1 1) (thickness 0.15))) 411 | (tstamp f6b5e8f5-3e40-4468-baf4-e61d04cfabfa) 412 | ) 413 | (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab") 414 | (effects (font (size 0.4 0.4) (thickness 0.06))) 415 | (tstamp 3ce0a7c5-bbcc-4ee5-9b86-c4dbacb361a7) 416 | ) 417 | (fp_line (start -0.14058 -0.51) (end 0.14058 -0.51) 418 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b8e42d46-4b56-4e2a-836a-eb3eb32c5ce2)) 419 | (fp_line (start -0.14058 0.51) (end 0.14058 0.51) 420 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp f60176ea-0287-435a-ad8b-5c53d30967a1)) 421 | (fp_line (start -1.48 -0.73) (end 1.48 -0.73) 422 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 68fc9800-d133-4a61-b8c7-c2d4c0a919d3)) 423 | (fp_line (start -1.48 0.73) (end -1.48 -0.73) 424 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 80488345-ab74-4d06-803c-fbfb1318730c)) 425 | (fp_line (start 1.48 -0.73) (end 1.48 0.73) 426 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 0936fdc8-ff75-436a-a41c-f61a39e737e4)) 427 | (fp_line (start 1.48 0.73) (end -1.48 0.73) 428 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 42888e31-1201-4d3e-944b-85bfa0de8ae3)) 429 | (fp_line (start -0.8 -0.4) (end 0.8 -0.4) 430 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a093a54e-b442-4063-8b6a-eb5ffb087fdf)) 431 | (fp_line (start -0.8 0.4) (end -0.8 -0.4) 432 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a09f079b-0c13-4ab4-9608-81b18a01cfbc)) 433 | (fp_line (start 0.8 -0.4) (end 0.8 0.4) 434 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 55c8820f-ffc1-473f-bbca-c455929cc11d)) 435 | (fp_line (start 0.8 0.4) (end -0.8 0.4) 436 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 08cac803-7c90-4507-9873-9777c82eea52)) 437 | (pad "1" smd roundrect (at -0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 438 | (net 4 "VDD") (pintype "passive") (tstamp 12fb374c-b17b-4882-a9e6-c55716c8cdcc)) 439 | (pad "2" smd roundrect (at 0.775 0 90) (size 0.9 0.95) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 440 | (net 2 "GND") (pintype "passive") (tstamp d4399093-b3b5-427f-b102-dc4682072db9)) 441 | (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_0603_1608Metric.wrl" 442 | (offset (xyz 0 0 0)) 443 | (scale (xyz 1 1 1)) 444 | (rotate (xyz 0 0 0)) 445 | ) 446 | ) 447 | 448 | (footprint "Package_TO_SOT_SMD:SOT-23-5" (layer "F.Cu") 449 | (tstamp a27aca2e-18e1-48ef-9938-e50d54965004) 450 | (at 102.616 61.4172) 451 | (descr "SOT, 5 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py") 452 | (tags "SOT TO_SOT_SMD") 453 | (property "Sheetfile" "ir-smart-led-controller.kicad_sch") 454 | (property "Sheetname" "") 455 | (path "/fc2a00e6-5c5b-4d73-91f1-4b583f91db9a") 456 | (attr smd) 457 | (fp_text reference "U3" (at 4.2672 -2.159) (layer "F.SilkS") hide 458 | (effects (font (size 0.7 0.7) (thickness 0.15))) 459 | (tstamp cb633cdf-751d-4637-94d0-a6e39e240e8b) 460 | ) 461 | (fp_text value "LDK220" (at 0 2.4) (layer "F.Fab") 462 | (effects (font (size 1 1) (thickness 0.15))) 463 | (tstamp d3c37475-0217-4836-8b82-d8ae15f208e9) 464 | ) 465 | (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab") 466 | (effects (font (size 0.4 0.4) (thickness 0.06))) 467 | (tstamp f86b8af2-7521-4c5f-8bea-66a295e40c44) 468 | ) 469 | (fp_line (start 0 -1.56) (end -1.8 -1.56) 470 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ac6c608c-9419-48f6-a199-5daf4cbf189b)) 471 | (fp_line (start 0 -1.56) (end 0.8 -1.56) 472 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp bd189459-58a6-4f7c-a546-cfb1f3f8d38f)) 473 | (fp_line (start 0 1.56) (end -0.8 1.56) 474 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 232b04a2-ae90-47f9-946b-e00c4ee17ce5)) 475 | (fp_line (start 0 1.56) (end 0.8 1.56) 476 | (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 19aaf70f-ef18-4086-abb5-ea481bce412a)) 477 | (fp_line (start -2.05 -1.7) (end -2.05 1.7) 478 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 4291fe6f-97c5-48fb-b539-b15da9b5f75f)) 479 | (fp_line (start -2.05 1.7) (end 2.05 1.7) 480 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b0fdeb84-9787-4eb0-9a64-b7dc32cd0b2e)) 481 | (fp_line (start 2.05 -1.7) (end -2.05 -1.7) 482 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e96311c7-4e7b-47b6-9f1d-b3dce122d1ba)) 483 | (fp_line (start 2.05 1.7) (end 2.05 -1.7) 484 | (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 1b6c17af-3a4a-4721-9645-09e63d7629a7)) 485 | (fp_line (start -0.8 -1.05) (end -0.4 -1.45) 486 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 315a88cc-8567-4afa-ae53-e038ed73e6ef)) 487 | (fp_line (start -0.8 1.45) (end -0.8 -1.05) 488 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c87a6522-4d37-4704-b56b-3aab77595b3f)) 489 | (fp_line (start -0.4 -1.45) (end 0.8 -1.45) 490 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 48f9078f-b430-4218-abc7-fbe93b785f75)) 491 | (fp_line (start 0.8 -1.45) (end 0.8 1.45) 492 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d80d8b76-1dec-479d-9a54-6fbca2b22e31)) 493 | (fp_line (start 0.8 1.45) (end -0.8 1.45) 494 | (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 88b4c43b-c414-4e05-872b-e11096165a4f)) 495 | (pad "1" smd roundrect (at -1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 496 | (net 1 "+5V") (pinfunction "IN") (pintype "power_in") (tstamp a6020ea3-9aba-4910-9035-b4902d462710)) 497 | (pad "2" smd roundrect (at -1.1375 0) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 498 | (net 2 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 3515b5c8-5c82-4b71-a274-cf2d237b7a4f)) 499 | (pad "3" smd roundrect (at -1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 500 | (net 1 "+5V") (pinfunction "EN") (pintype "input") (tstamp c0ec2aba-cd72-48d4-b4ba-9563447fe479)) 501 | (pad "4" smd roundrect (at 1.1375 0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 502 | (net 6 "unconnected-(U3-Pad4)") (pinfunction "NC") (pintype "no_connect") (tstamp 25142ca1-06dc-4ac7-81f8-ad6cbf01deb3)) 503 | (pad "5" smd roundrect (at 1.1375 -0.95) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25) 504 | (net 4 "VDD") (pinfunction "OUT") (pintype "power_out") (tstamp 0f2b6ea6-6614-48d7-86ff-07cbbcb6b7d0)) 505 | (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl" 506 | (offset (xyz 0 0 0)) 507 | (scale (xyz 1 1 1)) 508 | (rotate (xyz 0 0 0)) 509 | ) 510 | ) 511 | 512 | (gr_rect (start 100.8602 48.8934) (end 110.0136 54.5252) 513 | (stroke (width 0.15) (type solid)) (fill solid) (layer "B.Mask") (tstamp 36c752ae-0748-4a99-a17d-51aa4a6e2414)) 514 | (gr_rect (start 100.7872 48.7934) (end 110.1344 54.5252) 515 | (stroke (width 0.15) (type solid)) (fill solid) (layer "F.Mask") (tstamp e245f0c0-9109-40b8-b7be-7d4f25cb5158)) 516 | (gr_line (start 101.02302 71.11278) (end 109.97478 71.11278) 517 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 06ee11ea-1dc4-452f-9e0c-0714a29194a7)) 518 | (gr_arc (start 102.00758 54.00158) (mid 101.722654 54.705241) (end 101.02842 55.01242) 519 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 1692700b-1697-43d8-bc0e-de2fc4061bbb)) 520 | (gr_arc (start 109.99158 55.02242) (mid 109.279919 54.718179) (end 108.9914 54) 521 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 27ff4bf3-dcb9-4988-959f-7470d8cfa6be)) 522 | (gr_arc (start 102.01 49.7) (mid 102.218548 49.211498) (end 102.71 49.01) 523 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 324e0ff5-3cd3-44ee-a5dc-26b4b1466452)) 524 | (gr_line (start 104.01 49.71) (end 104.013 54.01) 525 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 3f0c8b73-8346-4159-8a18-687ba29c3ff5)) 526 | (gr_arc (start 105.02842 55.01758) (mid 104.313176 54.722939) (end 104.013 54.01) 527 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 4184f880-5558-444f-af9d-be69eb6dfc07)) 528 | (gr_line (start 102.71 49.01) (end 103.31 49.01) 529 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 604198aa-d850-4a26-bc84-6093a8a23fb2)) 530 | (gr_line (start 105.9754 55.01758) (end 105.02842 55.01758) 531 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 612e65e7-fd7b-4469-b8ae-7b584b4b163e)) 532 | (gr_arc (start 106.985025 49.714975) (mid 107.19005 49.22) (end 107.685025 49.014975) 533 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 65239623-1a38-4279-b77e-e62c0c8a8181)) 534 | (gr_line (start 106.985025 49.714975) (end 106.9914 54.00158) 535 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 6541917a-914c-47df-97a1-be6bcc2dc42e)) 536 | (gr_line (start 107.685025 49.014975) (end 108.285025 49.014975) 537 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 67afcf88-1ad1-44c5-bcce-548a7c683a16)) 538 | (gr_arc (start 108.285025 49.014975) (mid 108.78 49.22) (end 108.985025 49.714975) 539 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 6c5db0c8-11e6-4f5d-961c-92eeb05c043b)) 540 | (gr_arc (start 109.99158 55.02242) (mid 110.71 55.32) (end 111.00758 56.03842) 541 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 77e08974-021c-40f8-b2bb-b8945b1cda9f)) 542 | (gr_arc (start 100.01242 56.02842) (mid 100.31 55.31) (end 101.02842 55.01242) 543 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 8839cff5-3131-44a7-b09d-a30d05660353)) 544 | (gr_line (start 100.01242 56.02842) (end 100.00702 70.09678) 545 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp 9dfe7b89-9cc4-4c15-af9a-2f45296afb2b)) 546 | (gr_line (start 111.00758 56.03842) (end 110.99078 70.09678) 547 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp ac72af15-0aa0-4203-9549-74a1df267098)) 548 | (gr_arc (start 103.31 49.01) (mid 103.804975 49.215025) (end 104.01 49.71) 549 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp b6ea2965-3bec-4e7b-a078-3f67fae0bcbe)) 550 | (gr_line (start 102.01 49.7) (end 102.00758 54.00158) 551 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp b9358020-286d-43ea-b48c-6c9465b7cd91)) 552 | (gr_arc (start 101.02302 71.11278) (mid 100.3046 70.8152) (end 100.00702 70.09678) 553 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp b9eb4459-bf78-411f-9159-5f49079b76de)) 554 | (gr_line (start 108.985025 49.714975) (end 108.9914 54) 555 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp d0b40d33-9630-480b-b97d-74a1c26e1228)) 556 | (gr_arc (start 106.9914 54.00158) (mid 106.69382 54.72) (end 105.9754 55.01758) 557 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp ef763bed-0a9d-4d1d-949c-394e506a884c)) 558 | (gr_arc (start 110.99078 70.09678) (mid 110.6932 70.8152) (end 109.97478 71.11278) 559 | (stroke (width 0.1) (type solid)) (layer "Edge.Cuts") (tstamp f3b6a670-e04c-4820-8c31-9a4a5ab3aeca)) 560 | (gr_text "-" (at 108.1532 70.5104) (layer "B.SilkS") (tstamp 2c2f7df1-6e8e-411e-bf30-f31ce8cb24dc) 561 | (effects (font (size 1 1) (thickness 0.25))) 562 | ) 563 | (gr_text "http://vitaly.codes" (at 100.838 62.992 90) (layer "B.SilkS") (tstamp 37e30109-236f-49e1-a78b-28686b0d4a29) 564 | (effects (font (size 0.6 0.6) (thickness 0.1)) (justify mirror)) 565 | ) 566 | (gr_text "+" (at 102.9716 55.2704) (layer "B.SilkS") (tstamp 4cf31d03-712a-40dd-8ec8-ef0acdc70498) 567 | (effects (font (size 1.5 1.5) (thickness 0.3))) 568 | ) 569 | (gr_text "+" (at 102.9716 70.5358) (layer "B.SilkS") (tstamp 97730751-f6fe-48a0-b9b4-0e9d60d12d50) 570 | (effects (font (size 1 1) (thickness 0.25))) 571 | ) 572 | (gr_text "-" (at 107.9754 55.2958) (layer "B.SilkS") (tstamp 9c8d3f50-ce4f-4c21-8e3e-8ff30be445a6) 573 | (effects (font (size 1.5 1.5) (thickness 0.3))) 574 | ) 575 | (gr_text "DATA" (at 105.5116 70.612) (layer "B.SilkS") (tstamp 9dd7eb7f-1150-4b55-9c64-e18ca640461c) 576 | (effects (font (size 0.7 0.7) (thickness 0.1)) (justify mirror)) 577 | ) 578 | (gr_text "◢◤" (at 109.1438 59.3344) (layer "F.SilkS") (tstamp 173eea47-0695-4c5a-93af-58ff43e606f0) 579 | (effects (font (size 0.8 0.8) (thickness 0.1))) 580 | ) 581 | 582 | (via (at 102.9716 51.562) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 1) (tstamp 13eaf13a-5fac-4506-acaa-c6803d610d1b)) 583 | (via (at 102.9716 50.3174) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 1) (tstamp dae88184-9e90-4125-94b4-f15a6ccbecab)) 584 | (via (at 102.9716 52.832) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 1) (tstamp f1f1d71c-570e-49e0-b7b4-042a2c087850)) 585 | (segment (start 102.2858 66.3956) (end 103.6372 66.3956) (width 0.25) (layer "F.Cu") (net 2) (tstamp 0ed7f7be-d3ce-4112-b6de-d3552c304b09)) 586 | (segment (start 104.3178 55.9816) (end 104.3178 56.9084) (width 0.25) (layer "F.Cu") (net 2) (tstamp 19a0e55f-7eb7-4b7b-acf1-56d8dca58e75)) 587 | (segment (start 102.6414 63.5) (end 101.6762 64.4652) (width 0.25) (layer "F.Cu") (net 2) (tstamp 2a45bbda-ad0c-450a-901c-8c4f321c2195)) 588 | (segment (start 102.141 61.4172) (end 102.6414 61.9176) (width 0.25) (layer "F.Cu") (net 2) (tstamp 2b6ad26a-b96d-409c-9c11-2192edc171c0)) 589 | (segment (start 104.3178 56.9084) (end 101.0412 56.9084) (width 0.25) (layer "F.Cu") (net 2) (tstamp 30d8acac-8202-425b-94da-40d47e220d94)) 590 | (segment (start 103.6372 66.3956) (end 104.9834 65.0494) (width 0.25) (layer "F.Cu") (net 2) (tstamp 3124b7c2-e899-4737-a288-5171f67b8846)) 591 | (segment (start 101.4785 61.4172) (end 102.141 61.4172) (width 0.25) (layer "F.Cu") (net 2) (tstamp 32a98ad9-bc79-4b65-8a41-f201785043d0)) 592 | (segment (start 104.9834 65.0494) (end 105.4966 65.0494) (width 0.25) (layer "F.Cu") (net 2) (tstamp 5f9bc667-4429-4e7f-a0fb-e2ad32b487e5)) 593 | (segment (start 104.7496 55.5498) (end 104.3178 55.9816) (width 0.25) (layer "F.Cu") (net 2) (tstamp 8856429f-376f-4c35-9cf3-cade9896de21)) 594 | (segment (start 107.2134 55.9816) (end 106.7816 55.5498) (width 0.25) (layer "F.Cu") (net 2) (tstamp 88a0447f-ec7d-40f8-ba55-da51c71d31d7)) 595 | (segment (start 101.6762 65.786) (end 102.2858 66.3956) (width 0.25) (layer "F.Cu") (net 2) (tstamp 9e580e23-9bf2-4e63-ab0c-2cad05e05c63)) 596 | (segment (start 102.6414 61.9176) (end 102.6414 63.5) (width 0.25) (layer "F.Cu") (net 2) (tstamp b16b7b8d-2464-48e9-a9c6-3df3fd96507c)) 597 | (segment (start 107.2134 56.961) (end 107.2134 55.9816) (width 0.25) (layer "F.Cu") (net 2) (tstamp cc201bba-8ef8-421d-9152-0b6649531dd1)) 598 | (segment (start 101.6762 64.4652) (end 101.6762 65.786) (width 0.25) (layer "F.Cu") (net 2) (tstamp d07b194f-c307-41d5-9aba-0dd07ab13849)) 599 | (segment (start 106.7816 55.5498) (end 104.7496 55.5498) (width 0.25) (layer "F.Cu") (net 2) (tstamp fe670ef8-9fca-460e-912b-944adae88168)) 600 | (via (at 108.0262 52.8066) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 2) (tstamp 549c84fd-a865-4490-9de5-fc1799560d91)) 601 | (via (at 108.0262 51.5366) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 2) (tstamp e1e96262-9c59-4d55-b4da-0edd21a72f31)) 602 | (via (at 108.0262 50.292) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (free) (net 2) (tstamp fcb0ff56-a5c5-4a14-9e0e-dc2603c6a5de)) 603 | (segment (start 107.8484 60.8076) (end 107.8484 64.8612) (width 0.25) (layer "F.Cu") (net 3) (tstamp 2625bb30-fe2c-431c-91dd-897ca1e15a8e)) 604 | (segment (start 105.9434 61.911) (end 105.9434 62.6618) (width 0.25) (layer "F.Cu") (net 3) (tstamp 31636f57-05ec-4ac0-8e6e-8f7149a795c1)) 605 | (segment (start 105.9434 61.911) (end 105.9434 60.7822) (width 0.25) (layer "F.Cu") (net 3) (tstamp 5b7017b5-d4a1-4a97-9973-97b34cdaea51)) 606 | (segment (start 106.4006 60.325) (end 107.3658 60.325) (width 0.25) (layer "F.Cu") (net 3) (tstamp 7a5e84b1-e748-4695-99ac-c8207c1061d9)) 607 | (segment (start 105.9434 60.7822) (end 106.4006 60.325) (width 0.25) (layer "F.Cu") (net 3) (tstamp 9d6436f6-838e-4427-a002-aef229e4c92f)) 608 | (segment (start 107.3658 60.325) (end 107.8484 60.8076) (width 0.25) (layer "F.Cu") (net 3) (tstamp ae0ffdd2-0f0e-4231-91e4-8fa30b75cf3e)) 609 | (segment (start 104.3178 59.2328) (end 104.3178 58.4584) (width 0.25) (layer "F.Cu") (net 4) (tstamp 0013ecbe-b80b-4d32-93b4-70564b70433e)) 610 | (segment (start 104.4854 60.4672) (end 103.7535 60.4672) (width 0.25) (layer "F.Cu") (net 4) (tstamp 0a546d4b-271d-41ac-a662-262b62acd48c)) 611 | (segment (start 108.4834 57.936) (end 108.4834 56.961) (width 0.25) (layer "F.Cu") (net 4) (tstamp 0c727ab1-f5a5-4e88-b916-b6fa279b27d5)) 612 | (segment (start 102.9566 65.0494) (end 104.8766 63.1294) (width 0.25) (layer "F.Cu") (net 4) (tstamp 3fb54b71-3863-4e13-9783-2fb5911e4335)) 613 | (segment (start 108.4834 56.1848) (end 108.4834 56.961) (width 0.25) (layer "F.Cu") (net 4) (tstamp 4031b9ac-2298-4839-86bc-ee486718ddaf)) 614 | (segment (start 102.7684 58.4584) (end 107.961 58.4584) (width 0.25) (layer "F.Cu") (net 4) (tstamp 5f784f72-1928-4279-88f9-7ffc495cc7d1)) 615 | (segment (start 104.3178 58.4584) (end 102.7684 58.4584) (width 0.25) (layer "F.Cu") (net 4) (tstamp 6f21798a-dd82-4be2-a64d-45872541e710)) 616 | (segment (start 107.961 58.4584) (end 108.4834 57.936) (width 0.25) (layer "F.Cu") (net 4) (tstamp 8702cb3a-dee9-4c14-a8d6-5ffff53545e7)) 617 | (segment (start 103.7535 60.4672) (end 103.7535 59.7971) (width 0.25) (layer "F.Cu") (net 4) (tstamp 95c3c493-f26c-454c-a832-0f3a34358101)) 618 | (segment (start 103.7535 59.7971) (end 104.3178 59.2328) (width 0.25) (layer "F.Cu") (net 4) (tstamp abce92ef-533a-46a0-b7a1-1921488e0949)) 619 | (segment (start 104.8766 63.1294) (end 104.8766 60.8584) (width 0.25) (layer "F.Cu") (net 4) (tstamp dc804e1b-666f-4a6e-a9ab-99b923b5ae32)) 620 | (segment (start 104.8766 60.8584) (end 104.4854 60.4672) (width 0.25) (layer "F.Cu") (net 4) (tstamp f95e55b6-3620-4a8f-bebf-a6e8cfae5410)) 621 | (segment (start 108.4834 57.6326) (end 108.4834 56.961) (width 0.25) (layer "F.Cu") (net 4) (tstamp ffcc718e-1a97-4ebb-a8c0-6f4d096353eb)) 622 | (segment (start 106.7562 67.5386) (end 106.7562 62.3682) (width 0.25) (layer "F.Cu") (net 5) (tstamp 0aa95be9-726c-4dc1-b680-fbc3ff625659)) 623 | (segment (start 106.7562 62.3682) (end 107.2134 61.911) (width 0.25) (layer "F.Cu") (net 5) (tstamp 1034b873-650f-4eb6-8e32-7e3999f9bc9f)) 624 | (segment (start 105.5116 68.7832) (end 105.5624 68.7832) (width 0.25) (layer "F.Cu") (net 5) (tstamp bd90d9b9-f843-477a-bcbf-0024fd3b5e9b)) 625 | (segment (start 105.5116 68.7832) (end 106.7562 67.5386) (width 0.25) (layer "F.Cu") (net 5) (tstamp f6771274-a09d-4e96-b1cd-19c7b2c706c2)) 626 | 627 | (zone (net 2) (net_name "GND") (layer "F.Cu") (tstamp 379c841c-7668-44b5-95e7-0a0dc14a53c2) (hatch edge 0.508) 628 | (connect_pads yes (clearance 0.0254)) 629 | (min_thickness 0.0254) (filled_areas_thickness no) 630 | (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) 631 | (polygon 632 | (pts 633 | (xy 112.6998 71.5896) 634 | (xy 105.7498 71.5896) 635 | (xy 105.7498 47.8536) 636 | (xy 112.6998 47.8536) 637 | ) 638 | ) 639 | (filled_polygon 640 | (layer "F.Cu") 641 | (pts 642 | (xy 108.285771 49.375575) 643 | (xy 108.371356 49.386845) 644 | (xy 108.374307 49.387636) 645 | (xy 108.389251 49.393826) 646 | (xy 108.453346 49.420377) 647 | (xy 108.455984 49.4219) 648 | (xy 108.478848 49.439444) 649 | (xy 108.523858 49.473983) 650 | (xy 108.526017 49.476142) 651 | (xy 108.552057 49.510077) 652 | (xy 108.5781 49.544016) 653 | (xy 108.579623 49.546654) 654 | (xy 108.606174 49.610749) 655 | (xy 108.612364 49.625693) 656 | (xy 108.613155 49.628644) 657 | (xy 108.624425 49.714229) 658 | (xy 108.624525 49.715756) 659 | (xy 108.624527 49.772086) 660 | (xy 108.624583 49.77226) 661 | (xy 108.62461 49.772597) 662 | (xy 108.630894 53.996106) 663 | (xy 108.630863 53.996259) 664 | (xy 108.630887 53.996259) 665 | (xy 108.62976 54.104188) 666 | (xy 108.629826 54.104634) 667 | (xy 108.629826 54.104636) 668 | (xy 108.636148 54.147452) 669 | (xy 108.66129 54.317741) 670 | (xy 108.661426 54.318177) 671 | (xy 108.661427 54.318179) 672 | (xy 108.725676 54.523301) 673 | (xy 108.725814 54.523741) 674 | (xy 108.821745 54.717123) 675 | (xy 108.830293 54.729161) 676 | (xy 108.946459 54.892757) 677 | (xy 108.946464 54.892763) 678 | (xy 108.946726 54.893132) 679 | (xy 109.097683 55.047441) 680 | (xy 109.270905 55.176256) 681 | (xy 109.363102 55.224543) 682 | (xy 109.461726 55.276197) 683 | (xy 109.461733 55.2762) 684 | (xy 109.462134 55.27641) 685 | (xy 109.624356 55.331161) 686 | (xy 109.663006 55.344205) 687 | (xy 109.666668 55.345441) 688 | (xy 109.793423 55.367009) 689 | (xy 109.879018 55.381573) 690 | (xy 109.879021 55.381573) 691 | (xy 109.879478 55.381651) 692 | (xy 109.930679 55.382241) 693 | (xy 109.932691 55.382573) 694 | (xy 109.932704 55.382493) 695 | (xy 109.933615 55.382637) 696 | (xy 109.934489 55.382921) 697 | (xy 109.935408 55.382921) 698 | (xy 109.986751 55.38292) 699 | (xy 109.989433 55.38292) 700 | (xy 109.989566 55.382921) 701 | (xy 109.989717 55.382923) 702 | (xy 109.991244 55.38294) 703 | (xy 109.992412 55.383013) 704 | (xy 110.136145 55.399205) 705 | (xy 110.138689 55.399786) 706 | (xy 110.274751 55.447395) 707 | (xy 110.277108 55.448529) 708 | (xy 110.374985 55.510028) 709 | (xy 110.39917 55.525224) 710 | (xy 110.401218 55.526858) 711 | (xy 110.503142 55.628782) 712 | (xy 110.504776 55.63083) 713 | (xy 110.558349 55.716092) 714 | (xy 110.58147 55.75289) 715 | (xy 110.582605 55.755249) 716 | (xy 110.630214 55.891311) 717 | (xy 110.630795 55.893855) 718 | (xy 110.634911 55.930389) 719 | (xy 110.647005 56.037746) 720 | (xy 110.647079 56.03907) 721 | (xy 110.630349 70.039262) 722 | (xy 110.630327 70.039544) 723 | (xy 110.630279 70.039689) 724 | (xy 110.630279 70.040141) 725 | (xy 110.63028 70.096134) 726 | (xy 110.630206 70.097444) 727 | (xy 110.613995 70.241345) 728 | (xy 110.613414 70.243889) 729 | (xy 110.565806 70.379949) 730 | (xy 110.564671 70.382308) 731 | (xy 110.487976 70.50437) 732 | (xy 110.486342 70.506418) 733 | (xy 110.384418 70.608342) 734 | (xy 110.38237 70.609976) 735 | (xy 110.260308 70.686671) 736 | (xy 110.257951 70.687805) 737 | (xy 110.121889 70.735414) 738 | (xy 110.119345 70.735995) 739 | (xy 109.975444 70.752206) 740 | (xy 109.974134 70.75228) 741 | (xy 109.918209 70.752279) 742 | (xy 109.917689 70.752279) 743 | (xy 109.917687 70.75228) 744 | (xy 105.7615 70.75228) 745 | (xy 105.753227 70.748853) 746 | (xy 105.7498 70.74058) 747 | (xy 105.7498 69.817389) 748 | (xy 105.753227 69.809116) 749 | (xy 105.758103 69.806194) 750 | (xy 105.839783 69.781416) 751 | (xy 105.914998 69.758601) 752 | (xy 105.915001 69.7586) 753 | (xy 105.915554 69.758432) 754 | (xy 105.996128 69.715364) 755 | (xy 106.097538 69.661159) 756 | (xy 106.09754 69.661157) 757 | (xy 106.09805 69.660885) 758 | (xy 106.25801 69.52961) 759 | (xy 106.389285 69.36965) 760 | (xy 106.486832 69.187154) 761 | (xy 106.5469 68.989134) 762 | (xy 106.567183 68.7832) 763 | (xy 106.5469 68.577266) 764 | (xy 106.486832 68.379246) 765 | (xy 106.452274 68.314593) 766 | (xy 106.451396 68.305684) 767 | (xy 106.454319 68.300807) 768 | (xy 106.975951 67.779176) 769 | (xy 106.976703 67.778486) 770 | (xy 107.008611 67.751712) 771 | (xy 107.009394 67.751055) 772 | (xy 107.030728 67.714104) 773 | (xy 107.031276 67.713243) 774 | (xy 107.055167 67.679123) 775 | (xy 107.055168 67.679121) 776 | (xy 107.055754 67.678284) 777 | (xy 107.059119 67.665726) 778 | (xy 107.060286 67.662907) 779 | (xy 107.066277 67.65253) 780 | (xy 107.066788 67.651645) 781 | (xy 107.074199 67.60962) 782 | (xy 107.07442 67.608624) 783 | (xy 107.085197 67.568401) 784 | (xy 107.085197 67.568399) 785 | (xy 107.085463 67.567407) 786 | (xy 107.081745 67.524908) 787 | (xy 107.0817 67.523888) 788 | (xy 107.0817 66.092336) 789 | (xy 107.085127 66.084063) 790 | (xy 107.0934 66.080636) 791 | (xy 107.0999 66.082608) 792 | (xy 107.108369 66.088267) 793 | (xy 107.109498 66.088492) 794 | (xy 107.109499 66.088492) 795 | (xy 107.166283 66.099787) 796 | (xy 107.166285 66.099787) 797 | (xy 107.166852 66.0999) 798 | (xy 108.906348 66.0999) 799 | (xy 108.906915 66.099787) 800 | (xy 108.906917 66.099787) 801 | (xy 108.963701 66.088492) 802 | (xy 108.963702 66.088492) 803 | (xy 108.964831 66.088267) 804 | (xy 108.976252 66.080636) 805 | (xy 109.030194 66.044592) 806 | (xy 109.031152 66.043952) 807 | (xy 109.075467 65.977631) 808 | (xy 109.0871 65.919148) 809 | (xy 109.0871 64.179652) 810 | (xy 109.075467 64.121169) 811 | (xy 109.031152 64.054848) 812 | (xy 108.964831 64.010533) 813 | (xy 108.963702 64.010308) 814 | (xy 108.963701 64.010308) 815 | (xy 108.906917 63.999013) 816 | (xy 108.906915 63.999013) 817 | (xy 108.906348 63.9989) 818 | (xy 108.1856 63.9989) 819 | (xy 108.177327 63.995473) 820 | (xy 108.1739 63.9872) 821 | (xy 108.1739 63.066909) 822 | (xy 108.177327 63.058636) 823 | (xy 108.1856 63.055209) 824 | (xy 108.190739 63.056398) 825 | (xy 108.231192 63.076175) 826 | (xy 108.231194 63.076176) 827 | (xy 108.232007 63.076573) 828 | (xy 108.2329 63.076703) 829 | (xy 108.232903 63.076704) 830 | (xy 108.269717 63.082067) 831 | (xy 108.30014 63.0865) 832 | (xy 108.66666 63.0865) 833 | (xy 108.697083 63.082067) 834 | (xy 108.733897 63.076704) 835 | (xy 108.7339 63.076703) 836 | (xy 108.734793 63.076573) 837 | (xy 108.735606 63.076176) 838 | (xy 108.735608 63.076175) 839 | (xy 108.797 63.046162) 840 | (xy 108.839883 63.025198) 841 | (xy 108.922598 62.942483) 842 | (xy 108.973973 62.837393) 843 | (xy 108.9839 62.76926) 844 | (xy 109.2529 62.76926) 845 | (xy 109.262827 62.837393) 846 | (xy 109.314202 62.942483) 847 | (xy 109.396917 63.025198) 848 | (xy 109.4398 63.046162) 849 | (xy 109.501192 63.076175) 850 | (xy 109.501194 63.076176) 851 | (xy 109.502007 63.076573) 852 | (xy 109.5029 63.076703) 853 | (xy 109.502903 63.076704) 854 | (xy 109.539717 63.082067) 855 | (xy 109.57014 63.0865) 856 | (xy 109.93666 63.0865) 857 | (xy 109.967083 63.082067) 858 | (xy 110.003897 63.076704) 859 | (xy 110.0039 63.076703) 860 | (xy 110.004793 63.076573) 861 | (xy 110.005606 63.076176) 862 | (xy 110.005608 63.076175) 863 | (xy 110.067 63.046162) 864 | (xy 110.109883 63.025198) 865 | (xy 110.192598 62.942483) 866 | (xy 110.243973 62.837393) 867 | (xy 110.2539 62.76926) 868 | (xy 110.2539 61.05274) 869 | (xy 110.243973 60.984607) 870 | (xy 110.192598 60.879517) 871 | (xy 110.109883 60.796802) 872 | (xy 110.021088 60.753393) 873 | (xy 110.005608 60.745825) 874 | (xy 110.005606 60.745824) 875 | (xy 110.004793 60.745427) 876 | (xy 110.0039 60.745297) 877 | (xy 110.003897 60.745296) 878 | (xy 109.967083 60.739933) 879 | (xy 109.93666 60.7355) 880 | (xy 109.57014 60.7355) 881 | (xy 109.539717 60.739933) 882 | (xy 109.502903 60.745296) 883 | (xy 109.5029 60.745297) 884 | (xy 109.502007 60.745427) 885 | (xy 109.501194 60.745824) 886 | (xy 109.501192 60.745825) 887 | (xy 109.485712 60.753393) 888 | (xy 109.396917 60.796802) 889 | (xy 109.314202 60.879517) 890 | (xy 109.262827 60.984607) 891 | (xy 109.2529 61.05274) 892 | (xy 109.2529 62.76926) 893 | (xy 108.9839 62.76926) 894 | (xy 108.9839 61.05274) 895 | (xy 108.973973 60.984607) 896 | (xy 108.922598 60.879517) 897 | (xy 108.839883 60.796802) 898 | (xy 108.751088 60.753393) 899 | (xy 108.735608 60.745825) 900 | (xy 108.735606 60.745824) 901 | (xy 108.734793 60.745427) 902 | (xy 108.7339 60.745297) 903 | (xy 108.733897 60.745296) 904 | (xy 108.697083 60.739933) 905 | (xy 108.66666 60.7355) 906 | (xy 108.30014 60.7355) 907 | (xy 108.232007 60.745427) 908 | (xy 108.231188 60.745827) 909 | (xy 108.231189 60.745827) 910 | (xy 108.188814 60.766542) 911 | (xy 108.179877 60.767097) 912 | (xy 108.173165 60.761169) 913 | (xy 108.172375 60.759059) 914 | (xy 108.16662 60.737581) 915 | (xy 108.166399 60.736585) 916 | (xy 108.159166 60.695563) 917 | (xy 108.159165 60.695562) 918 | (xy 108.158988 60.694555) 919 | (xy 108.158477 60.69367) 920 | (xy 108.158476 60.693667) 921 | (xy 108.152485 60.683289) 922 | (xy 108.151317 60.680469) 923 | (xy 108.148218 60.668905) 924 | (xy 108.147953 60.667916) 925 | (xy 108.123482 60.632967) 926 | (xy 108.122935 60.632109) 927 | (xy 108.101594 60.595145) 928 | (xy 108.100815 60.594491) 929 | (xy 108.100813 60.594489) 930 | (xy 108.068901 60.567712) 931 | (xy 108.068149 60.567022) 932 | (xy 107.60638 60.105254) 933 | (xy 107.60569 60.104502) 934 | (xy 107.578911 60.072587) 935 | (xy 107.578909 60.072585) 936 | (xy 107.578255 60.071806) 937 | (xy 107.577371 60.071296) 938 | (xy 107.577368 60.071293) 939 | (xy 107.541293 60.050465) 940 | (xy 107.540432 60.049917) 941 | (xy 107.506323 60.026033) 942 | (xy 107.506321 60.026032) 943 | (xy 107.505484 60.025446) 944 | (xy 107.492923 60.02208) 945 | (xy 107.490103 60.020912) 946 | (xy 107.479734 60.014925) 947 | (xy 107.479733 60.014925) 948 | (xy 107.478845 60.014412) 949 | (xy 107.469911 60.012837) 950 | (xy 107.436826 60.007003) 951 | (xy 107.43583 60.006782) 952 | (xy 107.3956 59.996002) 953 | (xy 107.394607 59.995736) 954 | (xy 107.355545 59.999154) 955 | (xy 107.3521 59.999455) 956 | (xy 107.35108 59.9995) 957 | (xy 106.415308 59.9995) 958 | (xy 106.414288 59.999455) 959 | (xy 106.410897 59.999158) 960 | (xy 106.371793 59.995737) 961 | (xy 106.3708 59.996003) 962 | (xy 106.330581 60.00678) 963 | (xy 106.329585 60.007001) 964 | (xy 106.288563 60.014234) 965 | (xy 106.288562 60.014235) 966 | (xy 106.287555 60.014412) 967 | (xy 106.28667 60.014923) 968 | (xy 106.286667 60.014924) 969 | (xy 106.276289 60.020915) 970 | (xy 106.273469 60.022083) 971 | (xy 106.26253 60.025015) 972 | (xy 106.260916 60.025447) 973 | (xy 106.260079 60.026033) 974 | (xy 106.260077 60.026034) 975 | (xy 106.22597 60.049916) 976 | (xy 106.225111 60.050464) 977 | (xy 106.188145 60.071806) 978 | (xy 106.187491 60.072585) 979 | (xy 106.187489 60.072587) 980 | (xy 106.160712 60.104499) 981 | (xy 106.160022 60.105251) 982 | (xy 105.769773 60.495501) 983 | (xy 105.7615 60.498928) 984 | (xy 105.753227 60.495501) 985 | (xy 105.7498 60.487228) 986 | (xy 105.7498 58.7956) 987 | (xy 105.753227 58.787327) 988 | (xy 105.7615 58.7839) 989 | (xy 107.94628 58.7839) 990 | (xy 107.947301 58.783945) 991 | (xy 107.989807 58.787664) 992 | (xy 108.003854 58.7839) 993 | (xy 108.03103 58.776618) 994 | (xy 108.032026 58.776397) 995 | (xy 108.073035 58.769166) 996 | (xy 108.074045 58.768988) 997 | (xy 108.085304 58.762488) 998 | (xy 108.088123 58.76132) 999 | (xy 108.100684 58.757954) 1000 | (xy 108.101521 58.757368) 1001 | (xy 108.101523 58.757367) 1002 | (xy 108.135632 58.733483) 1003 | (xy 108.136493 58.732935) 1004 | (xy 108.172568 58.712107) 1005 | (xy 108.172571 58.712104) 1006 | (xy 108.173455 58.711594) 1007 | (xy 108.174109 58.710815) 1008 | (xy 108.174111 58.710813) 1009 | (xy 108.200892 58.678896) 1010 | (xy 108.201582 58.678144) 1011 | (xy 108.703151 58.176576) 1012 | (xy 108.703903 58.175886) 1013 | (xy 108.735811 58.149112) 1014 | (xy 108.736594 58.148455) 1015 | (xy 108.753118 58.119835) 1016 | (xy 108.758111 58.115174) 1017 | (xy 108.839883 58.075198) 1018 | (xy 108.922598 57.992483) 1019 | (xy 108.95175 57.932851) 1020 | (xy 108.973575 57.888208) 1021 | (xy 108.973576 57.888206) 1022 | (xy 108.973973 57.887393) 1023 | (xy 108.9839 57.81926) 1024 | (xy 109.2529 57.81926) 1025 | (xy 109.262827 57.887393) 1026 | (xy 109.263224 57.888206) 1027 | (xy 109.263225 57.888208) 1028 | (xy 109.28505 57.932851) 1029 | (xy 109.314202 57.992483) 1030 | (xy 109.396917 58.075198) 1031 | (xy 109.4398 58.096162) 1032 | (xy 109.501192 58.126175) 1033 | (xy 109.501194 58.126176) 1034 | (xy 109.502007 58.126573) 1035 | (xy 109.5029 58.126703) 1036 | (xy 109.502903 58.126704) 1037 | (xy 109.539717 58.132067) 1038 | (xy 109.57014 58.1365) 1039 | (xy 109.93666 58.1365) 1040 | (xy 109.967083 58.132067) 1041 | (xy 110.003897 58.126704) 1042 | (xy 110.0039 58.126703) 1043 | (xy 110.004793 58.126573) 1044 | (xy 110.005606 58.126176) 1045 | (xy 110.005608 58.126175) 1046 | (xy 110.067 58.096162) 1047 | (xy 110.109883 58.075198) 1048 | (xy 110.192598 57.992483) 1049 | (xy 110.22175 57.932851) 1050 | (xy 110.243575 57.888208) 1051 | (xy 110.243576 57.888206) 1052 | (xy 110.243973 57.887393) 1053 | (xy 110.2539 57.81926) 1054 | (xy 110.2539 56.10274) 1055 | (xy 110.249467 56.072317) 1056 | (xy 110.244104 56.035503) 1057 | (xy 110.244103 56.0355) 1058 | (xy 110.243973 56.034607) 1059 | (xy 110.192598 55.929517) 1060 | (xy 110.109883 55.846802) 1061 | (xy 110.067 55.825838) 1062 | (xy 110.005608 55.795825) 1063 | (xy 110.005606 55.795824) 1064 | (xy 110.004793 55.795427) 1065 | (xy 110.0039 55.795297) 1066 | (xy 110.003897 55.795296) 1067 | (xy 109.967083 55.789933) 1068 | (xy 109.93666 55.7855) 1069 | (xy 109.57014 55.7855) 1070 | (xy 109.539717 55.789933) 1071 | (xy 109.502903 55.795296) 1072 | (xy 109.5029 55.795297) 1073 | (xy 109.502007 55.795427) 1074 | (xy 109.501194 55.795824) 1075 | (xy 109.501192 55.795825) 1076 | (xy 109.4398 55.825838) 1077 | (xy 109.396917 55.846802) 1078 | (xy 109.314202 55.929517) 1079 | (xy 109.262827 56.034607) 1080 | (xy 109.262697 56.0355) 1081 | (xy 109.262696 56.035503) 1082 | (xy 109.257333 56.072317) 1083 | (xy 109.2529 56.10274) 1084 | (xy 109.2529 57.81926) 1085 | (xy 108.9839 57.81926) 1086 | (xy 108.9839 56.10274) 1087 | (xy 108.979467 56.072317) 1088 | (xy 108.974104 56.035503) 1089 | (xy 108.974103 56.0355) 1090 | (xy 108.973973 56.034607) 1091 | (xy 108.922598 55.929517) 1092 | (xy 108.839883 55.846802) 1093 | (xy 108.797 55.825838) 1094 | (xy 108.735608 55.795825) 1095 | (xy 108.735606 55.795824) 1096 | (xy 108.734793 55.795427) 1097 | (xy 108.7339 55.795297) 1098 | (xy 108.733897 55.795296) 1099 | (xy 108.697083 55.789933) 1100 | (xy 108.66666 55.7855) 1101 | (xy 108.30014 55.7855) 1102 | (xy 108.269717 55.789933) 1103 | (xy 108.232903 55.795296) 1104 | (xy 108.2329 55.795297) 1105 | (xy 108.232007 55.795427) 1106 | (xy 108.231194 55.795824) 1107 | (xy 108.231192 55.795825) 1108 | (xy 108.1698 55.825838) 1109 | (xy 108.126917 55.846802) 1110 | (xy 108.044202 55.929517) 1111 | (xy 107.992827 56.034607) 1112 | (xy 107.992697 56.0355) 1113 | (xy 107.992696 56.035503) 1114 | (xy 107.987333 56.072317) 1115 | (xy 107.9829 56.10274) 1116 | (xy 107.9829 57.81926) 1117 | (xy 107.992827 57.887393) 1118 | (xy 107.993224 57.888206) 1119 | (xy 107.993226 57.888211) 1120 | (xy 108.015049 57.932851) 1121 | (xy 108.015604 57.941788) 1122 | (xy 108.012811 57.946262) 1123 | (xy 107.829601 58.129473) 1124 | (xy 107.821328 58.1329) 1125 | (xy 106.232423 58.1329) 1126 | (xy 106.22415 58.129473) 1127 | (xy 106.220723 58.1212) 1128 | (xy 106.22415 58.112927) 1129 | (xy 106.227284 58.110689) 1130 | (xy 106.299883 58.075198) 1131 | (xy 106.382598 57.992483) 1132 | (xy 106.41175 57.932851) 1133 | (xy 106.433575 57.888208) 1134 | (xy 106.433576 57.888206) 1135 | (xy 106.433973 57.887393) 1136 | (xy 106.4439 57.81926) 1137 | (xy 106.4439 56.10274) 1138 | (xy 106.439467 56.072317) 1139 | (xy 106.434104 56.035503) 1140 | (xy 106.434103 56.0355) 1141 | (xy 106.433973 56.034607) 1142 | (xy 106.382598 55.929517) 1143 | (xy 106.299883 55.846802) 1144 | (xy 106.257 55.825838) 1145 | (xy 106.195608 55.795825) 1146 | (xy 106.195606 55.795824) 1147 | (xy 106.194793 55.795427) 1148 | (xy 106.1939 55.795297) 1149 | (xy 106.193897 55.795296) 1150 | (xy 106.157083 55.789933) 1151 | (xy 106.12666 55.7855) 1152 | (xy 105.7615 55.7855) 1153 | (xy 105.753227 55.782073) 1154 | (xy 105.7498 55.7738) 1155 | (xy 105.7498 55.38978) 1156 | (xy 105.753227 55.381507) 1157 | (xy 105.7615 55.37808) 1158 | (xy 105.975352 55.37808) 1159 | (xy 105.9754 55.37809) 1160 | (xy 105.9754 55.3781) 1161 | (xy 105.986381 55.3781) 1162 | (xy 106.083734 55.378099) 1163 | (xy 106.297735 55.344205) 1164 | (xy 106.503799 55.27725) 1165 | (xy 106.696851 55.178883) 1166 | (xy 106.697222 55.178613) 1167 | (xy 106.697226 55.178611) 1168 | (xy 106.871764 55.0518) 1169 | (xy 106.871768 55.051796) 1170 | (xy 106.872139 55.051527) 1171 | (xy 107.025345 54.898318) 1172 | (xy 107.12383 54.762761) 1173 | (xy 107.15243 54.723396) 1174 | (xy 107.152432 54.723393) 1175 | (xy 107.152697 54.723028) 1176 | (xy 107.25106 54.529974) 1177 | (xy 107.318011 54.323909) 1178 | (xy 107.351902 54.109907) 1179 | (xy 107.351901 54.061715) 1180 | (xy 107.351929 54.061377) 1181 | (xy 107.351989 54.061201) 1182 | (xy 107.3519 54.001355) 1183 | (xy 107.351899 53.944475) 1184 | (xy 107.351842 53.944299) 1185 | (xy 107.351815 53.94396) 1186 | (xy 107.345526 49.715763) 1187 | (xy 107.345626 49.714218) 1188 | (xy 107.356894 49.628651) 1189 | (xy 107.357685 49.625701) 1190 | (xy 107.357689 49.625693) 1191 | (xy 107.390422 49.546675) 1192 | (xy 107.391949 49.544031) 1193 | (xy 107.444025 49.476168) 1194 | (xy 107.446183 49.47401) 1195 | (xy 107.491234 49.439444) 1196 | (xy 107.514051 49.421938) 1197 | (xy 107.516696 49.420411) 1198 | (xy 107.595727 49.387678) 1199 | (xy 107.598677 49.386888) 1200 | (xy 107.684632 49.375575) 1201 | (xy 107.686158 49.375475) 1202 | (xy 107.741519 49.375477) 1203 | (xy 107.74211 49.375477) 1204 | (xy 107.742114 49.375476) 1205 | (xy 107.742122 49.375475) 1206 | (xy 108.284244 49.375475) 1207 | ) 1208 | ) 1209 | (filled_polygon 1210 | (layer "F.Cu") 1211 | (pts 1212 | (xy 106.424139 62.88415) 1213 | (xy 106.430066 62.890862) 1214 | (xy 106.4307 62.894661) 1215 | (xy 106.4307 67.398927) 1216 | (xy 106.427273 67.4072) 1217 | (xy 105.993993 67.840481) 1218 | (xy 105.98572 67.843908) 1219 | (xy 105.980208 67.842527) 1220 | (xy 105.915554 67.807968) 1221 | (xy 105.915001 67.8078) 1222 | (xy 105.914998 67.807799) 1223 | (xy 105.820638 67.779176) 1224 | (xy 105.758103 67.760206) 1225 | (xy 105.751182 67.754526) 1226 | (xy 105.7498 67.749011) 1227 | (xy 105.7498 63.0982) 1228 | (xy 105.753227 63.089927) 1229 | (xy 105.7615 63.0865) 1230 | (xy 106.12666 63.0865) 1231 | (xy 106.157083 63.082067) 1232 | (xy 106.193897 63.076704) 1233 | (xy 106.1939 63.076703) 1234 | (xy 106.194793 63.076573) 1235 | (xy 106.195606 63.076176) 1236 | (xy 106.195608 63.076175) 1237 | (xy 106.257 63.046162) 1238 | (xy 106.299883 63.025198) 1239 | (xy 106.382598 62.942483) 1240 | (xy 106.408489 62.889522) 1241 | (xy 106.415201 62.883595) 1242 | ) 1243 | ) 1244 | ) 1245 | (zone (net 1) (net_name "+5V") (layer "F.Cu") (tstamp 7dc44f35-2bb5-47a4-b18b-2870c027b895) (hatch edge 0.508) 1246 | (connect_pads yes (clearance 0.0254)) 1247 | (min_thickness 0.0254) (filled_areas_thickness no) 1248 | (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) 1249 | (polygon 1250 | (pts 1251 | (xy 105.23 71.664) 1252 | (xy 98.28 71.664) 1253 | (xy 98.28 47.8518) 1254 | (xy 105.23 47.8518) 1255 | ) 1256 | ) 1257 | (filled_polygon 1258 | (layer "F.Cu") 1259 | (pts 1260 | (xy 103.310759 49.3706) 1261 | (xy 103.396346 49.381867) 1262 | (xy 103.399292 49.382658) 1263 | (xy 103.438809 49.399026) 1264 | (xy 103.478325 49.415394) 1265 | (xy 103.480971 49.416921) 1266 | (xy 103.548841 49.469) 1267 | (xy 103.551 49.471159) 1268 | (xy 103.603079 49.539029) 1269 | (xy 103.604606 49.541675) 1270 | (xy 103.637342 49.620706) 1271 | (xy 103.638133 49.623656) 1272 | (xy 103.6494 49.70924) 1273 | (xy 103.6495 49.710767) 1274 | (xy 103.6495 49.767098) 1275 | (xy 103.649527 49.767181) 1276 | (xy 103.64954 49.767341) 1277 | (xy 103.65246 53.953175) 1278 | (xy 103.652335 53.954859) 1279 | (xy 103.652066 53.955709) 1280 | (xy 103.652073 53.95663) 1281 | (xy 103.652073 53.956631) 1282 | (xy 103.652501 54.011528) 1283 | (xy 103.652501 54.011609) 1284 | (xy 103.652502 54.012783) 1285 | (xy 103.652498 54.012805) 1286 | (xy 103.652462 54.012805) 1287 | (xy 103.652506 54.018775) 1288 | (xy 103.652521 54.040124) 1289 | (xy 103.6526 54.040597) 1290 | (xy 103.652636 54.041029) 1291 | (xy 103.652677 54.041907) 1292 | (xy 103.653258 54.12056) 1293 | (xy 103.653333 54.121011) 1294 | (xy 103.685607 54.315936) 1295 | (xy 103.688462 54.333182) 1296 | (xy 103.756335 54.537731) 1297 | (xy 103.756539 54.538125) 1298 | (xy 103.756541 54.538131) 1299 | (xy 103.815303 54.651918) 1300 | (xy 103.855223 54.729221) 1301 | (xy 103.982714 54.902983) 1302 | (xy 104.1357 55.05478) 1303 | (xy 104.136077 55.055052) 1304 | (xy 104.31008 55.180644) 1305 | (xy 104.310084 55.180647) 1306 | (xy 104.310452 55.180912) 1307 | (xy 104.310859 55.181118) 1308 | (xy 104.310862 55.18112) 1309 | (xy 104.50229 55.278093) 1310 | (xy 104.502707 55.278304) 1311 | (xy 104.525345 55.28562) 1312 | (xy 104.532163 55.291425) 1313 | (xy 104.53288 55.300351) 1314 | (xy 104.53071 55.304274) 1315 | (xy 104.509712 55.329299) 1316 | (xy 104.509022 55.330051) 1317 | (xy 104.098054 55.74102) 1318 | (xy 104.097302 55.74171) 1319 | (xy 104.065387 55.768489) 1320 | (xy 104.065385 55.768491) 1321 | (xy 104.064606 55.769145) 1322 | (xy 104.064096 55.770029) 1323 | (xy 104.064093 55.770032) 1324 | (xy 104.043265 55.806107) 1325 | (xy 104.042717 55.806968) 1326 | (xy 104.018833 55.841077) 1327 | (xy 104.018246 55.841916) 1328 | (xy 104.017981 55.842906) 1329 | (xy 104.014881 55.854475) 1330 | (xy 104.013712 55.857296) 1331 | (xy 104.007212 55.868555) 1332 | (xy 104.007034 55.869565) 1333 | (xy 103.999803 55.910574) 1334 | (xy 103.999582 55.91157) 1335 | (xy 103.988536 55.952793) 1336 | (xy 103.988626 55.953818) 1337 | (xy 103.992255 55.9953) 1338 | (xy 103.9923 55.99632) 1339 | (xy 103.9923 56.254561) 1340 | (xy 103.988873 56.262834) 1341 | (xy 103.98243 56.266117) 1342 | (xy 103.951781 56.270972) 1343 | (xy 103.934674 56.273681) 1344 | (xy 103.81458 56.334872) 1345 | (xy 103.719272 56.43018) 1346 | (xy 103.658081 56.550274) 1347 | (xy 103.657937 56.551184) 1348 | (xy 103.654477 56.57303) 1349 | (xy 103.649798 56.580665) 1350 | (xy 103.642921 56.5829) 1351 | (xy 103.443279 56.5829) 1352 | (xy 103.435006 56.579473) 1353 | (xy 103.431723 56.57303) 1354 | (xy 103.428263 56.551184) 1355 | (xy 103.428119 56.550274) 1356 | (xy 103.366928 56.43018) 1357 | (xy 103.27162 56.334872) 1358 | (xy 103.151526 56.273681) 1359 | (xy 103.051888 56.2579) 1360 | (xy 102.484912 56.2579) 1361 | (xy 102.385274 56.273681) 1362 | (xy 102.26518 56.334872) 1363 | (xy 102.169872 56.43018) 1364 | (xy 102.108681 56.550274) 1365 | (xy 102.108537 56.551184) 1366 | (xy 102.105077 56.57303) 1367 | (xy 102.100398 56.580665) 1368 | (xy 102.093521 56.5829) 1369 | (xy 101.868479 56.5829) 1370 | (xy 101.860206 56.579473) 1371 | (xy 101.856923 56.57303) 1372 | (xy 101.853463 56.551184) 1373 | (xy 101.853319 56.550274) 1374 | (xy 101.792128 56.43018) 1375 | (xy 101.69682 56.334872) 1376 | (xy 101.576726 56.273681) 1377 | (xy 101.477088 56.2579) 1378 | (xy 100.910112 56.2579) 1379 | (xy 100.810474 56.273681) 1380 | (xy 100.69038 56.334872) 1381 | (xy 100.595072 56.43018) 1382 | (xy 100.533881 56.550274) 1383 | (xy 100.5181 56.649912) 1384 | (xy 100.5181 57.166888) 1385 | (xy 100.533881 57.266526) 1386 | (xy 100.595072 57.38662) 1387 | (xy 100.69038 57.481928) 1388 | (xy 100.810474 57.543119) 1389 | (xy 100.910112 57.5589) 1390 | (xy 101.477088 57.5589) 1391 | (xy 101.576726 57.543119) 1392 | (xy 101.69682 57.481928) 1393 | (xy 101.792128 57.38662) 1394 | (xy 101.853319 57.266526) 1395 | (xy 101.856923 57.24377) 1396 | (xy 101.861602 57.236135) 1397 | (xy 101.868479 57.2339) 1398 | (xy 102.093521 57.2339) 1399 | (xy 102.101794 57.237327) 1400 | (xy 102.105077 57.24377) 1401 | (xy 102.108681 57.266526) 1402 | (xy 102.169872 57.38662) 1403 | (xy 102.26518 57.481928) 1404 | (xy 102.385274 57.543119) 1405 | (xy 102.484912 57.5589) 1406 | (xy 103.051888 57.5589) 1407 | (xy 103.151526 57.543119) 1408 | (xy 103.27162 57.481928) 1409 | (xy 103.366928 57.38662) 1410 | (xy 103.428119 57.266526) 1411 | (xy 103.431723 57.24377) 1412 | (xy 103.436402 57.236135) 1413 | (xy 103.443279 57.2339) 1414 | (xy 103.642921 57.2339) 1415 | (xy 103.651194 57.237327) 1416 | (xy 103.654477 57.24377) 1417 | (xy 103.658081 57.266526) 1418 | (xy 103.719272 57.38662) 1419 | (xy 103.81458 57.481928) 1420 | (xy 103.934674 57.543119) 1421 | (xy 104.034312 57.5589) 1422 | (xy 104.601288 57.5589) 1423 | (xy 104.700926 57.543119) 1424 | (xy 104.82102 57.481928) 1425 | (xy 104.916328 57.38662) 1426 | (xy 104.977519 57.266526) 1427 | (xy 104.9933 57.166888) 1428 | (xy 104.9933 56.649912) 1429 | (xy 104.977519 56.550274) 1430 | (xy 104.916328 56.43018) 1431 | (xy 104.82102 56.334872) 1432 | (xy 104.700926 56.273681) 1433 | (xy 104.683819 56.270972) 1434 | (xy 104.65317 56.266117) 1435 | (xy 104.645534 56.261438) 1436 | (xy 104.6433 56.254561) 1437 | (xy 104.6433 56.121272) 1438 | (xy 104.646727 56.112999) 1439 | (xy 104.881 55.878727) 1440 | (xy 104.889273 55.8753) 1441 | (xy 105.2183 55.8753) 1442 | (xy 105.226573 55.878727) 1443 | (xy 105.23 55.887) 1444 | (xy 105.23 58.1212) 1445 | (xy 105.226573 58.129473) 1446 | (xy 105.2183 58.1329) 1447 | (xy 104.992679 58.1329) 1448 | (xy 104.984406 58.129473) 1449 | (xy 104.981123 58.12303) 1450 | (xy 104.977663 58.101184) 1451 | (xy 104.977519 58.100274) 1452 | (xy 104.916328 57.98018) 1453 | (xy 104.82102 57.884872) 1454 | (xy 104.700926 57.823681) 1455 | (xy 104.601288 57.8079) 1456 | (xy 104.034312 57.8079) 1457 | (xy 103.934674 57.823681) 1458 | (xy 103.81458 57.884872) 1459 | (xy 103.719272 57.98018) 1460 | (xy 103.658081 58.100274) 1461 | (xy 103.657937 58.101184) 1462 | (xy 103.654477 58.12303) 1463 | (xy 103.649798 58.130665) 1464 | (xy 103.642921 58.1329) 1465 | (xy 103.443279 58.1329) 1466 | (xy 103.435006 58.129473) 1467 | (xy 103.431723 58.12303) 1468 | (xy 103.428263 58.101184) 1469 | (xy 103.428119 58.100274) 1470 | (xy 103.366928 57.98018) 1471 | (xy 103.27162 57.884872) 1472 | (xy 103.151526 57.823681) 1473 | (xy 103.051888 57.8079) 1474 | (xy 102.484912 57.8079) 1475 | (xy 102.385274 57.823681) 1476 | (xy 102.26518 57.884872) 1477 | (xy 102.169872 57.98018) 1478 | (xy 102.108681 58.100274) 1479 | (xy 102.0929 58.199912) 1480 | (xy 102.0929 58.716888) 1481 | (xy 102.108681 58.816526) 1482 | (xy 102.169872 58.93662) 1483 | (xy 102.26518 59.031928) 1484 | (xy 102.385274 59.093119) 1485 | (xy 102.484912 59.1089) 1486 | (xy 103.051888 59.1089) 1487 | (xy 103.151526 59.093119) 1488 | (xy 103.27162 59.031928) 1489 | (xy 103.366928 58.93662) 1490 | (xy 103.428119 58.816526) 1491 | (xy 103.431723 58.79377) 1492 | (xy 103.436402 58.786135) 1493 | (xy 103.443279 58.7839) 1494 | (xy 103.642921 58.7839) 1495 | (xy 103.651194 58.787327) 1496 | (xy 103.654477 58.79377) 1497 | (xy 103.658081 58.816526) 1498 | (xy 103.719272 58.93662) 1499 | (xy 103.81458 59.031928) 1500 | (xy 103.934674 59.093119) 1501 | (xy 103.948182 59.095259) 1502 | (xy 103.965932 59.09807) 1503 | (xy 103.973568 59.102749) 1504 | (xy 103.975658 59.111456) 1505 | (xy 103.972375 59.117899) 1506 | (xy 103.533755 59.556519) 1507 | (xy 103.533003 59.557209) 1508 | (xy 103.501087 59.583989) 1509 | (xy 103.501085 59.583991) 1510 | (xy 103.500306 59.584645) 1511 | (xy 103.499796 59.585529) 1512 | (xy 103.499793 59.585532) 1513 | (xy 103.478965 59.621607) 1514 | (xy 103.478417 59.622468) 1515 | (xy 103.454533 59.656577) 1516 | (xy 103.453946 59.657416) 1517 | (xy 103.453681 59.658406) 1518 | (xy 103.450581 59.669975) 1519 | (xy 103.449412 59.672796) 1520 | (xy 103.442912 59.684055) 1521 | (xy 103.442734 59.685065) 1522 | (xy 103.435503 59.726074) 1523 | (xy 103.435282 59.72707) 1524 | (xy 103.424236 59.768293) 1525 | (xy 103.424326 59.769318) 1526 | (xy 103.427955 59.8108) 1527 | (xy 103.428 59.81182) 1528 | (xy 103.428 59.955) 1529 | (xy 103.424573 59.963273) 1530 | (xy 103.4163 59.9667) 1531 | (xy 103.20774 59.9667) 1532 | (xy 103.177317 59.971133) 1533 | (xy 103.140503 59.976496) 1534 | (xy 103.1405 59.976497) 1535 | (xy 103.139607 59.976627) 1536 | (xy 103.138794 59.977024) 1537 | (xy 103.138792 59.977025) 1538 | (xy 103.0774 60.007038) 1539 | (xy 103.034517 60.028002) 1540 | (xy 102.951802 60.110717) 1541 | (xy 102.951376 60.111589) 1542 | (xy 102.900926 60.214787) 1543 | (xy 102.900427 60.215807) 1544 | (xy 102.8905 60.28394) 1545 | (xy 102.8905 60.65046) 1546 | (xy 102.900427 60.718593) 1547 | (xy 102.900824 60.719406) 1548 | (xy 102.900825 60.719408) 1549 | (xy 102.908004 60.734093) 1550 | (xy 102.951802 60.823683) 1551 | (xy 103.034517 60.906398) 1552 | (xy 103.055717 60.916762) 1553 | (xy 103.138792 60.957375) 1554 | (xy 103.138794 60.957376) 1555 | (xy 103.139607 60.957773) 1556 | (xy 103.1405 60.957903) 1557 | (xy 103.140503 60.957904) 1558 | (xy 103.177317 60.963267) 1559 | (xy 103.20774 60.9677) 1560 | (xy 104.29926 60.9677) 1561 | (xy 104.329683 60.963267) 1562 | (xy 104.366497 60.957904) 1563 | (xy 104.3665 60.957903) 1564 | (xy 104.367393 60.957773) 1565 | (xy 104.368206 60.957376) 1566 | (xy 104.368208 60.957375) 1567 | (xy 104.459463 60.912763) 1568 | (xy 104.468401 60.912208) 1569 | (xy 104.472875 60.915001) 1570 | (xy 104.547673 60.9898) 1571 | (xy 104.5511 60.998073) 1572 | (xy 104.5511 61.978373) 1573 | (xy 104.547673 61.986646) 1574 | (xy 104.5394 61.990073) 1575 | (xy 104.531127 61.986646) 1576 | (xy 104.472483 61.928002) 1577 | (xy 104.394376 61.889818) 1578 | (xy 104.368208 61.877025) 1579 | (xy 104.368206 61.877024) 1580 | (xy 104.367393 61.876627) 1581 | (xy 104.3665 61.876497) 1582 | (xy 104.366497 61.876496) 1583 | (xy 104.329683 61.871133) 1584 | (xy 104.29926 61.8667) 1585 | (xy 103.20774 61.8667) 1586 | (xy 103.177317 61.871133) 1587 | (xy 103.140503 61.876496) 1588 | (xy 103.1405 61.876497) 1589 | (xy 103.139607 61.876627) 1590 | (xy 103.138794 61.877024) 1591 | (xy 103.138792 61.877025) 1592 | (xy 103.112624 61.889818) 1593 | (xy 103.034517 61.928002) 1594 | (xy 102.986873 61.975646) 1595 | (xy 102.9786 61.979073) 1596 | (xy 102.970327 61.975646) 1597 | (xy 102.9669 61.967373) 1598 | (xy 102.9669 61.932308) 1599 | (xy 102.966945 61.931288) 1600 | (xy 102.970573 61.889818) 1601 | (xy 102.970663 61.888793) 1602 | (xy 102.967368 61.876496) 1603 | (xy 102.95962 61.847581) 1604 | (xy 102.959399 61.846585) 1605 | (xy 102.952166 61.805563) 1606 | (xy 102.952165 61.805562) 1607 | (xy 102.951988 61.804555) 1608 | (xy 102.951477 61.80367) 1609 | (xy 102.951476 61.803667) 1610 | (xy 102.945485 61.793289) 1611 | (xy 102.944317 61.790469) 1612 | (xy 102.941218 61.778905) 1613 | (xy 102.940953 61.777916) 1614 | (xy 102.938471 61.77437) 1615 | (xy 102.916484 61.74297) 1616 | (xy 102.915935 61.742109) 1617 | (xy 102.895104 61.706029) 1618 | (xy 102.894594 61.705145) 1619 | (xy 102.893815 61.704491) 1620 | (xy 102.893813 61.704489) 1621 | (xy 102.861901 61.677712) 1622 | (xy 102.861149 61.677022) 1623 | (xy 102.38158 61.197454) 1624 | (xy 102.38089 61.196702) 1625 | (xy 102.354112 61.164789) 1626 | (xy 102.353455 61.164006) 1627 | (xy 102.324835 61.147482) 1628 | (xy 102.320174 61.142489) 1629 | (xy 102.280624 61.061589) 1630 | (xy 102.280198 61.060717) 1631 | (xy 102.197483 60.978002) 1632 | (xy 102.1546 60.957038) 1633 | (xy 102.093208 60.927025) 1634 | (xy 102.093206 60.927024) 1635 | (xy 102.092393 60.926627) 1636 | (xy 102.0915 60.926497) 1637 | (xy 102.091497 60.926496) 1638 | (xy 102.054683 60.921133) 1639 | (xy 102.02426 60.9167) 1640 | (xy 100.93274 60.9167) 1641 | (xy 100.902317 60.921133) 1642 | (xy 100.865503 60.926496) 1643 | (xy 100.8655 60.926497) 1644 | (xy 100.864607 60.926627) 1645 | (xy 100.863794 60.927024) 1646 | (xy 100.863792 60.927025) 1647 | (xy 100.8024 60.957038) 1648 | (xy 100.759517 60.978002) 1649 | (xy 100.676802 61.060717) 1650 | (xy 100.676376 61.061589) 1651 | (xy 100.625925 61.164789) 1652 | (xy 100.625427 61.165807) 1653 | (xy 100.6155 61.23394) 1654 | (xy 100.6155 61.60046) 1655 | (xy 100.625427 61.668593) 1656 | (xy 100.625824 61.669406) 1657 | (xy 100.625825 61.669408) 1658 | (xy 100.629727 61.677389) 1659 | (xy 100.676802 61.773683) 1660 | (xy 100.759517 61.856398) 1661 | (xy 100.780717 61.866762) 1662 | (xy 100.863792 61.907375) 1663 | (xy 100.863794 61.907376) 1664 | (xy 100.864607 61.907773) 1665 | (xy 100.8655 61.907903) 1666 | (xy 100.865503 61.907904) 1667 | (xy 100.902317 61.913267) 1668 | (xy 100.93274 61.9177) 1669 | (xy 102.02426 61.9177) 1670 | (xy 102.054683 61.913267) 1671 | (xy 102.091497 61.907904) 1672 | (xy 102.0915 61.907903) 1673 | (xy 102.092393 61.907773) 1674 | (xy 102.093206 61.907376) 1675 | (xy 102.093211 61.907374) 1676 | (xy 102.137851 61.885551) 1677 | (xy 102.146788 61.884996) 1678 | (xy 102.151262 61.887789) 1679 | (xy 102.312473 62.049) 1680 | (xy 102.3159 62.057273) 1681 | (xy 102.3159 63.360328) 1682 | (xy 102.312473 63.368601) 1683 | (xy 101.456455 64.224619) 1684 | (xy 101.455703 64.225309) 1685 | (xy 101.423787 64.252089) 1686 | (xy 101.423785 64.252091) 1687 | (xy 101.423006 64.252745) 1688 | (xy 101.422496 64.253629) 1689 | (xy 101.422493 64.253632) 1690 | (xy 101.401665 64.289707) 1691 | (xy 101.401117 64.290568) 1692 | (xy 101.377233 64.324677) 1693 | (xy 101.376646 64.325516) 1694 | (xy 101.376381 64.326506) 1695 | (xy 101.373281 64.338075) 1696 | (xy 101.372112 64.340896) 1697 | (xy 101.365612 64.352155) 1698 | (xy 101.365434 64.353165) 1699 | (xy 101.358203 64.394174) 1700 | (xy 101.357982 64.39517) 1701 | (xy 101.346936 64.436393) 1702 | (xy 101.347026 64.437418) 1703 | (xy 101.350655 64.4789) 1704 | (xy 101.3507 64.47992) 1705 | (xy 101.3507 65.77128) 1706 | (xy 101.350655 65.7723) 1707 | (xy 101.346936 65.814807) 1708 | (xy 101.347202 65.8158) 1709 | (xy 101.357982 65.85603) 1710 | (xy 101.358203 65.857026) 1711 | (xy 101.365612 65.899045) 1712 | (xy 101.366125 65.899933) 1713 | (xy 101.366125 65.899934) 1714 | (xy 101.372112 65.910303) 1715 | (xy 101.37328 65.913123) 1716 | (xy 101.376646 65.925684) 1717 | (xy 101.377232 65.926521) 1718 | (xy 101.377233 65.926523) 1719 | (xy 101.401117 65.960632) 1720 | (xy 101.401665 65.961493) 1721 | (xy 101.422493 65.997568) 1722 | (xy 101.422496 65.997571) 1723 | (xy 101.423006 65.998455) 1724 | (xy 101.423785 65.999109) 1725 | (xy 101.423787 65.999111) 1726 | (xy 101.455705 66.025893) 1727 | (xy 101.456457 66.026583) 1728 | (xy 102.045219 66.615345) 1729 | (xy 102.045909 66.616097) 1730 | (xy 102.072689 66.648013) 1731 | (xy 102.072691 66.648015) 1732 | (xy 102.073345 66.648794) 1733 | (xy 102.074229 66.649304) 1734 | (xy 102.074232 66.649307) 1735 | (xy 102.110307 66.670135) 1736 | (xy 102.111168 66.670683) 1737 | (xy 102.145277 66.694567) 1738 | (xy 102.145279 66.694568) 1739 | (xy 102.146116 66.695154) 1740 | (xy 102.158677 66.69852) 1741 | (xy 102.161496 66.699688) 1742 | (xy 102.172755 66.706188) 1743 | (xy 102.173765 66.706366) 1744 | (xy 102.214774 66.713597) 1745 | (xy 102.21577 66.713818) 1746 | (xy 102.242946 66.7211) 1747 | (xy 102.256993 66.724864) 1748 | (xy 102.299503 66.721145) 1749 | (xy 102.300524 66.7211) 1750 | (xy 103.62248 66.7211) 1751 | (xy 103.623501 66.721145) 1752 | (xy 103.666007 66.724864) 1753 | (xy 103.680054 66.7211) 1754 | (xy 103.70723 66.713818) 1755 | (xy 103.708226 66.713597) 1756 | (xy 103.749235 66.706366) 1757 | (xy 103.750245 66.706188) 1758 | (xy 103.761504 66.699688) 1759 | (xy 103.764323 66.69852) 1760 | (xy 103.776884 66.695154) 1761 | (xy 103.777721 66.694568) 1762 | (xy 103.777723 66.694567) 1763 | (xy 103.811832 66.670683) 1764 | (xy 103.812693 66.670135) 1765 | (xy 103.848768 66.649307) 1766 | (xy 103.848771 66.649304) 1767 | (xy 103.849655 66.648794) 1768 | (xy 103.850309 66.648015) 1769 | (xy 103.850311 66.648013) 1770 | (xy 103.877093 66.616095) 1771 | (xy 103.877783 66.615343) 1772 | (xy 104.717229 65.775897) 1773 | (xy 104.725502 65.77247) 1774 | (xy 104.733775 65.775897) 1775 | (xy 104.734546 65.776748) 1776 | (xy 104.75019 65.79581) 1777 | (xy 104.91015 65.927085) 1778 | (xy 104.91066 65.927357) 1779 | (xy 104.910662 65.927359) 1780 | (xy 104.972911 65.960632) 1781 | (xy 105.092646 66.024632) 1782 | (xy 105.093199 66.0248) 1783 | (xy 105.093202 66.024801) 1784 | (xy 105.150305 66.042122) 1785 | (xy 105.221697 66.063779) 1786 | (xy 105.228618 66.069459) 1787 | (xy 105.23 66.074974) 1788 | (xy 105.23 67.762176) 1789 | (xy 105.226573 67.770449) 1790 | (xy 105.221697 67.773371) 1791 | (xy 105.170525 67.788894) 1792 | (xy 105.108202 67.807799) 1793 | (xy 105.108199 67.8078) 1794 | (xy 105.107646 67.807968) 1795 | (xy 105.107132 67.808243) 1796 | (xy 104.925662 67.905241) 1797 | (xy 104.92566 67.905243) 1798 | (xy 104.92515 67.905515) 1799 | (xy 104.76519 68.03679) 1800 | (xy 104.633915 68.19675) 1801 | (xy 104.536368 68.379246) 1802 | (xy 104.4763 68.577266) 1803 | (xy 104.456017 68.7832) 1804 | (xy 104.4763 68.989134) 1805 | (xy 104.536368 69.187154) 1806 | (xy 104.633915 69.36965) 1807 | (xy 104.76519 69.52961) 1808 | (xy 104.92515 69.660885) 1809 | (xy 104.92566 69.661157) 1810 | (xy 104.925662 69.661159) 1811 | (xy 105.027072 69.715364) 1812 | (xy 105.107646 69.758432) 1813 | (xy 105.108199 69.7586) 1814 | (xy 105.108202 69.758601) 1815 | (xy 105.170525 69.777506) 1816 | (xy 105.221697 69.793028) 1817 | (xy 105.228618 69.798709) 1818 | (xy 105.23 69.804224) 1819 | (xy 105.23 70.74058) 1820 | (xy 105.226573 70.748853) 1821 | (xy 105.2183 70.75228) 1822 | (xy 101.080113 70.75228) 1823 | (xy 101.080111 70.752279) 1824 | (xy 101.079591 70.752279) 1825 | (xy 101.023666 70.75228) 1826 | (xy 101.022356 70.752206) 1827 | (xy 100.878455 70.735995) 1828 | (xy 100.875911 70.735414) 1829 | (xy 100.739849 70.687805) 1830 | (xy 100.737492 70.686671) 1831 | (xy 100.61543 70.609976) 1832 | (xy 100.613382 70.608342) 1833 | (xy 100.511458 70.506418) 1834 | (xy 100.509824 70.50437) 1835 | (xy 100.433129 70.382308) 1836 | (xy 100.431994 70.379949) 1837 | (xy 100.384386 70.243889) 1838 | (xy 100.383805 70.241345) 1839 | (xy 100.367594 70.097442) 1840 | (xy 100.36752 70.096132) 1841 | (xy 100.367637 69.793028) 1842 | (xy 100.372886 56.116426) 1843 | (xy 100.372898 56.085655) 1844 | (xy 100.372905 56.08556) 1845 | (xy 100.372921 56.085511) 1846 | (xy 100.37292 56.029066) 1847 | (xy 100.372994 56.027756) 1848 | (xy 100.381551 55.9518) 1849 | (xy 100.389205 55.883855) 1850 | (xy 100.389786 55.881311) 1851 | (xy 100.437395 55.745249) 1852 | (xy 100.43853 55.74289) 1853 | (xy 100.439272 55.74171) 1854 | (xy 100.515224 55.62083) 1855 | (xy 100.516858 55.618782) 1856 | (xy 100.618782 55.516858) 1857 | (xy 100.62083 55.515224) 1858 | (xy 100.657145 55.492406) 1859 | (xy 100.742892 55.438529) 1860 | (xy 100.745249 55.437395) 1861 | (xy 100.881311 55.389786) 1862 | (xy 100.883855 55.389205) 1863 | (xy 101.025676 55.373229) 1864 | (xy 101.026605 55.373161) 1865 | (xy 101.033972 55.372926) 1866 | (xy 101.034345 55.37292) 1867 | (xy 101.042734 55.37292) 1868 | (xy 101.084588 55.372921) 1869 | (xy 101.085511 55.372921) 1870 | (xy 101.089418 55.371652) 1871 | (xy 101.092653 55.371086) 1872 | (xy 101.145171 55.369395) 1873 | (xy 101.145178 55.369394) 1874 | (xy 101.145621 55.36938) 1875 | (xy 101.35352 55.33031) 1876 | (xy 101.552973 55.259834) 1877 | (xy 101.739265 55.159616) 1878 | (xy 101.877545 55.055052) 1879 | (xy 101.907631 55.032302) 1880 | (xy 101.907635 55.032299) 1881 | (xy 101.907994 55.032027) 1882 | (xy 102.05517 54.880082) 1883 | (xy 102.177316 54.707371) 1884 | (xy 102.202337 54.65708) 1885 | (xy 102.27134 54.518388) 1886 | (xy 102.271342 54.518383) 1887 | (xy 102.271543 54.517979) 1888 | (xy 102.330148 54.333615) 1889 | (xy 102.335489 54.316813) 1890 | (xy 102.33549 54.316809) 1891 | (xy 102.335626 54.316381) 1892 | (xy 102.368048 54.107342) 1893 | (xy 102.36808 54.001573) 1894 | (xy 102.36808 54.001515) 1895 | (xy 102.370463 49.767098) 1896 | (xy 102.370498 49.705806) 1897 | (xy 102.370619 49.704133) 1898 | (xy 102.38286 49.619784) 1899 | (xy 102.383679 49.61687) 1900 | (xy 102.41697 49.538897) 1901 | (xy 102.418508 49.536291) 1902 | (xy 102.458262 49.485375) 1903 | (xy 102.470685 49.469464) 1904 | (xy 102.472839 49.46734) 1905 | (xy 102.540416 49.416129) 1906 | (xy 102.543045 49.414629) 1907 | (xy 102.621486 49.382468) 1908 | (xy 102.624411 49.381691) 1909 | (xy 102.709463 49.370598) 1910 | (xy 102.710976 49.3705) 1911 | (xy 103.309233 49.3705) 1912 | ) 1913 | ) 1914 | ) 1915 | (zone (net 2) (net_name "GND") (layer "B.Cu") (tstamp 007002fe-c7c4-4007-8799-32962070f6e3) (hatch edge 0.508) 1916 | (connect_pads yes (clearance 0.0254)) 1917 | (min_thickness 0.0254) (filled_areas_thickness no) 1918 | (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) 1919 | (polygon 1920 | (pts 1921 | (xy 111.93 71.388) 1922 | (xy 105.6184 71.388) 1923 | (xy 105.6184 48.13) 1924 | (xy 111.93 48.13) 1925 | ) 1926 | ) 1927 | (filled_polygon 1928 | (layer "B.Cu") 1929 | (pts 1930 | (xy 108.285771 49.375575) 1931 | (xy 108.371356 49.386845) 1932 | (xy 108.374307 49.387636) 1933 | (xy 108.389251 49.393826) 1934 | (xy 108.453346 49.420377) 1935 | (xy 108.455984 49.4219) 1936 | (xy 108.478848 49.439444) 1937 | (xy 108.523858 49.473983) 1938 | (xy 108.526017 49.476142) 1939 | (xy 108.552057 49.510077) 1940 | (xy 108.5781 49.544016) 1941 | (xy 108.579623 49.546654) 1942 | (xy 108.586884 49.564181) 1943 | (xy 108.612364 49.625693) 1944 | (xy 108.613155 49.628644) 1945 | (xy 108.624425 49.714229) 1946 | (xy 108.624525 49.715756) 1947 | (xy 108.624527 49.772086) 1948 | (xy 108.624583 49.77226) 1949 | (xy 108.62461 49.772597) 1950 | (xy 108.630844 53.962207) 1951 | (xy 108.630894 53.996106) 1952 | (xy 108.630863 53.996259) 1953 | (xy 108.630887 53.996259) 1954 | (xy 108.62976 54.104188) 1955 | (xy 108.629826 54.104634) 1956 | (xy 108.629826 54.104636) 1957 | (xy 108.636148 54.147452) 1958 | (xy 108.66129 54.317741) 1959 | (xy 108.661426 54.318177) 1960 | (xy 108.661427 54.318179) 1961 | (xy 108.725676 54.523301) 1962 | (xy 108.725814 54.523741) 1963 | (xy 108.821745 54.717123) 1964 | (xy 108.868519 54.782994) 1965 | (xy 108.946459 54.892757) 1966 | (xy 108.946464 54.892763) 1967 | (xy 108.946726 54.893132) 1968 | (xy 109.097683 55.047441) 1969 | (xy 109.195894 55.120475) 1970 | (xy 109.256701 55.165693) 1971 | (xy 109.270905 55.176256) 1972 | (xy 109.363102 55.224543) 1973 | (xy 109.461726 55.276197) 1974 | (xy 109.461733 55.2762) 1975 | (xy 109.462134 55.27641) 1976 | (xy 109.624356 55.331161) 1977 | (xy 109.663006 55.344205) 1978 | (xy 109.666668 55.345441) 1979 | (xy 109.793423 55.367009) 1980 | (xy 109.879018 55.381573) 1981 | (xy 109.879021 55.381573) 1982 | (xy 109.879478 55.381651) 1983 | (xy 109.930679 55.382241) 1984 | (xy 109.932691 55.382573) 1985 | (xy 109.932704 55.382493) 1986 | (xy 109.933615 55.382637) 1987 | (xy 109.934489 55.382921) 1988 | (xy 109.935408 55.382921) 1989 | (xy 109.986751 55.38292) 1990 | (xy 109.989433 55.38292) 1991 | (xy 109.989566 55.382921) 1992 | (xy 109.989717 55.382923) 1993 | (xy 109.991244 55.38294) 1994 | (xy 109.992412 55.383013) 1995 | (xy 110.136145 55.399205) 1996 | (xy 110.138689 55.399786) 1997 | (xy 110.274751 55.447395) 1998 | (xy 110.277108 55.448529) 1999 | (xy 110.344094 55.490618) 2000 | (xy 110.39917 55.525224) 2001 | (xy 110.401218 55.526858) 2002 | (xy 110.503142 55.628782) 2003 | (xy 110.504776 55.63083) 2004 | (xy 110.558349 55.716092) 2005 | (xy 110.58147 55.75289) 2006 | (xy 110.582605 55.755249) 2007 | (xy 110.630214 55.891311) 2008 | (xy 110.630795 55.893855) 2009 | (xy 110.642644 55.999036) 2010 | (xy 110.647005 56.037746) 2011 | (xy 110.647079 56.03907) 2012 | (xy 110.630349 70.039262) 2013 | (xy 110.630327 70.039544) 2014 | (xy 110.630279 70.039689) 2015 | (xy 110.630279 70.040141) 2016 | (xy 110.63028 70.096134) 2017 | (xy 110.630206 70.097444) 2018 | (xy 110.613995 70.241345) 2019 | (xy 110.613414 70.243889) 2020 | (xy 110.589666 70.31176) 2021 | (xy 110.565806 70.379949) 2022 | (xy 110.564671 70.382308) 2023 | (xy 110.523508 70.44782) 2024 | (xy 110.487976 70.50437) 2025 | (xy 110.486342 70.506418) 2026 | (xy 110.384418 70.608342) 2027 | (xy 110.38237 70.609976) 2028 | (xy 110.260308 70.686671) 2029 | (xy 110.257951 70.687805) 2030 | (xy 110.121889 70.735414) 2031 | (xy 110.119345 70.735995) 2032 | (xy 109.975444 70.752206) 2033 | (xy 109.974134 70.75228) 2034 | (xy 109.918209 70.752279) 2035 | (xy 109.917689 70.752279) 2036 | (xy 109.917687 70.75228) 2037 | (xy 105.6301 70.75228) 2038 | (xy 105.621827 70.748853) 2039 | (xy 105.6184 70.74058) 2040 | (xy 105.6184 69.838869) 2041 | (xy 105.621827 69.830596) 2042 | (xy 105.628953 69.827225) 2043 | (xy 105.716959 69.818557) 2044 | (xy 105.716963 69.818556) 2045 | (xy 105.717534 69.8185) 2046 | (xy 105.816544 69.788466) 2047 | (xy 105.914998 69.758601) 2048 | (xy 105.915001 69.7586) 2049 | (xy 105.915554 69.758432) 2050 | (xy 105.996128 69.715364) 2051 | (xy 106.097538 69.661159) 2052 | (xy 106.09754 69.661157) 2053 | (xy 106.09805 69.660885) 2054 | (xy 106.25801 69.52961) 2055 | (xy 106.389285 69.36965) 2056 | (xy 106.486832 69.187154) 2057 | (xy 106.5469 68.989134) 2058 | (xy 106.567183 68.7832) 2059 | (xy 106.5469 68.577266) 2060 | (xy 106.486832 68.379246) 2061 | (xy 106.389285 68.19675) 2062 | (xy 106.25801 68.03679) 2063 | (xy 106.09805 67.905515) 2064 | (xy 106.09754 67.905243) 2065 | (xy 106.097538 67.905241) 2066 | (xy 105.916068 67.808243) 2067 | (xy 105.915554 67.807968) 2068 | (xy 105.915001 67.8078) 2069 | (xy 105.914998 67.807799) 2070 | (xy 105.816544 67.777934) 2071 | (xy 105.717534 67.7479) 2072 | (xy 105.716963 67.747844) 2073 | (xy 105.716959 67.747843) 2074 | (xy 105.628953 67.739175) 2075 | (xy 105.621056 67.734953) 2076 | (xy 105.6184 67.727531) 2077 | (xy 105.6184 65.919148) 2078 | (xy 106.9861 65.919148) 2079 | (xy 106.997733 65.977631) 2080 | (xy 107.042048 66.043952) 2081 | (xy 107.108369 66.088267) 2082 | (xy 107.109498 66.088492) 2083 | (xy 107.109499 66.088492) 2084 | (xy 107.166283 66.099787) 2085 | (xy 107.166285 66.099787) 2086 | (xy 107.166852 66.0999) 2087 | (xy 108.906348 66.0999) 2088 | (xy 108.906915 66.099787) 2089 | (xy 108.906917 66.099787) 2090 | (xy 108.963701 66.088492) 2091 | (xy 108.963702 66.088492) 2092 | (xy 108.964831 66.088267) 2093 | (xy 109.031152 66.043952) 2094 | (xy 109.075467 65.977631) 2095 | (xy 109.0871 65.919148) 2096 | (xy 109.0871 64.179652) 2097 | (xy 109.075467 64.121169) 2098 | (xy 109.031152 64.054848) 2099 | (xy 108.964831 64.010533) 2100 | (xy 108.963702 64.010308) 2101 | (xy 108.963701 64.010308) 2102 | (xy 108.906917 63.999013) 2103 | (xy 108.906915 63.999013) 2104 | (xy 108.906348 63.9989) 2105 | (xy 107.166852 63.9989) 2106 | (xy 107.166285 63.999013) 2107 | (xy 107.166283 63.999013) 2108 | (xy 107.109499 64.010308) 2109 | (xy 107.109498 64.010308) 2110 | (xy 107.108369 64.010533) 2111 | (xy 107.042048 64.054848) 2112 | (xy 106.997733 64.121169) 2113 | (xy 106.9861 64.179652) 2114 | (xy 106.9861 65.919148) 2115 | (xy 105.6184 65.919148) 2116 | (xy 105.6184 55.38978) 2117 | (xy 105.621827 55.381507) 2118 | (xy 105.6301 55.37808) 2119 | (xy 105.975352 55.37808) 2120 | (xy 105.9754 55.37809) 2121 | (xy 105.9754 55.3781) 2122 | (xy 105.986381 55.3781) 2123 | (xy 106.083734 55.378099) 2124 | (xy 106.297735 55.344205) 2125 | (xy 106.503799 55.27725) 2126 | (xy 106.696851 55.178883) 2127 | (xy 106.697222 55.178613) 2128 | (xy 106.697226 55.178611) 2129 | (xy 106.871764 55.0518) 2130 | (xy 106.871768 55.051796) 2131 | (xy 106.872139 55.051527) 2132 | (xy 107.025345 54.898318) 2133 | (xy 107.134202 54.748485) 2134 | (xy 107.15243 54.723396) 2135 | (xy 107.152432 54.723393) 2136 | (xy 107.152697 54.723028) 2137 | (xy 107.25106 54.529974) 2138 | (xy 107.318011 54.323909) 2139 | (xy 107.351902 54.109907) 2140 | (xy 107.351901 54.061715) 2141 | (xy 107.351929 54.061377) 2142 | (xy 107.351989 54.061201) 2143 | (xy 107.3519 54.001355) 2144 | (xy 107.351899 53.944475) 2145 | (xy 107.351842 53.944299) 2146 | (xy 107.351815 53.94396) 2147 | (xy 107.345526 49.715763) 2148 | (xy 107.345626 49.714218) 2149 | (xy 107.356894 49.62865) 2150 | (xy 107.357685 49.625701) 2151 | (xy 107.357689 49.625693) 2152 | (xy 107.390422 49.546675) 2153 | (xy 107.391949 49.544031) 2154 | (xy 107.444025 49.476168) 2155 | (xy 107.446183 49.47401) 2156 | (xy 107.491234 49.439444) 2157 | (xy 107.514051 49.421938) 2158 | (xy 107.516696 49.420411) 2159 | (xy 107.595727 49.387678) 2160 | (xy 107.598677 49.386888) 2161 | (xy 107.684632 49.375575) 2162 | (xy 107.686158 49.375475) 2163 | (xy 107.741519 49.375477) 2164 | (xy 107.74211 49.375477) 2165 | (xy 107.742114 49.375476) 2166 | (xy 107.742122 49.375475) 2167 | (xy 108.284244 49.375475) 2168 | ) 2169 | ) 2170 | ) 2171 | (zone (net 1) (net_name "+5V") (layer "B.Cu") (tstamp 18186792-8b67-4e57-8779-35e7f417be29) (hatch edge 0.508) 2172 | (connect_pads yes (clearance 0.0254)) 2173 | (min_thickness 0.0254) (filled_areas_thickness no) 2174 | (fill yes (thermal_gap 0.508) (thermal_bridge_width 0.508)) 2175 | (polygon 2176 | (pts 2177 | (xy 105.3316 71.4134) 2178 | (xy 99.02 71.4134) 2179 | (xy 99.02 48.13) 2180 | (xy 105.3316 48.13) 2181 | ) 2182 | ) 2183 | (filled_polygon 2184 | (layer "B.Cu") 2185 | (pts 2186 | (xy 103.310759 49.3706) 2187 | (xy 103.396346 49.381867) 2188 | (xy 103.399292 49.382658) 2189 | (xy 103.438809 49.399026) 2190 | (xy 103.478325 49.415394) 2191 | (xy 103.480971 49.416921) 2192 | (xy 103.548841 49.469) 2193 | (xy 103.551 49.471159) 2194 | (xy 103.603079 49.539029) 2195 | (xy 103.604606 49.541675) 2196 | (xy 103.637342 49.620706) 2197 | (xy 103.638133 49.623656) 2198 | (xy 103.6494 49.70924) 2199 | (xy 103.6495 49.710767) 2200 | (xy 103.6495 49.767098) 2201 | (xy 103.649527 49.767181) 2202 | (xy 103.64954 49.767341) 2203 | (xy 103.65246 53.953175) 2204 | (xy 103.652335 53.954859) 2205 | (xy 103.652066 53.955709) 2206 | (xy 103.652073 53.95663) 2207 | (xy 103.652073 53.956631) 2208 | (xy 103.652501 54.011528) 2209 | (xy 103.652501 54.011609) 2210 | (xy 103.652502 54.012783) 2211 | (xy 103.652498 54.012805) 2212 | (xy 103.652462 54.012805) 2213 | (xy 103.652506 54.018775) 2214 | (xy 103.652521 54.040124) 2215 | (xy 103.6526 54.040597) 2216 | (xy 103.652636 54.041029) 2217 | (xy 103.652677 54.041907) 2218 | (xy 103.653258 54.12056) 2219 | (xy 103.653333 54.121011) 2220 | (xy 103.685607 54.315936) 2221 | (xy 103.688462 54.333182) 2222 | (xy 103.756335 54.537731) 2223 | (xy 103.756539 54.538125) 2224 | (xy 103.756541 54.538131) 2225 | (xy 103.815303 54.651918) 2226 | (xy 103.855223 54.729221) 2227 | (xy 103.982714 54.902983) 2228 | (xy 104.1357 55.05478) 2229 | (xy 104.136077 55.055052) 2230 | (xy 104.31008 55.180644) 2231 | (xy 104.310084 55.180647) 2232 | (xy 104.310452 55.180912) 2233 | (xy 104.310859 55.181118) 2234 | (xy 104.310862 55.18112) 2235 | (xy 104.50229 55.278093) 2236 | (xy 104.502707 55.278304) 2237 | (xy 104.707779 55.344579) 2238 | (xy 104.708233 55.34465) 2239 | (xy 104.708239 55.344652) 2240 | (xy 104.920216 55.378053) 2241 | (xy 104.920221 55.378053) 2242 | (xy 104.920669 55.378124) 2243 | (xy 104.921125 55.378124) 2244 | (xy 105.028427 55.37808) 2245 | (xy 105.3199 55.37808) 2246 | (xy 105.328173 55.381507) 2247 | (xy 105.3316 55.38978) 2248 | (xy 105.3316 63.999463) 2249 | (xy 105.328173 64.007736) 2250 | (xy 105.321047 64.011107) 2251 | (xy 105.291241 64.014043) 2252 | (xy 105.291237 64.014044) 2253 | (xy 105.290666 64.0141) 2254 | (xy 105.191656 64.044134) 2255 | (xy 105.093202 64.073999) 2256 | (xy 105.093199 64.074) 2257 | (xy 105.092646 64.074168) 2258 | (xy 105.092132 64.074443) 2259 | (xy 104.910662 64.171441) 2260 | (xy 104.91066 64.171443) 2261 | (xy 104.91015 64.171715) 2262 | (xy 104.75019 64.30299) 2263 | (xy 104.618915 64.46295) 2264 | (xy 104.521368 64.645446) 2265 | (xy 104.4613 64.843466) 2266 | (xy 104.441017 65.0494) 2267 | (xy 104.4613 65.255334) 2268 | (xy 104.521368 65.453354) 2269 | (xy 104.618915 65.63585) 2270 | (xy 104.75019 65.79581) 2271 | (xy 104.91015 65.927085) 2272 | (xy 104.91066 65.927357) 2273 | (xy 104.910662 65.927359) 2274 | (xy 105.012072 65.981564) 2275 | (xy 105.092646 66.024632) 2276 | (xy 105.093199 66.0248) 2277 | (xy 105.093202 66.024801) 2278 | (xy 105.191656 66.054666) 2279 | (xy 105.290666 66.0847) 2280 | (xy 105.291237 66.084756) 2281 | (xy 105.291241 66.084757) 2282 | (xy 105.321047 66.087693) 2283 | (xy 105.328944 66.091915) 2284 | (xy 105.3316 66.099337) 2285 | (xy 105.3316 67.734741) 2286 | (xy 105.328173 67.743014) 2287 | (xy 105.321047 67.746385) 2288 | (xy 105.306241 67.747843) 2289 | (xy 105.306237 67.747844) 2290 | (xy 105.305666 67.7479) 2291 | (xy 105.206656 67.777934) 2292 | (xy 105.108202 67.807799) 2293 | (xy 105.108199 67.8078) 2294 | (xy 105.107646 67.807968) 2295 | (xy 105.107132 67.808243) 2296 | (xy 104.925662 67.905241) 2297 | (xy 104.92566 67.905243) 2298 | (xy 104.92515 67.905515) 2299 | (xy 104.76519 68.03679) 2300 | (xy 104.633915 68.19675) 2301 | (xy 104.536368 68.379246) 2302 | (xy 104.4763 68.577266) 2303 | (xy 104.456017 68.7832) 2304 | (xy 104.4763 68.989134) 2305 | (xy 104.536368 69.187154) 2306 | (xy 104.633915 69.36965) 2307 | (xy 104.76519 69.52961) 2308 | (xy 104.92515 69.660885) 2309 | (xy 104.92566 69.661157) 2310 | (xy 104.925662 69.661159) 2311 | (xy 105.027072 69.715364) 2312 | (xy 105.107646 69.758432) 2313 | (xy 105.108199 69.7586) 2314 | (xy 105.108202 69.758601) 2315 | (xy 105.206656 69.788466) 2316 | (xy 105.305666 69.8185) 2317 | (xy 105.306237 69.818556) 2318 | (xy 105.306241 69.818557) 2319 | (xy 105.321047 69.820015) 2320 | (xy 105.328944 69.824237) 2321 | (xy 105.3316 69.831659) 2322 | (xy 105.3316 70.74058) 2323 | (xy 105.328173 70.748853) 2324 | (xy 105.3199 70.75228) 2325 | (xy 101.080113 70.75228) 2326 | (xy 101.080111 70.752279) 2327 | (xy 101.079591 70.752279) 2328 | (xy 101.023666 70.75228) 2329 | (xy 101.022356 70.752206) 2330 | (xy 100.878455 70.735995) 2331 | (xy 100.875911 70.735414) 2332 | (xy 100.739849 70.687805) 2333 | (xy 100.737492 70.686671) 2334 | (xy 100.61543 70.609976) 2335 | (xy 100.613382 70.608342) 2336 | (xy 100.511458 70.506418) 2337 | (xy 100.509824 70.50437) 2338 | (xy 100.433129 70.382308) 2339 | (xy 100.431994 70.379949) 2340 | (xy 100.384386 70.243889) 2341 | (xy 100.383805 70.241345) 2342 | (xy 100.367594 70.097442) 2343 | (xy 100.36752 70.096132) 2344 | (xy 100.367625 69.824237) 2345 | (xy 100.369458 65.0494) 2346 | (xy 101.901017 65.0494) 2347 | (xy 101.9213 65.255334) 2348 | (xy 101.981368 65.453354) 2349 | (xy 102.078915 65.63585) 2350 | (xy 102.21019 65.79581) 2351 | (xy 102.37015 65.927085) 2352 | (xy 102.37066 65.927357) 2353 | (xy 102.370662 65.927359) 2354 | (xy 102.472072 65.981564) 2355 | (xy 102.552646 66.024632) 2356 | (xy 102.553199 66.0248) 2357 | (xy 102.553202 66.024801) 2358 | (xy 102.651656 66.054666) 2359 | (xy 102.750666 66.0847) 2360 | (xy 102.751237 66.084756) 2361 | (xy 102.751241 66.084757) 2362 | (xy 102.956031 66.104927) 2363 | (xy 102.9566 66.104983) 2364 | (xy 102.957169 66.104927) 2365 | (xy 103.161959 66.084757) 2366 | (xy 103.161963 66.084756) 2367 | (xy 103.162534 66.0847) 2368 | (xy 103.261544 66.054666) 2369 | (xy 103.359998 66.024801) 2370 | (xy 103.360001 66.0248) 2371 | (xy 103.360554 66.024632) 2372 | (xy 103.441128 65.981564) 2373 | (xy 103.542538 65.927359) 2374 | (xy 103.54254 65.927357) 2375 | (xy 103.54305 65.927085) 2376 | (xy 103.70301 65.79581) 2377 | (xy 103.834285 65.63585) 2378 | (xy 103.931832 65.453354) 2379 | (xy 103.9919 65.255334) 2380 | (xy 104.012183 65.0494) 2381 | (xy 103.9919 64.843466) 2382 | (xy 103.931832 64.645446) 2383 | (xy 103.834285 64.46295) 2384 | (xy 103.70301 64.30299) 2385 | (xy 103.54305 64.171715) 2386 | (xy 103.54254 64.171443) 2387 | (xy 103.542538 64.171441) 2388 | (xy 103.361068 64.074443) 2389 | (xy 103.360554 64.074168) 2390 | (xy 103.360001 64.074) 2391 | (xy 103.359998 64.073999) 2392 | (xy 103.261544 64.044134) 2393 | (xy 103.162534 64.0141) 2394 | (xy 103.161963 64.014044) 2395 | (xy 103.161959 64.014043) 2396 | (xy 102.957169 63.993873) 2397 | (xy 102.9566 63.993817) 2398 | (xy 102.956031 63.993873) 2399 | (xy 102.751241 64.014043) 2400 | (xy 102.751237 64.014044) 2401 | (xy 102.750666 64.0141) 2402 | (xy 102.651656 64.044134) 2403 | (xy 102.553202 64.073999) 2404 | (xy 102.553199 64.074) 2405 | (xy 102.552646 64.074168) 2406 | (xy 102.552132 64.074443) 2407 | (xy 102.370662 64.171441) 2408 | (xy 102.37066 64.171443) 2409 | (xy 102.37015 64.171715) 2410 | (xy 102.21019 64.30299) 2411 | (xy 102.078915 64.46295) 2412 | (xy 101.981368 64.645446) 2413 | (xy 101.9213 64.843466) 2414 | (xy 101.901017 65.0494) 2415 | (xy 100.369458 65.0494) 2416 | (xy 100.372898 56.085655) 2417 | (xy 100.372905 56.08556) 2418 | (xy 100.372921 56.085511) 2419 | (xy 100.37292 56.029066) 2420 | (xy 100.372994 56.027756) 2421 | (xy 100.389205 55.883855) 2422 | (xy 100.389786 55.881311) 2423 | (xy 100.437395 55.745249) 2424 | (xy 100.43853 55.74289) 2425 | (xy 100.461652 55.706092) 2426 | (xy 100.515224 55.62083) 2427 | (xy 100.516858 55.618782) 2428 | (xy 100.618782 55.516858) 2429 | (xy 100.62083 55.515224) 2430 | (xy 100.645015 55.500028) 2431 | (xy 100.742892 55.438529) 2432 | (xy 100.745249 55.437395) 2433 | (xy 100.881311 55.389786) 2434 | (xy 100.883855 55.389205) 2435 | (xy 101.025676 55.373229) 2436 | (xy 101.026605 55.373161) 2437 | (xy 101.033972 55.372926) 2438 | (xy 101.034345 55.37292) 2439 | (xy 101.042734 55.37292) 2440 | (xy 101.084588 55.372921) 2441 | (xy 101.085511 55.372921) 2442 | (xy 101.089418 55.371652) 2443 | (xy 101.092653 55.371086) 2444 | (xy 101.145171 55.369395) 2445 | (xy 101.145178 55.369394) 2446 | (xy 101.145621 55.36938) 2447 | (xy 101.35352 55.33031) 2448 | (xy 101.552973 55.259834) 2449 | (xy 101.739265 55.159616) 2450 | (xy 101.877545 55.055052) 2451 | (xy 101.907631 55.032302) 2452 | (xy 101.907635 55.032299) 2453 | (xy 101.907994 55.032027) 2454 | (xy 102.05517 54.880082) 2455 | (xy 102.177316 54.707371) 2456 | (xy 102.202337 54.65708) 2457 | (xy 102.27134 54.518388) 2458 | (xy 102.271342 54.518383) 2459 | (xy 102.271543 54.517979) 2460 | (xy 102.330148 54.333615) 2461 | (xy 102.335489 54.316813) 2462 | (xy 102.33549 54.316809) 2463 | (xy 102.335626 54.316381) 2464 | (xy 102.368048 54.107342) 2465 | (xy 102.36808 54.001573) 2466 | (xy 102.36808 54.001515) 2467 | (xy 102.370463 49.767098) 2468 | (xy 102.370498 49.705806) 2469 | (xy 102.370619 49.704133) 2470 | (xy 102.38286 49.619784) 2471 | (xy 102.383679 49.61687) 2472 | (xy 102.41697 49.538897) 2473 | (xy 102.418508 49.536291) 2474 | (xy 102.458262 49.485375) 2475 | (xy 102.470685 49.469464) 2476 | (xy 102.472839 49.46734) 2477 | (xy 102.540416 49.416129) 2478 | (xy 102.543045 49.414629) 2479 | (xy 102.621486 49.382468) 2480 | (xy 102.624411 49.381691) 2481 | (xy 102.709463 49.370598) 2482 | (xy 102.710976 49.3705) 2483 | (xy 103.309233 49.3705) 2484 | ) 2485 | ) 2486 | ) 2487 | ) 2488 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.kicad_prl: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "active_layer": 0, 4 | "active_layer_preset": "", 5 | "auto_track_width": true, 6 | "hidden_netclasses": [], 7 | "hidden_nets": [], 8 | "high_contrast_mode": 0, 9 | "net_color_mode": 1, 10 | "opacity": { 11 | "images": 0.6, 12 | "pads": 1.0, 13 | "tracks": 1.0, 14 | "vias": 1.0, 15 | "zones": 0.6 16 | }, 17 | "ratsnest_display_mode": 0, 18 | "selection_filter": { 19 | "dimensions": true, 20 | "footprints": true, 21 | "graphics": true, 22 | "keepouts": true, 23 | "lockedItems": true, 24 | "otherItems": true, 25 | "pads": true, 26 | "text": true, 27 | "tracks": true, 28 | "vias": true, 29 | "zones": true 30 | }, 31 | "visible_items": [ 32 | 0, 33 | 1, 34 | 2, 35 | 3, 36 | 4, 37 | 5, 38 | 6, 39 | 8, 40 | 9, 41 | 10, 42 | 11, 43 | 12, 44 | 13, 45 | 14, 46 | 15, 47 | 16, 48 | 17, 49 | 18, 50 | 19, 51 | 20, 52 | 21, 53 | 22, 54 | 23, 55 | 24, 56 | 25, 57 | 26, 58 | 27, 59 | 28, 60 | 29, 61 | 30, 62 | 32, 63 | 33, 64 | 34, 65 | 35, 66 | 36 67 | ], 68 | "visible_layers": "000fcff_00000001", 69 | "zone_display_mode": 0 70 | }, 71 | "meta": { 72 | "filename": "ir-smart-led-controller.kicad_prl", 73 | "version": 3 74 | }, 75 | "project": { 76 | "files": [] 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.kicad_pro: -------------------------------------------------------------------------------- 1 | { 2 | "board": { 3 | "3dviewports": [], 4 | "design_settings": { 5 | "defaults": { 6 | "board_outline_line_width": 0.09999999999999999, 7 | "copper_line_width": 0.19999999999999998, 8 | "copper_text_italic": false, 9 | "copper_text_size_h": 1.5, 10 | "copper_text_size_v": 1.5, 11 | "copper_text_thickness": 0.3, 12 | "copper_text_upright": false, 13 | "courtyard_line_width": 0.049999999999999996, 14 | "dimension_precision": 4, 15 | "dimension_units": 3, 16 | "dimensions": { 17 | "arrow_length": 1270000, 18 | "extension_offset": 500000, 19 | "keep_text_aligned": true, 20 | "suppress_zeroes": false, 21 | "text_position": 0, 22 | "units_format": 1 23 | }, 24 | "fab_line_width": 0.09999999999999999, 25 | "fab_text_italic": false, 26 | "fab_text_size_h": 1.0, 27 | "fab_text_size_v": 1.0, 28 | "fab_text_thickness": 0.15, 29 | "fab_text_upright": false, 30 | "other_line_width": 0.15, 31 | "other_text_italic": false, 32 | "other_text_size_h": 1.0, 33 | "other_text_size_v": 1.0, 34 | "other_text_thickness": 0.15, 35 | "other_text_upright": false, 36 | "pads": { 37 | "drill": 0.762, 38 | "height": 1.524, 39 | "width": 1.524 40 | }, 41 | "silk_line_width": 0.15, 42 | "silk_text_italic": false, 43 | "silk_text_size_h": 0.7999999999999999, 44 | "silk_text_size_v": 0.7999999999999999, 45 | "silk_text_thickness": 0.09999999999999999, 46 | "silk_text_upright": false, 47 | "zones": { 48 | "45_degree_only": false, 49 | "min_clearance": 0.0254 50 | } 51 | }, 52 | "diff_pair_dimensions": [ 53 | { 54 | "gap": 0.0, 55 | "via_gap": 0.0, 56 | "width": 0.0 57 | } 58 | ], 59 | "drc_exclusions": [], 60 | "meta": { 61 | "version": 2 62 | }, 63 | "rule_severities": { 64 | "annular_width": "error", 65 | "clearance": "error", 66 | "connection_width": "ignore", 67 | "copper_edge_clearance": "error", 68 | "copper_sliver": "warning", 69 | "courtyards_overlap": "error", 70 | "diff_pair_gap_out_of_range": "error", 71 | "diff_pair_uncoupled_length_too_long": "error", 72 | "drill_out_of_range": "error", 73 | "duplicate_footprints": "warning", 74 | "extra_footprint": "warning", 75 | "footprint": "error", 76 | "footprint_type_mismatch": "warning", 77 | "hole_clearance": "error", 78 | "hole_near_hole": "error", 79 | "invalid_outline": "error", 80 | "isolated_copper": "warning", 81 | "item_on_disabled_layer": "error", 82 | "items_not_allowed": "error", 83 | "length_out_of_range": "error", 84 | "lib_footprint_issues": "warning", 85 | "lib_footprint_mismatch": "warning", 86 | "malformed_courtyard": "error", 87 | "microvia_drill_out_of_range": "error", 88 | "missing_courtyard": "ignore", 89 | "missing_footprint": "warning", 90 | "net_conflict": "warning", 91 | "npth_inside_courtyard": "ignore", 92 | "padstack": "error", 93 | "pth_inside_courtyard": "ignore", 94 | "shorting_items": "error", 95 | "silk_edge_clearance": "warning", 96 | "silk_over_copper": "error", 97 | "silk_overlap": "error", 98 | "skew_out_of_range": "error", 99 | "solder_mask_bridge": "error", 100 | "starved_thermal": "error", 101 | "text_height": "warning", 102 | "text_thickness": "warning", 103 | "through_hole_pad_without_hole": "error", 104 | "too_many_vias": "error", 105 | "track_dangling": "warning", 106 | "track_width": "error", 107 | "tracks_crossing": "error", 108 | "unconnected_items": "error", 109 | "unresolved_variable": "error", 110 | "via_dangling": "warning", 111 | "zones_intersect": "error" 112 | }, 113 | "rules": { 114 | "allow_blind_buried_vias": false, 115 | "allow_microvias": false, 116 | "max_error": 0.005, 117 | "min_clearance": 0.127, 118 | "min_connection": 0.0, 119 | "min_copper_edge_clearance": 0.36, 120 | "min_hole_clearance": 0.0, 121 | "min_hole_to_hole": 0.25, 122 | "min_microvia_diameter": 0.19999999999999998, 123 | "min_microvia_drill": 0.09999999999999999, 124 | "min_resolved_spokes": 2, 125 | "min_silk_clearance": 0.0, 126 | "min_text_height": 0.7999999999999999, 127 | "min_text_thickness": 0.12, 128 | "min_through_hole_diameter": 0.254, 129 | "min_track_width": 0.127, 130 | "min_via_annular_width": 0.1016, 131 | "min_via_diameter": 0.32, 132 | "solder_mask_clearance": 0.0, 133 | "solder_mask_min_width": 0.0, 134 | "solder_mask_to_copper_clearance": 0.0, 135 | "use_height_for_length_calcs": true 136 | }, 137 | "teardrop_options": [ 138 | { 139 | "td_allow_use_two_tracks": true, 140 | "td_curve_segcount": 5, 141 | "td_on_pad_in_zone": false, 142 | "td_onpadsmd": true, 143 | "td_onroundshapesonly": false, 144 | "td_ontrackend": false, 145 | "td_onviapad": true 146 | } 147 | ], 148 | "teardrop_parameters": [ 149 | { 150 | "td_curve_segcount": 0, 151 | "td_height_ratio": 1.0, 152 | "td_length_ratio": 0.5, 153 | "td_maxheight": 2.0, 154 | "td_maxlen": 1.0, 155 | "td_target_name": "td_round_shape", 156 | "td_width_to_size_filter_ratio": 0.9 157 | }, 158 | { 159 | "td_curve_segcount": 0, 160 | "td_height_ratio": 1.0, 161 | "td_length_ratio": 0.5, 162 | "td_maxheight": 2.0, 163 | "td_maxlen": 1.0, 164 | "td_target_name": "td_rect_shape", 165 | "td_width_to_size_filter_ratio": 0.9 166 | }, 167 | { 168 | "td_curve_segcount": 0, 169 | "td_height_ratio": 1.0, 170 | "td_length_ratio": 0.5, 171 | "td_maxheight": 2.0, 172 | "td_maxlen": 1.0, 173 | "td_target_name": "td_track_end", 174 | "td_width_to_size_filter_ratio": 0.9 175 | } 176 | ], 177 | "track_widths": [ 178 | 0.0 179 | ], 180 | "via_dimensions": [ 181 | { 182 | "diameter": 0.0, 183 | "drill": 0.0 184 | } 185 | ], 186 | "zones_allow_external_fillets": false, 187 | "zones_use_no_outline": true 188 | }, 189 | "layer_presets": [], 190 | "viewports": [] 191 | }, 192 | "boards": [], 193 | "cvpcb": { 194 | "equivalence_files": [] 195 | }, 196 | "erc": { 197 | "erc_exclusions": [], 198 | "meta": { 199 | "version": 0 200 | }, 201 | "pin_map": [ 202 | [ 203 | 0, 204 | 0, 205 | 0, 206 | 0, 207 | 0, 208 | 0, 209 | 1, 210 | 0, 211 | 0, 212 | 0, 213 | 0, 214 | 2 215 | ], 216 | [ 217 | 0, 218 | 2, 219 | 0, 220 | 1, 221 | 0, 222 | 0, 223 | 1, 224 | 0, 225 | 2, 226 | 2, 227 | 2, 228 | 2 229 | ], 230 | [ 231 | 0, 232 | 0, 233 | 0, 234 | 0, 235 | 0, 236 | 0, 237 | 1, 238 | 0, 239 | 1, 240 | 0, 241 | 1, 242 | 2 243 | ], 244 | [ 245 | 0, 246 | 1, 247 | 0, 248 | 0, 249 | 0, 250 | 0, 251 | 1, 252 | 1, 253 | 2, 254 | 1, 255 | 1, 256 | 2 257 | ], 258 | [ 259 | 0, 260 | 0, 261 | 0, 262 | 0, 263 | 0, 264 | 0, 265 | 1, 266 | 0, 267 | 0, 268 | 0, 269 | 0, 270 | 2 271 | ], 272 | [ 273 | 0, 274 | 0, 275 | 0, 276 | 0, 277 | 0, 278 | 0, 279 | 0, 280 | 0, 281 | 0, 282 | 0, 283 | 0, 284 | 2 285 | ], 286 | [ 287 | 1, 288 | 1, 289 | 1, 290 | 1, 291 | 1, 292 | 0, 293 | 1, 294 | 1, 295 | 1, 296 | 1, 297 | 1, 298 | 2 299 | ], 300 | [ 301 | 0, 302 | 0, 303 | 0, 304 | 1, 305 | 0, 306 | 0, 307 | 1, 308 | 0, 309 | 0, 310 | 0, 311 | 0, 312 | 2 313 | ], 314 | [ 315 | 0, 316 | 2, 317 | 1, 318 | 2, 319 | 0, 320 | 0, 321 | 1, 322 | 0, 323 | 2, 324 | 2, 325 | 2, 326 | 2 327 | ], 328 | [ 329 | 0, 330 | 2, 331 | 0, 332 | 1, 333 | 0, 334 | 0, 335 | 1, 336 | 0, 337 | 2, 338 | 0, 339 | 0, 340 | 2 341 | ], 342 | [ 343 | 0, 344 | 2, 345 | 1, 346 | 1, 347 | 0, 348 | 0, 349 | 1, 350 | 0, 351 | 2, 352 | 0, 353 | 0, 354 | 2 355 | ], 356 | [ 357 | 2, 358 | 2, 359 | 2, 360 | 2, 361 | 2, 362 | 2, 363 | 2, 364 | 2, 365 | 2, 366 | 2, 367 | 2, 368 | 2 369 | ] 370 | ], 371 | "rule_severities": { 372 | "bus_definition_conflict": "error", 373 | "bus_label_syntax": "error", 374 | "bus_to_bus_conflict": "error", 375 | "bus_to_net_conflict": "error", 376 | "different_unit_footprint": "error", 377 | "different_unit_net": "error", 378 | "duplicate_reference": "error", 379 | "duplicate_sheet_names": "error", 380 | "extra_units": "error", 381 | "global_label_dangling": "warning", 382 | "hier_label_mismatch": "error", 383 | "label_dangling": "error", 384 | "lib_symbol_issues": "warning", 385 | "multiple_net_names": "warning", 386 | "net_not_bus_member": "warning", 387 | "no_connect_connected": "warning", 388 | "no_connect_dangling": "warning", 389 | "pin_not_connected": "error", 390 | "pin_not_driven": "error", 391 | "pin_to_pin": "error", 392 | "power_pin_not_driven": "error", 393 | "similar_labels": "warning", 394 | "unannotated": "error", 395 | "unit_value_mismatch": "error", 396 | "unresolved_variable": "error", 397 | "wire_dangling": "error" 398 | } 399 | }, 400 | "libraries": { 401 | "pinned_footprint_libs": [], 402 | "pinned_symbol_libs": [] 403 | }, 404 | "meta": { 405 | "filename": "ir-smart-led-controller.kicad_pro", 406 | "version": 1 407 | }, 408 | "net_settings": { 409 | "classes": [ 410 | { 411 | "bus_width": 6, 412 | "clearance": 0.2, 413 | "diff_pair_gap": 0.25, 414 | "diff_pair_via_gap": 0.25, 415 | "diff_pair_width": 0.2, 416 | "line_style": 0, 417 | "microvia_diameter": 0.3, 418 | "microvia_drill": 0.1, 419 | "name": "Default", 420 | "pcb_color": "rgba(0, 0, 0, 0.000)", 421 | "schematic_color": "rgba(0, 0, 0, 0.000)", 422 | "track_width": 0.25, 423 | "via_diameter": 0.8, 424 | "via_drill": 0.4, 425 | "wire_width": 6 426 | } 427 | ], 428 | "meta": { 429 | "version": 3 430 | }, 431 | "net_colors": null, 432 | "netclass_assignments": null, 433 | "netclass_patterns": [] 434 | }, 435 | "pcbnew": { 436 | "last_paths": { 437 | "gencad": "", 438 | "idf": "", 439 | "netlist": "", 440 | "specctra_dsn": "", 441 | "step": "", 442 | "vrml": "" 443 | }, 444 | "page_layout_descr_file": "" 445 | }, 446 | "schematic": { 447 | "drawing": { 448 | "default_bus_thickness": 12.0, 449 | "default_junction_size": 36.0, 450 | "default_line_thickness": 6.0, 451 | "default_text_size": 50.0, 452 | "default_wire_thickness": 6.0, 453 | "field_names": [], 454 | "intersheets_ref_own_page": false, 455 | "intersheets_ref_prefix": "", 456 | "intersheets_ref_short": false, 457 | "intersheets_ref_show": false, 458 | "intersheets_ref_suffix": "", 459 | "junction_size_choice": 3, 460 | "pin_symbol_size": 25.0, 461 | "text_offset_ratio": 0.3 462 | }, 463 | "legacy_lib_dir": "", 464 | "legacy_lib_list": [], 465 | "meta": { 466 | "version": 0 467 | }, 468 | "net_format_name": "", 469 | "ngspice": { 470 | "meta": { 471 | "version": 0 472 | }, 473 | "model_mode": 0 474 | }, 475 | "page_layout_descr_file": "", 476 | "plot_directory": "./", 477 | "spice_adjust_passive_values": false, 478 | "spice_external_command": "spice \"%I\"", 479 | "subpart_first_id": 65, 480 | "subpart_id_separator": 0 481 | }, 482 | "sheets": [ 483 | [ 484 | "7f979f90-d424-4c7c-b3a7-cb0d732d052f", 485 | "" 486 | ] 487 | ], 488 | "text_variables": {} 489 | } 490 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.kicad_sch: -------------------------------------------------------------------------------- 1 | (kicad_sch (version 20220929) (generator eeschema) 2 | 3 | (uuid 7f979f90-d424-4c7c-b3a7-cb0d732d052f) 4 | 5 | (paper "A4") 6 | 7 | (title_block 8 | (title "Smart Led IR Controller") 9 | ) 10 | 11 | (lib_symbols 12 | (symbol "Connector_Generic:Conn_01x03" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes) 13 | (property "Reference" "J" (at 0 5.08 0) 14 | (effects (font (size 1.27 1.27))) 15 | ) 16 | (property "Value" "Conn_01x03" (at 0 -5.08 0) 17 | (effects (font (size 1.27 1.27))) 18 | ) 19 | (property "Footprint" "" (at 0 0 0) 20 | (effects (font (size 1.27 1.27)) hide) 21 | ) 22 | (property "Datasheet" "~" (at 0 0 0) 23 | (effects (font (size 1.27 1.27)) hide) 24 | ) 25 | (property "ki_keywords" "connector" (at 0 0 0) 26 | (effects (font (size 1.27 1.27)) hide) 27 | ) 28 | (property "ki_description" "Generic connector, single row, 01x03, script generated (kicad-library-utils/schlib/autogen/connector/)" (at 0 0 0) 29 | (effects (font (size 1.27 1.27)) hide) 30 | ) 31 | (property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0) 32 | (effects (font (size 1.27 1.27)) hide) 33 | ) 34 | (symbol "Conn_01x03_1_1" 35 | (rectangle (start -1.27 -2.413) (end 0 -2.667) 36 | (stroke (width 0.1524) (type default)) 37 | (fill (type none)) 38 | ) 39 | (rectangle (start -1.27 0.127) (end 0 -0.127) 40 | (stroke (width 0.1524) (type default)) 41 | (fill (type none)) 42 | ) 43 | (rectangle (start -1.27 2.667) (end 0 2.413) 44 | (stroke (width 0.1524) (type default)) 45 | (fill (type none)) 46 | ) 47 | (rectangle (start -1.27 3.81) (end 1.27 -3.81) 48 | (stroke (width 0.254) (type default)) 49 | (fill (type background)) 50 | ) 51 | (pin passive line (at -5.08 2.54 0) (length 3.81) 52 | (name "Pin_1" (effects (font (size 1.27 1.27)))) 53 | (number "1" (effects (font (size 1.27 1.27)))) 54 | ) 55 | (pin passive line (at -5.08 0 0) (length 3.81) 56 | (name "Pin_2" (effects (font (size 1.27 1.27)))) 57 | (number "2" (effects (font (size 1.27 1.27)))) 58 | ) 59 | (pin passive line (at -5.08 -2.54 0) (length 3.81) 60 | (name "Pin_3" (effects (font (size 1.27 1.27)))) 61 | (number "3" (effects (font (size 1.27 1.27)))) 62 | ) 63 | ) 64 | ) 65 | (symbol "Device:C" (pin_numbers hide) (pin_names (offset 0.254)) (in_bom yes) (on_board yes) 66 | (property "Reference" "C" (at 0.635 2.54 0) 67 | (effects (font (size 1.27 1.27)) (justify left)) 68 | ) 69 | (property "Value" "C" (at 0.635 -2.54 0) 70 | (effects (font (size 1.27 1.27)) (justify left)) 71 | ) 72 | (property "Footprint" "" (at 0.9652 -3.81 0) 73 | (effects (font (size 1.27 1.27)) hide) 74 | ) 75 | (property "Datasheet" "~" (at 0 0 0) 76 | (effects (font (size 1.27 1.27)) hide) 77 | ) 78 | (property "ki_keywords" "cap capacitor" (at 0 0 0) 79 | (effects (font (size 1.27 1.27)) hide) 80 | ) 81 | (property "ki_description" "Unpolarized capacitor" (at 0 0 0) 82 | (effects (font (size 1.27 1.27)) hide) 83 | ) 84 | (property "ki_fp_filters" "C_*" (at 0 0 0) 85 | (effects (font (size 1.27 1.27)) hide) 86 | ) 87 | (symbol "C_0_1" 88 | (polyline 89 | (pts 90 | (xy -2.032 -0.762) 91 | (xy 2.032 -0.762) 92 | ) 93 | (stroke (width 0.508) (type default)) 94 | (fill (type none)) 95 | ) 96 | (polyline 97 | (pts 98 | (xy -2.032 0.762) 99 | (xy 2.032 0.762) 100 | ) 101 | (stroke (width 0.508) (type default)) 102 | (fill (type none)) 103 | ) 104 | ) 105 | (symbol "C_1_1" 106 | (pin passive line (at 0 3.81 270) (length 2.794) 107 | (name "~" (effects (font (size 1.27 1.27)))) 108 | (number "1" (effects (font (size 1.27 1.27)))) 109 | ) 110 | (pin passive line (at 0 -3.81 90) (length 2.794) 111 | (name "~" (effects (font (size 1.27 1.27)))) 112 | (number "2" (effects (font (size 1.27 1.27)))) 113 | ) 114 | ) 115 | ) 116 | (symbol "Sensor_Proximity:TSSP58038" (pin_names (offset 1.016)) (in_bom yes) (on_board yes) 117 | (property "Reference" "U" (at -10.16 7.62 0) 118 | (effects (font (size 1.27 1.27)) (justify left)) 119 | ) 120 | (property "Value" "TSSP58038" (at -10.16 -7.62 0) 121 | (effects (font (size 1.27 1.27)) (justify left)) 122 | ) 123 | (property "Footprint" "OptoDevice:Vishay_MINICAST-3Pin" (at -1.27 -9.525 0) 124 | (effects (font (size 1.27 1.27)) hide) 125 | ) 126 | (property "Datasheet" "http://www.vishay.com/docs/82476/tssp58p38.pdf" (at 16.51 7.62 0) 127 | (effects (font (size 1.27 1.27)) hide) 128 | ) 129 | (property "ki_keywords" "opto IR receiver proximity sensor" (at 0 0 0) 130 | (effects (font (size 1.27 1.27)) hide) 131 | ) 132 | (property "ki_description" "IR Detector for Mid Range Proximity Sensor" (at 0 0 0) 133 | (effects (font (size 1.27 1.27)) hide) 134 | ) 135 | (property "ki_fp_filters" "Vishay*MINICAST*" (at 0 0 0) 136 | (effects (font (size 1.27 1.27)) hide) 137 | ) 138 | (symbol "TSSP58038_0_0" 139 | (arc (start -10.287 -1.778) (mid -7.1775 -0.1703) (end -10.287 1.397) 140 | (stroke (width 0.254) (type default)) 141 | (fill (type background)) 142 | ) 143 | (polyline 144 | (pts 145 | (xy 1.905 -5.08) 146 | (xy 0.127 -5.08) 147 | ) 148 | (stroke (width 0) (type default)) 149 | (fill (type none)) 150 | ) 151 | (polyline 152 | (pts 153 | (xy 1.905 5.08) 154 | (xy 0.127 5.08) 155 | ) 156 | (stroke (width 0) (type default)) 157 | (fill (type none)) 158 | ) 159 | (text "DEMOD" (at -3.175 0.254 900) 160 | (effects (font (size 1.524 1.524))) 161 | ) 162 | ) 163 | (symbol "TSSP58038_0_1" 164 | (rectangle (start -6.096 5.588) (end 0.127 -5.588) 165 | (stroke (width 0) (type default)) 166 | (fill (type none)) 167 | ) 168 | (polyline 169 | (pts 170 | (xy -8.763 0.381) 171 | (xy -9.652 1.27) 172 | ) 173 | (stroke (width 0) (type default)) 174 | (fill (type none)) 175 | ) 176 | (polyline 177 | (pts 178 | (xy -8.763 0.381) 179 | (xy -9.271 0.381) 180 | ) 181 | (stroke (width 0) (type default)) 182 | (fill (type none)) 183 | ) 184 | (polyline 185 | (pts 186 | (xy -8.763 0.381) 187 | (xy -8.763 0.889) 188 | ) 189 | (stroke (width 0) (type default)) 190 | (fill (type none)) 191 | ) 192 | (polyline 193 | (pts 194 | (xy -8.636 -0.635) 195 | (xy -9.525 0.254) 196 | ) 197 | (stroke (width 0) (type default)) 198 | (fill (type none)) 199 | ) 200 | (polyline 201 | (pts 202 | (xy -8.636 -0.635) 203 | (xy -9.144 -0.635) 204 | ) 205 | (stroke (width 0) (type default)) 206 | (fill (type none)) 207 | ) 208 | (polyline 209 | (pts 210 | (xy -8.636 -0.635) 211 | (xy -8.636 -0.127) 212 | ) 213 | (stroke (width 0) (type default)) 214 | (fill (type none)) 215 | ) 216 | (polyline 217 | (pts 218 | (xy -8.382 -1.016) 219 | (xy -6.731 -1.016) 220 | ) 221 | (stroke (width 0) (type default)) 222 | (fill (type none)) 223 | ) 224 | (polyline 225 | (pts 226 | (xy 1.27 -2.921) 227 | (xy 0.127 -2.921) 228 | ) 229 | (stroke (width 0) (type default)) 230 | (fill (type none)) 231 | ) 232 | (polyline 233 | (pts 234 | (xy 1.27 -1.905) 235 | (xy 1.27 -3.81) 236 | ) 237 | (stroke (width 0) (type default)) 238 | (fill (type none)) 239 | ) 240 | (polyline 241 | (pts 242 | (xy 1.397 -3.556) 243 | (xy 1.524 -3.556) 244 | ) 245 | (stroke (width 0) (type default)) 246 | (fill (type none)) 247 | ) 248 | (polyline 249 | (pts 250 | (xy 1.651 -3.556) 251 | (xy 1.524 -3.556) 252 | ) 253 | (stroke (width 0) (type default)) 254 | (fill (type none)) 255 | ) 256 | (polyline 257 | (pts 258 | (xy 1.651 -3.556) 259 | (xy 1.651 -3.302) 260 | ) 261 | (stroke (width 0) (type default)) 262 | (fill (type none)) 263 | ) 264 | (polyline 265 | (pts 266 | (xy 1.905 0) 267 | (xy 1.905 1.27) 268 | ) 269 | (stroke (width 0) (type default)) 270 | (fill (type none)) 271 | ) 272 | (polyline 273 | (pts 274 | (xy 1.905 4.445) 275 | (xy 1.905 5.08) 276 | (xy 2.54 5.08) 277 | ) 278 | (stroke (width 0) (type default)) 279 | (fill (type none)) 280 | ) 281 | (polyline 282 | (pts 283 | (xy -8.382 0.635) 284 | (xy -6.731 0.635) 285 | (xy -7.62 -1.016) 286 | (xy -8.382 0.635) 287 | ) 288 | (stroke (width 0) (type default)) 289 | (fill (type outline)) 290 | ) 291 | (polyline 292 | (pts 293 | (xy -6.096 1.397) 294 | (xy -7.62 1.397) 295 | (xy -7.62 -1.778) 296 | (xy -6.096 -1.778) 297 | ) 298 | (stroke (width 0) (type default)) 299 | (fill (type none)) 300 | ) 301 | (polyline 302 | (pts 303 | (xy 1.27 -3.175) 304 | (xy 1.905 -3.81) 305 | (xy 1.905 -5.08) 306 | (xy 2.54 -5.08) 307 | ) 308 | (stroke (width 0) (type default)) 309 | (fill (type none)) 310 | ) 311 | (polyline 312 | (pts 313 | (xy 1.27 -2.54) 314 | (xy 1.905 -1.905) 315 | (xy 1.905 0) 316 | (xy 2.54 0) 317 | ) 318 | (stroke (width 0) (type default)) 319 | (fill (type none)) 320 | ) 321 | (rectangle (start 2.54 1.27) (end 1.27 4.445) 322 | (stroke (width 0) (type default)) 323 | (fill (type none)) 324 | ) 325 | (rectangle (start 7.62 6.35) (end -10.16 -6.35) 326 | (stroke (width 0.254) (type default)) 327 | (fill (type background)) 328 | ) 329 | ) 330 | (symbol "TSSP58038_1_1" 331 | (pin output line (at 10.16 0 180) (length 2.54) 332 | (name "OUT" (effects (font (size 1.27 1.27)))) 333 | (number "1" (effects (font (size 1.27 1.27)))) 334 | ) 335 | (pin power_in line (at 10.16 -5.08 180) (length 2.54) 336 | (name "GND" (effects (font (size 1.27 1.27)))) 337 | (number "2" (effects (font (size 1.27 1.27)))) 338 | ) 339 | (pin power_in line (at 10.16 5.08 180) (length 2.54) 340 | (name "Vs" (effects (font (size 1.27 1.27)))) 341 | (number "3" (effects (font (size 1.27 1.27)))) 342 | ) 343 | ) 344 | ) 345 | (symbol "ir-smart-led-controller:LDK220" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) 346 | (property "Reference" "U" (at -3.81 5.715 0) 347 | (effects (font (size 1.27 1.27))) 348 | ) 349 | (property "Value" "LDK220" (at 0 5.715 0) 350 | (effects (font (size 1.27 1.27)) (justify left)) 351 | ) 352 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 0 8.255 0) 353 | (effects (font (size 1.27 1.27) italic) hide) 354 | ) 355 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/ldk220.pdf" (at 0 -8.89 0) 356 | (effects (font (size 1.27 1.27)) hide) 357 | ) 358 | (property "ki_keywords" "200mA LDO Regulator Fixed Positive" (at 0 0 0) 359 | (effects (font (size 1.27 1.27)) hide) 360 | ) 361 | (property "ki_description" "200 mA low quiescent current and low noise LDO, SOT-23-5" (at 0 0 0) 362 | (effects (font (size 1.27 1.27)) hide) 363 | ) 364 | (property "ki_fp_filters" "SOT?23*" (at 0 0 0) 365 | (effects (font (size 1.27 1.27)) hide) 366 | ) 367 | (symbol "LDK220_0_1" 368 | (rectangle (start -5.08 4.445) (end 5.08 -5.08) 369 | (stroke (width 0.254) (type default)) 370 | (fill (type background)) 371 | ) 372 | ) 373 | (symbol "LDK220_1_1" 374 | (pin power_in line (at -7.62 1.27 0) (length 2.54) 375 | (name "IN" (effects (font (size 1.27 1.27)))) 376 | (number "1" (effects (font (size 1.27 1.27)))) 377 | ) 378 | (pin power_in line (at 0 -7.62 90) (length 2.54) 379 | (name "GND" (effects (font (size 1.27 1.27)))) 380 | (number "2" (effects (font (size 1.27 1.27)))) 381 | ) 382 | (pin input line (at -7.62 -1.27 0) (length 2.54) 383 | (name "EN" (effects (font (size 1.27 1.27)))) 384 | (number "3" (effects (font (size 1.27 1.27)))) 385 | ) 386 | (pin no_connect line (at 5.08 -1.27 0) (length 2.54) hide 387 | (name "NC" (effects (font (size 1.27 1.27)))) 388 | (number "4" (effects (font (size 1.27 1.27)))) 389 | ) 390 | (pin power_out line (at 7.62 1.27 180) (length 2.54) 391 | (name "OUT" (effects (font (size 1.27 1.27)))) 392 | (number "5" (effects (font (size 1.27 1.27)))) 393 | ) 394 | ) 395 | ) 396 | (symbol "ir-smart-led-controller:STM32G030J6Mx" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) 397 | (property "Reference" "U" (at -6.35 6.35 0) 398 | (effects (font (size 1.27 1.27))) 399 | ) 400 | (property "Value" "STM32G030J6Mx" (at 2.54 7.62 0) 401 | (effects (font (size 1.27 1.27)) (justify left)) 402 | ) 403 | (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (at 0 12.7 0) 404 | (effects (font (size 1.27 1.27)) hide) 405 | ) 406 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32g030j6.pdf" (at 0 -17.78 0) 407 | (effects (font (size 1.27 1.27)) hide) 408 | ) 409 | (property "ki_description" "Mainstream Value Line Arm Cortex-M0+ MCU with 32 Kbytes of of Flash memory memory, 8 Kbytes RAM, 64 MHz CPU, 2x USART, timers, ADC, comm. I/F, 2-3.6V" (at 0 0 0) 410 | (effects (font (size 1.27 1.27)) hide) 411 | ) 412 | (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm*" (at 0 0 0) 413 | (effects (font (size 1.27 1.27)) hide) 414 | ) 415 | (symbol "STM32G030J6Mx_0_1" 416 | (rectangle (start -7.62 5.08) (end 7.62 -7.62) 417 | (stroke (width 0.254) (type default)) 418 | (fill (type background)) 419 | ) 420 | ) 421 | (symbol "STM32G030J6Mx_1_1" 422 | (pin bidirectional line (at 10.16 -5.08 180) (length 2.54) 423 | (name "PC14" (effects (font (size 1.27 1.27)))) 424 | (number "1" (effects (font (size 1.27 1.27)))) 425 | ) 426 | (pin power_in line (at 0 7.62 270) (length 2.54) 427 | (name "VDD" (effects (font (size 1.27 1.27)))) 428 | (number "2" (effects (font (size 1.27 1.27)))) 429 | ) 430 | (pin power_in line (at 0 -10.16 90) (length 2.54) 431 | (name "GND" (effects (font (size 1.27 1.27)))) 432 | (number "3" (effects (font (size 1.27 1.27)))) 433 | ) 434 | (pin bidirectional line (at 10.16 2.54 180) (length 2.54) 435 | (name "PA0" (effects (font (size 1.27 1.27)))) 436 | (number "4" (effects (font (size 1.27 1.27)))) 437 | ) 438 | (pin bidirectional line (at -10.16 2.54 0) (length 2.54) 439 | (name "PA11" (effects (font (size 1.27 1.27)))) 440 | (number "5" (effects (font (size 1.27 1.27)))) 441 | ) 442 | (pin bidirectional line (at -10.16 0 0) (length 2.54) 443 | (name "PA12" (effects (font (size 1.27 1.27)))) 444 | (number "6" (effects (font (size 1.27 1.27)))) 445 | ) 446 | (pin bidirectional line (at -10.16 -2.54 0) (length 2.54) 447 | (name "PA13" (effects (font (size 1.27 1.27)))) 448 | (number "7" (effects (font (size 1.27 1.27)))) 449 | ) 450 | (pin bidirectional line (at -10.16 -5.08 0) (length 2.54) 451 | (name "PA14" (effects (font (size 1.27 1.27)))) 452 | (number "8" (effects (font (size 1.27 1.27)))) 453 | ) 454 | ) 455 | ) 456 | (symbol "power:+5V" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) 457 | (property "Reference" "#PWR" (at 0 -3.81 0) 458 | (effects (font (size 1.27 1.27)) hide) 459 | ) 460 | (property "Value" "+5V" (at 0 3.556 0) 461 | (effects (font (size 1.27 1.27))) 462 | ) 463 | (property "Footprint" "" (at 0 0 0) 464 | (effects (font (size 1.27 1.27)) hide) 465 | ) 466 | (property "Datasheet" "" (at 0 0 0) 467 | (effects (font (size 1.27 1.27)) hide) 468 | ) 469 | (property "ki_keywords" "power-flag" (at 0 0 0) 470 | (effects (font (size 1.27 1.27)) hide) 471 | ) 472 | (property "ki_description" "Power symbol creates a global label with name \"+5V\"" (at 0 0 0) 473 | (effects (font (size 1.27 1.27)) hide) 474 | ) 475 | (symbol "+5V_0_1" 476 | (polyline 477 | (pts 478 | (xy -0.762 1.27) 479 | (xy 0 2.54) 480 | ) 481 | (stroke (width 0) (type default)) 482 | (fill (type none)) 483 | ) 484 | (polyline 485 | (pts 486 | (xy 0 0) 487 | (xy 0 2.54) 488 | ) 489 | (stroke (width 0) (type default)) 490 | (fill (type none)) 491 | ) 492 | (polyline 493 | (pts 494 | (xy 0 2.54) 495 | (xy 0.762 1.27) 496 | ) 497 | (stroke (width 0) (type default)) 498 | (fill (type none)) 499 | ) 500 | ) 501 | (symbol "+5V_1_1" 502 | (pin power_in line (at 0 0 90) (length 0) hide 503 | (name "+5V" (effects (font (size 1.27 1.27)))) 504 | (number "1" (effects (font (size 1.27 1.27)))) 505 | ) 506 | ) 507 | ) 508 | (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) 509 | (property "Reference" "#PWR" (at 0 -6.35 0) 510 | (effects (font (size 1.27 1.27)) hide) 511 | ) 512 | (property "Value" "GND" (at 0 -3.81 0) 513 | (effects (font (size 1.27 1.27))) 514 | ) 515 | (property "Footprint" "" (at 0 0 0) 516 | (effects (font (size 1.27 1.27)) hide) 517 | ) 518 | (property "Datasheet" "" (at 0 0 0) 519 | (effects (font (size 1.27 1.27)) hide) 520 | ) 521 | (property "ki_keywords" "power-flag" (at 0 0 0) 522 | (effects (font (size 1.27 1.27)) hide) 523 | ) 524 | (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (at 0 0 0) 525 | (effects (font (size 1.27 1.27)) hide) 526 | ) 527 | (symbol "GND_0_1" 528 | (polyline 529 | (pts 530 | (xy 0 0) 531 | (xy 0 -1.27) 532 | (xy 1.27 -1.27) 533 | (xy 0 -2.54) 534 | (xy -1.27 -1.27) 535 | (xy 0 -1.27) 536 | ) 537 | (stroke (width 0) (type default)) 538 | (fill (type none)) 539 | ) 540 | ) 541 | (symbol "GND_1_1" 542 | (pin power_in line (at 0 0 270) (length 0) hide 543 | (name "GND" (effects (font (size 1.27 1.27)))) 544 | (number "1" (effects (font (size 1.27 1.27)))) 545 | ) 546 | ) 547 | ) 548 | (symbol "power:VDD" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes) 549 | (property "Reference" "#PWR" (at 0 -3.81 0) 550 | (effects (font (size 1.27 1.27)) hide) 551 | ) 552 | (property "Value" "VDD" (at 0 3.81 0) 553 | (effects (font (size 1.27 1.27))) 554 | ) 555 | (property "Footprint" "" (at 0 0 0) 556 | (effects (font (size 1.27 1.27)) hide) 557 | ) 558 | (property "Datasheet" "" (at 0 0 0) 559 | (effects (font (size 1.27 1.27)) hide) 560 | ) 561 | (property "ki_keywords" "power-flag" (at 0 0 0) 562 | (effects (font (size 1.27 1.27)) hide) 563 | ) 564 | (property "ki_description" "Power symbol creates a global label with name \"VDD\"" (at 0 0 0) 565 | (effects (font (size 1.27 1.27)) hide) 566 | ) 567 | (symbol "VDD_0_1" 568 | (polyline 569 | (pts 570 | (xy -0.762 1.27) 571 | (xy 0 2.54) 572 | ) 573 | (stroke (width 0) (type default)) 574 | (fill (type none)) 575 | ) 576 | (polyline 577 | (pts 578 | (xy 0 0) 579 | (xy 0 2.54) 580 | ) 581 | (stroke (width 0) (type default)) 582 | (fill (type none)) 583 | ) 584 | (polyline 585 | (pts 586 | (xy 0 2.54) 587 | (xy 0.762 1.27) 588 | ) 589 | (stroke (width 0) (type default)) 590 | (fill (type none)) 591 | ) 592 | ) 593 | (symbol "VDD_1_1" 594 | (pin power_in line (at 0 0 90) (length 0) hide 595 | (name "VDD" (effects (font (size 1.27 1.27)))) 596 | (number "1" (effects (font (size 1.27 1.27)))) 597 | ) 598 | ) 599 | ) 600 | ) 601 | 602 | (junction (at 113.665 93.98) (diameter 0.9144) (color 0 0 0 0) 603 | (uuid 063fb466-deee-4cd0-9766-ee8855a6481c) 604 | ) 605 | (junction (at 179.705 116.84) (diameter 0.9144) (color 0 0 0 0) 606 | (uuid 19ac0d7b-b476-4805-a202-73eccee52b68) 607 | ) 608 | (junction (at 113.665 104.14) (diameter 0.9144) (color 0 0 0 0) 609 | (uuid 45ce57ac-a2f9-4e59-9078-3f2d7026ddfe) 610 | ) 611 | (junction (at 95.885 93.98) (diameter 0.9144) (color 0 0 0 0) 612 | (uuid 6c4d8b28-b054-48f6-a15c-00e7e9abcc2a) 613 | ) 614 | (junction (at 92.075 93.98) (diameter 0.9144) (color 0 0 0 0) 615 | (uuid 89701af2-1be3-4e76-9f76-3f29e696962d) 616 | ) 617 | (junction (at 122.555 93.98) (diameter 0.9144) (color 0 0 0 0) 618 | (uuid a6eb19b7-2536-44ff-bb03-eca240e3bb92) 619 | ) 620 | (junction (at 179.705 92.71) (diameter 0.9144) (color 0 0 0 0) 621 | (uuid a70b567d-c8ca-4e0e-8f25-2ba28e01e8b6) 622 | ) 623 | (junction (at 103.505 104.14) (diameter 0.9144) (color 0 0 0 0) 624 | (uuid db3f19af-b131-43a4-9899-b03c7460ad6f) 625 | ) 626 | 627 | (no_connect (at 169.545 102.87) (uuid 0e8141fe-ff5d-4d35-8b58-e41fd2ca7086)) 628 | (no_connect (at 169.545 105.41) (uuid 0e8141fe-ff5d-4d35-8b58-e41fd2ca7087)) 629 | (no_connect (at 189.865 97.79) (uuid 0e8141fe-ff5d-4d35-8b58-e41fd2ca7088)) 630 | (no_connect (at 189.865 105.41) (uuid 0e8141fe-ff5d-4d35-8b58-e41fd2ca7089)) 631 | 632 | (wire (pts (xy 92.075 104.14) (xy 92.075 101.6)) 633 | (stroke (width 0) (type solid)) 634 | (uuid 06824c0f-6303-417f-aab0-e588ad6f2009) 635 | ) 636 | (wire (pts (xy 103.505 104.14) (xy 92.075 104.14)) 637 | (stroke (width 0) (type solid)) 638 | (uuid 06824c0f-6303-417f-aab0-e588ad6f200a) 639 | ) 640 | (wire (pts (xy 113.665 101.6) (xy 113.665 104.14)) 641 | (stroke (width 0) (type solid)) 642 | (uuid 06824c0f-6303-417f-aab0-e588ad6f200b) 643 | ) 644 | (wire (pts (xy 113.665 104.14) (xy 103.505 104.14)) 645 | (stroke (width 0) (type solid)) 646 | (uuid 06824c0f-6303-417f-aab0-e588ad6f200c) 647 | ) 648 | (wire (pts (xy 88.265 93.98) (xy 92.075 93.98)) 649 | (stroke (width 0) (type solid)) 650 | (uuid 180f02a8-9c5f-46e6-b0ca-444100083c27) 651 | ) 652 | (wire (pts (xy 92.075 93.98) (xy 95.885 93.98)) 653 | (stroke (width 0) (type solid)) 654 | (uuid 180f02a8-9c5f-46e6-b0ca-444100083c28) 655 | ) 656 | (wire (pts (xy 103.505 104.14) (xy 103.505 105.41)) 657 | (stroke (width 0) (type solid)) 658 | (uuid 192d8238-b0d4-4a18-9879-2f4fcf8dc29c) 659 | ) 660 | (wire (pts (xy 122.555 101.6) (xy 122.555 104.14)) 661 | (stroke (width 0) (type solid)) 662 | (uuid 3c1c54aa-1392-43c7-b774-a287f2c15695) 663 | ) 664 | (wire (pts (xy 122.555 104.14) (xy 113.665 104.14)) 665 | (stroke (width 0) (type solid)) 666 | (uuid 3c1c54aa-1392-43c7-b774-a287f2c15696) 667 | ) 668 | (wire (pts (xy 95.885 93.98) (xy 95.885 96.52)) 669 | (stroke (width 0) (type solid)) 670 | (uuid 44fcc09f-5db0-4037-bfbe-b0965138f360) 671 | ) 672 | (wire (pts (xy 160.655 92.71) (xy 179.705 92.71)) 673 | (stroke (width 0) (type solid)) 674 | (uuid 4689613d-0c19-4d2b-b47e-54f4a16c0952) 675 | ) 676 | (wire (pts (xy 179.705 116.84) (xy 179.705 118.11)) 677 | (stroke (width 0) (type solid)) 678 | (uuid 578de44b-a769-4439-9b2a-da00c1656b6c) 679 | ) 680 | (wire (pts (xy 153.035 114.3) (xy 164.465 114.3)) 681 | (stroke (width 0) (type solid)) 682 | (uuid 605181cc-758a-49d8-8d75-8d9934fc7f1d) 683 | ) 684 | (wire (pts (xy 164.465 100.33) (xy 169.545 100.33)) 685 | (stroke (width 0) (type solid)) 686 | (uuid 605181cc-758a-49d8-8d75-8d9934fc7f1e) 687 | ) 688 | (wire (pts (xy 164.465 114.3) (xy 164.465 100.33)) 689 | (stroke (width 0) (type solid)) 690 | (uuid 605181cc-758a-49d8-8d75-8d9934fc7f1f) 691 | ) 692 | (wire (pts (xy 103.505 102.87) (xy 103.505 104.14)) 693 | (stroke (width 0) (type solid)) 694 | (uuid 7c21d763-2f62-4829-ba17-1ffaa3008b98) 695 | ) 696 | (wire (pts (xy 160.655 97.79) (xy 169.545 97.79)) 697 | (stroke (width 0) (type solid)) 698 | (uuid 96d1f2ef-3573-4135-b443-5be79e5be016) 699 | ) 700 | (wire (pts (xy 111.125 93.98) (xy 113.665 93.98)) 701 | (stroke (width 0) (type solid)) 702 | (uuid 9960e1ef-0300-4b41-8001-5bdf464d8d21) 703 | ) 704 | (wire (pts (xy 113.665 93.98) (xy 122.555 93.98)) 705 | (stroke (width 0) (type solid)) 706 | (uuid 9960e1ef-0300-4b41-8001-5bdf464d8d22) 707 | ) 708 | (wire (pts (xy 153.035 116.84) (xy 179.705 116.84)) 709 | (stroke (width 0) (type solid)) 710 | (uuid e163e95d-10dc-4d74-b380-2c6cf6e0e691) 711 | ) 712 | (wire (pts (xy 179.705 116.84) (xy 179.705 110.49)) 713 | (stroke (width 0) (type solid)) 714 | (uuid e163e95d-10dc-4d74-b380-2c6cf6e0e692) 715 | ) 716 | 717 | (symbol (lib_id "power:GND") (at 179.705 118.11 0) (unit 1) 718 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 719 | (uuid 0d560210-6bdc-4f27-8489-06131941d03d) 720 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 721 | (property "Reference" "" (at 179.705 124.46 0) 722 | (effects (font (size 1.27 1.27)) hide) 723 | ) 724 | (property "Value" "" (at 179.705 123.19 0) 725 | (effects (font (size 1.27 1.27))) 726 | ) 727 | (property "Footprint" "" (at 179.705 118.11 0) 728 | (effects (font (size 1.27 1.27)) hide) 729 | ) 730 | (property "Datasheet" "" (at 179.705 118.11 0) 731 | (effects (font (size 1.27 1.27)) hide) 732 | ) 733 | (pin "1" (uuid 550bd869-1a71-45a2-8d2d-440b07739e97)) 734 | ) 735 | 736 | (symbol (lib_id "Device:C") (at 122.555 97.79 0) (unit 1) 737 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 738 | (uuid 177f5fef-e824-4779-8085-3ad999ff3426) 739 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 740 | (property "Reference" "" (at 125.73 97.1549 0) 741 | (effects (font (size 1.27 1.27)) (justify left)) 742 | ) 743 | (property "Value" "" (at 125.73 99.6949 0) 744 | (effects (font (size 1.27 1.27)) (justify left)) 745 | ) 746 | (property "Footprint" "" (at 123.5202 101.6 0) 747 | (effects (font (size 1.27 1.27)) hide) 748 | ) 749 | (property "Datasheet" "~" (at 122.555 97.79 0) 750 | (effects (font (size 1.27 1.27)) hide) 751 | ) 752 | (pin "1" (uuid 16cd51a3-277c-4d60-b03a-1a8bcf739051)) 753 | (pin "2" (uuid edf69593-47bf-46b6-94c8-95aa72bc1b40)) 754 | ) 755 | 756 | (symbol (lib_id "Device:C") (at 92.075 97.79 0) (unit 1) 757 | (in_bom yes) (on_board yes) (dnp no) 758 | (uuid 1bf4bfe3-f758-4a85-86f5-c84a6bd4f9e4) 759 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 760 | (property "Reference" "" (at 86.995 97.1549 0) 761 | (effects (font (size 1.27 1.27)) (justify left)) 762 | ) 763 | (property "Value" "" (at 86.995 99.6949 0) 764 | (effects (font (size 1.27 1.27)) (justify left)) 765 | ) 766 | (property "Footprint" "" (at 93.0402 101.6 0) 767 | (effects (font (size 1.27 1.27)) hide) 768 | ) 769 | (property "Datasheet" "~" (at 92.075 97.79 0) 770 | (effects (font (size 1.27 1.27)) hide) 771 | ) 772 | (pin "1" (uuid dee0be43-b0c8-47ca-b045-f45f1067f9ee)) 773 | (pin "2" (uuid dcfe9bba-cda8-413e-aa02-c28d702ad0bb)) 774 | ) 775 | 776 | (symbol (lib_id "power:VDD") (at 122.555 93.98 0) (unit 1) 777 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 778 | (uuid 2cc235a3-c35c-433a-8e32-7010d42308d3) 779 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 780 | (property "Reference" "" (at 122.555 97.79 0) 781 | (effects (font (size 1.27 1.27)) hide) 782 | ) 783 | (property "Value" "" (at 122.555 90.17 0) 784 | (effects (font (size 1.27 1.27))) 785 | ) 786 | (property "Footprint" "" (at 122.555 93.98 0) 787 | (effects (font (size 1.27 1.27)) hide) 788 | ) 789 | (property "Datasheet" "" (at 122.555 93.98 0) 790 | (effects (font (size 1.27 1.27)) hide) 791 | ) 792 | (pin "1" (uuid d5a2852f-1417-4a24-b8db-b3c09d99bcfb)) 793 | ) 794 | 795 | (symbol (lib_id "power:GND") (at 160.655 102.87 0) (unit 1) 796 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 797 | (uuid 3d6a7384-55b1-44c6-959a-c948950e6d30) 798 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 799 | (property "Reference" "" (at 160.655 109.22 0) 800 | (effects (font (size 1.27 1.27)) hide) 801 | ) 802 | (property "Value" "" (at 160.655 107.95 0) 803 | (effects (font (size 1.27 1.27))) 804 | ) 805 | (property "Footprint" "" (at 160.655 102.87 0) 806 | (effects (font (size 1.27 1.27)) hide) 807 | ) 808 | (property "Datasheet" "" (at 160.655 102.87 0) 809 | (effects (font (size 1.27 1.27)) hide) 810 | ) 811 | (pin "1" (uuid 5a617ac6-cdb4-4ecd-8107-41aaa16409fc)) 812 | ) 813 | 814 | (symbol (lib_id "Device:C") (at 113.665 97.79 0) (unit 1) 815 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 816 | (uuid 62bfe1e6-8ccd-47e5-b825-7c8283629a85) 817 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 818 | (property "Reference" "" (at 116.84 97.1549 0) 819 | (effects (font (size 1.27 1.27)) (justify left)) 820 | ) 821 | (property "Value" "" (at 116.84 99.6949 0) 822 | (effects (font (size 1.27 1.27)) (justify left)) 823 | ) 824 | (property "Footprint" "" (at 114.6302 101.6 0) 825 | (effects (font (size 1.27 1.27)) hide) 826 | ) 827 | (property "Datasheet" "~" (at 113.665 97.79 0) 828 | (effects (font (size 1.27 1.27)) hide) 829 | ) 830 | (pin "1" (uuid a09920e6-01b1-4ea4-8228-c93762267fab)) 831 | (pin "2" (uuid b4bf9ef9-4566-4cea-91e1-743da41470f0)) 832 | ) 833 | 834 | (symbol (lib_id "power:+5V") (at 153.035 111.76 0) (unit 1) 835 | (in_bom yes) (on_board yes) (dnp no) 836 | (uuid 68e4a514-d313-4f2c-874c-71272547677a) 837 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 838 | (property "Reference" "" (at 153.035 115.57 0) 839 | (effects (font (size 1.27 1.27)) hide) 840 | ) 841 | (property "Value" "" (at 153.035 107.95 0) 842 | (effects (font (size 1.27 1.27))) 843 | ) 844 | (property "Footprint" "" (at 153.035 111.76 0) 845 | (effects (font (size 1.27 1.27)) hide) 846 | ) 847 | (property "Datasheet" "" (at 153.035 111.76 0) 848 | (effects (font (size 1.27 1.27)) hide) 849 | ) 850 | (pin "1" (uuid ec74fb9e-74f8-40fc-bd88-cefc90896151)) 851 | ) 852 | 853 | (symbol (lib_id "power:+5V") (at 88.265 93.98 0) (unit 1) 854 | (in_bom yes) (on_board yes) (dnp no) 855 | (uuid 7ea60cfe-8e4f-4b05-9238-f88cf44aae18) 856 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 857 | (property "Reference" "" (at 88.265 97.79 0) 858 | (effects (font (size 1.27 1.27)) hide) 859 | ) 860 | (property "Value" "" (at 88.265 90.17 0) 861 | (effects (font (size 1.27 1.27))) 862 | ) 863 | (property "Footprint" "" (at 88.265 93.98 0) 864 | (effects (font (size 1.27 1.27)) hide) 865 | ) 866 | (property "Datasheet" "" (at 88.265 93.98 0) 867 | (effects (font (size 1.27 1.27)) hide) 868 | ) 869 | (pin "1" (uuid 06fde355-a69f-4ee2-9791-ed0223bbd8af)) 870 | ) 871 | 872 | (symbol (lib_id "power:GND") (at 103.505 105.41 0) (unit 1) 873 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 874 | (uuid 9ddcfa95-3e53-43bc-8681-6a567e19cadb) 875 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 876 | (property "Reference" "" (at 103.505 111.76 0) 877 | (effects (font (size 1.27 1.27)) hide) 878 | ) 879 | (property "Value" "" (at 103.505 110.49 0) 880 | (effects (font (size 1.27 1.27))) 881 | ) 882 | (property "Footprint" "" (at 103.505 105.41 0) 883 | (effects (font (size 1.27 1.27)) hide) 884 | ) 885 | (property "Datasheet" "" (at 103.505 105.41 0) 886 | (effects (font (size 1.27 1.27)) hide) 887 | ) 888 | (pin "1" (uuid f2c40a91-5145-4774-a13f-7d124260761b)) 889 | ) 890 | 891 | (symbol (lib_id "ir-smart-led-controller:STM32G030J6Mx") (at 179.705 100.33 0) (unit 1) 892 | (in_bom yes) (on_board yes) (dnp no) 893 | (uuid c3d528b8-b82e-463c-af54-e40e4ec54812) 894 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 895 | (property "Reference" "" (at 182.88 112.395 0) 896 | (effects (font (size 1.27 1.27))) 897 | ) 898 | (property "Value" "" (at 189.23 110.49 0) 899 | (effects (font (size 1.27 1.27))) 900 | ) 901 | (property "Footprint" "" (at 179.705 87.63 0) 902 | (effects (font (size 1.27 1.27)) hide) 903 | ) 904 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32g030j6.pdf" (at 179.705 118.11 0) 905 | (effects (font (size 1.27 1.27)) hide) 906 | ) 907 | (pin "1" (uuid 05aa4384-2af8-414b-8adc-8e508719d6e7)) 908 | (pin "2" (uuid ab80fde0-0dd2-4571-9b0e-8a8bcbc3bd78)) 909 | (pin "3" (uuid 7280cdf1-50d0-4322-a427-c94d07bd9676)) 910 | (pin "4" (uuid 634b5793-d845-4095-a8e9-d56e767d19b5)) 911 | (pin "5" (uuid 21b5f570-06b7-4049-abdf-c898d66becdb)) 912 | (pin "6" (uuid cd932c6d-9326-457a-9708-3a638e2507d5)) 913 | (pin "7" (uuid 986cc3de-bc75-4d1c-8859-69d092573cf9)) 914 | (pin "8" (uuid d8ea9f2e-a037-41d5-b415-12f22bf29a28)) 915 | ) 916 | 917 | (symbol (lib_id "Sensor_Proximity:TSSP58038") (at 150.495 97.79 0) (unit 1) 918 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 919 | (uuid e96e6247-4828-425a-bb07-149e75fcd270) 920 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 921 | (property "Reference" "" (at 150.1521 87.63 0) 922 | (effects (font (size 1.27 1.27))) 923 | ) 924 | (property "Value" "" (at 150.1521 90.17 0) 925 | (effects (font (size 1.27 1.27))) 926 | ) 927 | (property "Footprint" "" (at 149.225 107.315 0) 928 | (effects (font (size 1.27 1.27)) hide) 929 | ) 930 | (property "Datasheet" "http://www.vishay.com/docs/82476/tssp58p38.pdf" (at 167.005 90.17 0) 931 | (effects (font (size 1.27 1.27)) hide) 932 | ) 933 | (pin "1" (uuid a0a29dc1-9086-44aa-b0ea-7222e3ca8320)) 934 | (pin "2" (uuid 550fb88f-2ad8-46cf-816c-aba1e795e61d)) 935 | (pin "3" (uuid 7dc85e2f-6a4a-4ea2-80d6-3ecfafce0a73)) 936 | ) 937 | 938 | (symbol (lib_id "Connector_Generic:Conn_01x03") (at 147.955 114.3 180) (unit 1) 939 | (in_bom yes) (on_board yes) (dnp no) 940 | (uuid f8374557-a6b3-432e-8e1f-c54fb7439493) 941 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 942 | (property "Reference" "" (at 143.637 116.205 0) 943 | (effects (font (size 1.27 1.27))) 944 | ) 945 | (property "Value" "" (at 148.082 119.38 0) 946 | (effects (font (size 1.27 1.27))) 947 | ) 948 | (property "Footprint" "" (at 147.955 114.3 0) 949 | (effects (font (size 1.27 1.27)) hide) 950 | ) 951 | (property "Datasheet" "~" (at 147.955 114.3 0) 952 | (effects (font (size 1.27 1.27)) hide) 953 | ) 954 | (pin "1" (uuid 6ce47182-041a-4cc3-a3b0-ed693f2d0ca7)) 955 | (pin "2" (uuid d22852f7-7ca2-486e-a565-46f3c65b73ef)) 956 | (pin "3" (uuid 3c243354-971a-46f8-a29d-3d5ae6a950d1)) 957 | ) 958 | 959 | (symbol (lib_id "power:VDD") (at 179.705 92.71 0) (unit 1) 960 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 961 | (uuid fadc95d8-2b21-4fe0-a616-a25e1e0be5e4) 962 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 963 | (property "Reference" "" (at 179.705 96.52 0) 964 | (effects (font (size 1.27 1.27)) hide) 965 | ) 966 | (property "Value" "" (at 179.705 88.9 0) 967 | (effects (font (size 1.27 1.27))) 968 | ) 969 | (property "Footprint" "" (at 179.705 92.71 0) 970 | (effects (font (size 1.27 1.27)) hide) 971 | ) 972 | (property "Datasheet" "" (at 179.705 92.71 0) 973 | (effects (font (size 1.27 1.27)) hide) 974 | ) 975 | (pin "1" (uuid 05ffa64d-f72b-4cbd-8760-2e8fcdd4db5d)) 976 | ) 977 | 978 | (symbol (lib_id "ir-smart-led-controller:LDK220") (at 103.505 95.25 0) (unit 1) 979 | (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced) 980 | (uuid fc2a00e6-5c5b-4d73-91f1-4b583f91db9a) 981 | (default_instance (reference "") (unit 1) (value "") (footprint "")) 982 | (property "Reference" "" (at 103.505 86.36 0) 983 | (effects (font (size 1.27 1.27))) 984 | ) 985 | (property "Value" "" (at 103.505 88.9 0) 986 | (effects (font (size 1.27 1.27))) 987 | ) 988 | (property "Footprint" "" (at 103.505 86.995 0) 989 | (effects (font (size 1.27 1.27) italic) hide) 990 | ) 991 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/ldk220.pdf" (at 103.505 104.14 0) 992 | (effects (font (size 1.27 1.27)) hide) 993 | ) 994 | (pin "1" (uuid be66f78a-6d0b-447d-a4c1-7fa0c81c4a30)) 995 | (pin "2" (uuid 9ab864a8-03be-47b9-8a10-d028d3a9daba)) 996 | (pin "3" (uuid f237bb0c-d985-416a-b10e-3d7dfe35b885)) 997 | (pin "4" (uuid f029c39c-e884-4157-a7b7-11f02f17774f)) 998 | (pin "5" (uuid aac0092f-e3ea-45b4-b74f-af1cda86dfc0)) 999 | ) 1000 | 1001 | (sheet_instances 1002 | (path "/" (page "1")) 1003 | ) 1004 | 1005 | (symbol_instances 1006 | (path "/9ddcfa95-3e53-43bc-8681-6a567e19cadb" 1007 | (reference "#PWR0101") (unit 1) (value "GND") (footprint "") 1008 | ) 1009 | (path "/2cc235a3-c35c-433a-8e32-7010d42308d3" 1010 | (reference "#PWR0102") (unit 1) (value "VDD") (footprint "") 1011 | ) 1012 | (path "/7ea60cfe-8e4f-4b05-9238-f88cf44aae18" 1013 | (reference "#PWR0103") (unit 1) (value "+5V") (footprint "") 1014 | ) 1015 | (path "/0d560210-6bdc-4f27-8489-06131941d03d" 1016 | (reference "#PWR0104") (unit 1) (value "GND") (footprint "") 1017 | ) 1018 | (path "/68e4a514-d313-4f2c-874c-71272547677a" 1019 | (reference "#PWR0105") (unit 1) (value "+5V") (footprint "") 1020 | ) 1021 | (path "/fadc95d8-2b21-4fe0-a616-a25e1e0be5e4" 1022 | (reference "#PWR0106") (unit 1) (value "VDD") (footprint "") 1023 | ) 1024 | (path "/3d6a7384-55b1-44c6-959a-c948950e6d30" 1025 | (reference "#PWR0107") (unit 1) (value "GND") (footprint "") 1026 | ) 1027 | (path "/1bf4bfe3-f758-4a85-86f5-c84a6bd4f9e4" 1028 | (reference "C1") (unit 1) (value "1uF") (footprint "Capacitor_SMD:C_0603_1608Metric") 1029 | ) 1030 | (path "/62bfe1e6-8ccd-47e5-b825-7c8283629a85" 1031 | (reference "C2") (unit 1) (value "1uF") (footprint "Capacitor_SMD:C_0603_1608Metric") 1032 | ) 1033 | (path "/177f5fef-e824-4779-8085-3ad999ff3426" 1034 | (reference "C3") (unit 1) (value "100nF") (footprint "Capacitor_SMD:C_0603_1608Metric") 1035 | ) 1036 | (path "/f8374557-a6b3-432e-8e1f-c54fb7439493" 1037 | (reference "J1") (unit 1) (value "Conn_01x03") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical") 1038 | ) 1039 | (path "/c3d528b8-b82e-463c-af54-e40e4ec54812" 1040 | (reference "U1") (unit 1) (value "STM32G030J6Mx") (footprint "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm") 1041 | ) 1042 | (path "/e96e6247-4828-425a-bb07-149e75fcd270" 1043 | (reference "U2") (unit 1) (value "TSSP58038") (footprint "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical") 1044 | ) 1045 | (path "/fc2a00e6-5c5b-4d73-91f1-4b583f91db9a" 1046 | (reference "U3") (unit 1) (value "LDK220") (footprint "Package_TO_SOT_SMD:SOT-23-5") 1047 | ) 1048 | ) 1049 | ) 1050 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.kicad_sym: -------------------------------------------------------------------------------- 1 | (kicad_symbol_lib (version 20201005) (generator kicad_symbol_editor) 2 | (symbol "ir-smart-led-controller:LDK220" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) 3 | (property "Reference" "U" (id 0) (at -3.81 5.715 0) 4 | (effects (font (size 1.27 1.27))) 5 | ) 6 | (property "Value" "LDK220" (id 1) (at 0 5.715 0) 7 | (effects (font (size 1.27 1.27)) (justify left)) 8 | ) 9 | (property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (id 2) (at 0 8.255 0) 10 | (effects (font (size 1.27 1.27) italic) hide) 11 | ) 12 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/ldk220.pdf" (id 3) (at 0 -8.89 0) 13 | (effects (font (size 1.27 1.27)) hide) 14 | ) 15 | (property "ki_keywords" "200mA LDO Regulator Fixed Positive" (id 4) (at 0 0 0) 16 | (effects (font (size 1.27 1.27)) hide) 17 | ) 18 | (property "ki_description" "200 mA low quiescent current and low noise LDO, SOT-23-5" (id 5) (at 0 0 0) 19 | (effects (font (size 1.27 1.27)) hide) 20 | ) 21 | (property "ki_fp_filters" "SOT?23*" (id 6) (at 0 0 0) 22 | (effects (font (size 1.27 1.27)) hide) 23 | ) 24 | (symbol "LDK220_0_1" 25 | (rectangle (start -5.08 4.445) (end 5.08 -5.08) 26 | (stroke (width 0.254)) (fill (type background)) 27 | ) 28 | ) 29 | (symbol "LDK220_1_1" 30 | (pin power_in line (at -7.62 1.27 0) (length 2.54) 31 | (name "IN" (effects (font (size 1.27 1.27)))) 32 | (number "1" (effects (font (size 1.27 1.27)))) 33 | ) 34 | (pin power_in line (at 0 -7.62 90) (length 2.54) 35 | (name "GND" (effects (font (size 1.27 1.27)))) 36 | (number "2" (effects (font (size 1.27 1.27)))) 37 | ) 38 | (pin input line (at -7.62 -1.27 0) (length 2.54) 39 | (name "EN" (effects (font (size 1.27 1.27)))) 40 | (number "3" (effects (font (size 1.27 1.27)))) 41 | ) 42 | (pin no_connect line (at 5.08 -1.27 0) (length 2.54) hide 43 | (name "NC" (effects (font (size 1.27 1.27)))) 44 | (number "4" (effects (font (size 1.27 1.27)))) 45 | ) 46 | (pin power_out line (at 7.62 1.27 180) (length 2.54) 47 | (name "OUT" (effects (font (size 1.27 1.27)))) 48 | (number "5" (effects (font (size 1.27 1.27)))) 49 | ) 50 | ) 51 | ) 52 | (symbol "ir-smart-led-controller:STM32G030J6Mx" (pin_names (offset 0.254)) (in_bom yes) (on_board yes) 53 | (property "Reference" "U" (id 0) (at -6.35 6.35 0) 54 | (effects (font (size 1.27 1.27))) 55 | ) 56 | (property "Value" "STM32G030J6Mx" (id 1) (at 2.54 7.62 0) 57 | (effects (font (size 1.27 1.27)) (justify left)) 58 | ) 59 | (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" (id 2) (at 0 12.7 0) 60 | (effects (font (size 1.27 1.27)) hide) 61 | ) 62 | (property "Datasheet" "https://www.st.com/resource/en/datasheet/stm32g030j6.pdf" (id 3) (at 0 -17.78 0) 63 | (effects (font (size 1.27 1.27)) hide) 64 | ) 65 | (property "ki_description" "Mainstream Value Line Arm Cortex-M0+ MCU with 32 Kbytes of of Flash memory memory, 8 Kbytes RAM, 64 MHz CPU, 2x USART, timers, ADC, comm. I/F, 2-3.6V" (id 4) (at 0 0 0) 66 | (effects (font (size 1.27 1.27)) hide) 67 | ) 68 | (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm*" (id 5) (at 0 0 0) 69 | (effects (font (size 1.27 1.27)) hide) 70 | ) 71 | (symbol "STM32G030J6Mx_0_1" 72 | (rectangle (start -7.62 5.08) (end 7.62 -7.62) 73 | (stroke (width 0.254)) (fill (type background)) 74 | ) 75 | ) 76 | (symbol "STM32G030J6Mx_1_1" 77 | (pin bidirectional line (at 10.16 -5.08 180) (length 2.54) 78 | (name "PC14" (effects (font (size 1.27 1.27)))) 79 | (number "1" (effects (font (size 1.27 1.27)))) 80 | ) 81 | (pin power_in line (at 0 7.62 270) (length 2.54) 82 | (name "VDD" (effects (font (size 1.27 1.27)))) 83 | (number "2" (effects (font (size 1.27 1.27)))) 84 | ) 85 | (pin power_in line (at 0 -10.16 90) (length 2.54) 86 | (name "GND" (effects (font (size 1.27 1.27)))) 87 | (number "3" (effects (font (size 1.27 1.27)))) 88 | ) 89 | (pin bidirectional line (at 10.16 2.54 180) (length 2.54) 90 | (name "PA0" (effects (font (size 1.27 1.27)))) 91 | (number "4" (effects (font (size 1.27 1.27)))) 92 | ) 93 | (pin bidirectional line (at -10.16 2.54 0) (length 2.54) 94 | (name "PA11" (effects (font (size 1.27 1.27)))) 95 | (number "5" (effects (font (size 1.27 1.27)))) 96 | ) 97 | (pin bidirectional line (at -10.16 0 0) (length 2.54) 98 | (name "PA12" (effects (font (size 1.27 1.27)))) 99 | (number "6" (effects (font (size 1.27 1.27)))) 100 | ) 101 | (pin bidirectional line (at -10.16 -2.54 0) (length 2.54) 102 | (name "PA13" (effects (font (size 1.27 1.27)))) 103 | (number "7" (effects (font (size 1.27 1.27)))) 104 | ) 105 | (pin bidirectional line (at -10.16 -5.08 0) (length 2.54) 106 | (name "PA14" (effects (font (size 1.27 1.27)))) 107 | (number "8" (effects (font (size 1.27 1.27)))) 108 | ) 109 | ) 110 | ) 111 | ) 112 | -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotcypress/ir-smart-led-controller/4792dd809dcc1ba489c10effe8b4306855b67239/pcb/ir-smart-led-controller.pdf -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotcypress/ir-smart-led-controller/4792dd809dcc1ba489c10effe8b4306855b67239/pcb/ir-smart-led-controller.png -------------------------------------------------------------------------------- /pcb/ir-smart-led-controller.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotcypress/ir-smart-led-controller/4792dd809dcc1ba489c10effe8b4306855b67239/pcb/ir-smart-led-controller.zip -------------------------------------------------------------------------------- /pcb/sym-lib-table: -------------------------------------------------------------------------------- 1 | (sym_lib_table 2 | (lib (name "ir-smart-led-controller")(type "KiCad")(uri "${KIPRJMOD}/ir-smart-led-controller.kicad_sym")(options "")(descr "")) 3 | ) 4 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # ir-smart-led-controller 2 | 3 | IR Remote Controller for WS2812(or analog) LED Strip. 4 | 5 | 6 | 7 | ## Resources 8 | 9 | - [Schematics](pcb/ir-smart-led-controller.pdf) 10 | - [Gerber files](pcb/ir-smart-led-controller.zip) 11 | - [BOM](pcb/ir-smart-led-controller.csv) 12 | 13 | 14 | ## License 15 | 16 | Licensed under either of 17 | 18 | - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or 19 | http://www.apache.org/licenses/LICENSE-2.0) 20 | - MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 21 | 22 | at your option. 23 | 24 | ### Contribution 25 | 26 | Unless you explicitly state otherwise, any contribution intentionally submitted 27 | for inclusion in the work by you, as defined in the Apache-2.0 license, shall be 28 | dual licensed as above, without any additional terms or conditions. 29 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | channel = "stable" 3 | targets = ["thumbv6m-none-eabi"] 4 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![no_std] 2 | #![no_main] 3 | // #![deny(warnings)] 4 | 5 | extern crate cortex_m; 6 | extern crate cortex_m_rt as rt; 7 | extern crate panic_probe; 8 | extern crate rtic; 9 | extern crate stm32g0xx_hal as hal; 10 | 11 | mod strip; 12 | 13 | use crate::strip::*; 14 | use hal::time::*; 15 | use hal::timer::*; 16 | use hal::{analog::adc::*, prelude::*}; 17 | use hal::{gpio::*, watchdog::IndependedWatchdog}; 18 | use hal::{rcc, spi, stm32}; 19 | use infrared::{protocols::Nec, PeriodicReceiver}; 20 | use smart_leds::SmartLedsWrite; 21 | use ws2812_spi::Ws2812; 22 | 23 | const STRIP_SIZE: usize = 10; 24 | 25 | pub use defmt_rtt as _; 26 | 27 | type IrPin = gpioa::PA11>; 28 | type SampleTimer = Timer; 29 | type AnimationTimer = Timer; 30 | type SpiLink = spi::Spi)>; 31 | 32 | #[rtic::app(device = hal::stm32, peripherals = true)] 33 | mod app { 34 | use super::*; 35 | 36 | #[shared] 37 | struct Shared { 38 | strip: Strip, 39 | } 40 | 41 | #[local] 42 | struct Local { 43 | adc: Adc, 44 | link: Ws2812, 45 | ir: PeriodicReceiver, 46 | animation_timer: AnimationTimer, 47 | sample_timer: SampleTimer, 48 | watchdog: IndependedWatchdog, 49 | } 50 | 51 | #[init] 52 | fn init(ctx: init::Context) -> (Shared, Local, init::Monotonics) { 53 | let pll_cfg = rcc::PllConfig::with_hsi(4, 24, 2); 54 | let rcc_cfg = rcc::Config::pll().pll_cfg(pll_cfg); 55 | let mut rcc = ctx.device.RCC.freeze(rcc_cfg); 56 | let mut adc = ctx.device.ADC.constrain(&mut rcc); 57 | adc.set_sample_time(SampleTime::T_80); 58 | 59 | let mut sample_timer = ctx.device.TIM1.timer(&mut rcc); 60 | sample_timer.start(50.micros()); 61 | sample_timer.listen(); 62 | 63 | let mut animation_timer = ctx.device.TIM16.timer(&mut rcc); 64 | animation_timer.start(160.millis()); 65 | animation_timer.listen(); 66 | 67 | let port_a = ctx.device.GPIOA.split(&mut rcc); 68 | let spi = ctx.device.SPI1.spi( 69 | (spi::NoSck, spi::NoMiso, port_a.pa12), 70 | spi::MODE_0, 71 | 3.MHz(), 72 | &mut rcc, 73 | ); 74 | 75 | let ir = PeriodicReceiver::new(port_a.pa11.into_floating_input(), 20_000); 76 | let link = Ws2812::new(spi); 77 | let strip = Strip::new(); 78 | 79 | let mut watchdog = ctx.device.IWDG.constrain(); 80 | watchdog.start(100.millis()); 81 | defmt::info!("Init completed"); 82 | 83 | ( 84 | Shared { strip }, 85 | Local { 86 | adc, 87 | animation_timer, 88 | ir, 89 | link, 90 | sample_timer, 91 | watchdog, 92 | }, 93 | init::Monotonics(), 94 | ) 95 | } 96 | 97 | #[task(binds = TIM1_BRK_UP_TRG_COM, local = [ir, sample_timer], shared = [strip])] 98 | fn sample_timer_tick(ctx: sample_timer_tick::Context) { 99 | match ctx.local.ir.poll() { 100 | Ok(Some(cmd)) => { 101 | if cmd.addr == 0 { 102 | defmt::info!("IR Command: {} {} {}", cmd.addr, cmd.cmd, cmd.repeat); 103 | let mut strip = ctx.shared.strip; 104 | strip.lock(|strip| strip.handle_command(cmd.cmd)); 105 | } 106 | } 107 | Err(err) => { 108 | defmt::info!("ERR {}", err); 109 | } 110 | _ => {} 111 | } 112 | ctx.local.sample_timer.clear_irq(); 113 | } 114 | 115 | #[task(binds = TIM16, local = [adc, link, animation_timer, watchdog], shared = [strip])] 116 | fn animation_timer_tick(ctx: animation_timer_tick::Context) { 117 | let temp = ctx.local.adc.read_temperature().unwrap(); 118 | let mut strip = ctx.shared.strip; 119 | let animation = strip.lock(|strip| { 120 | if temp > 50 { 121 | defmt::info!("Overheat: {}", temp); 122 | strip.handle_overheat(); 123 | } else { 124 | strip.handle_frame(); 125 | } 126 | strip.animate() 127 | }); 128 | ctx.local.link.write(animation).ok(); 129 | 130 | ctx.local.animation_timer.clear_irq(); 131 | ctx.local.watchdog.feed(); 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /src/strip.rs: -------------------------------------------------------------------------------- 1 | use smart_leds::RGB8; 2 | 3 | pub struct Strip { 4 | animation_kind: AnimationKind, 5 | color: IndexedColor, 6 | frame: usize, 7 | on: bool, 8 | overheat: bool, 9 | } 10 | 11 | impl Default for Strip { 12 | fn default() -> Self { 13 | Self::new() 14 | } 15 | } 16 | 17 | impl Strip { 18 | pub fn new() -> Self { 19 | Self { 20 | animation_kind: AnimationKind::Fire, 21 | color: IndexedColor::default(), 22 | on: true, 23 | frame: 0, 24 | overheat: false, 25 | } 26 | } 27 | 28 | pub fn on(&self) -> bool { 29 | self.on 30 | } 31 | 32 | pub fn animate(&self) -> Animation { 33 | match (self.on, self.overheat) { 34 | (true, false) => Animation::new(self.animation_kind, self.frame, self.color), 35 | (true, true) => Animation::new(AnimationKind::Overheat, self.frame, IndexedColor::RED), 36 | _ => Animation::new(AnimationKind::Static, 0, IndexedColor::OFF), 37 | } 38 | } 39 | 40 | pub fn handle_overheat(&mut self) { 41 | self.overheat = true; 42 | } 43 | 44 | pub fn handle_frame(&mut self) { 45 | self.frame += 1; 46 | } 47 | 48 | pub fn handle_command(&mut self, command: u8) { 49 | match command { 50 | 0 => self.switch_off(), 51 | 13 => self.switch_off(), 52 | 1 => self.switch_on(), 53 | 2 => self.animation_kind = AnimationKind::Static, 54 | 22 => self.switch_on(), 55 | 24 => self.luma_up(), 56 | 82 => self.luma_down(), 57 | 69 => self.color = self.color.with_code(7), 58 | 70 => self.color = self.color.with_code(10), 59 | 71 => self.color = self.color.with_code(13), 60 | 68 => self.color = self.color.with_code(14), 61 | 64 => self.color = self.color.with_code(15), 62 | 67 => self.color = self.color.with_code(16), 63 | 11 => self.animation_kind = AnimationKind::Flash, 64 | 15 => self.animation_kind = AnimationKind::Strobe, 65 | 19 => self.animation_kind = AnimationKind::Fade, 66 | 23 => self.animation_kind = AnimationKind::Smooth, 67 | x => { 68 | self.color = self.color.with_code(x as usize % 16); 69 | } 70 | } 71 | } 72 | 73 | fn switch_on(&mut self) { 74 | self.animation_kind = AnimationKind::Fire; 75 | self.color = IndexedColor::default(); 76 | self.on = true; 77 | self.overheat = false; 78 | } 79 | 80 | fn switch_off(&mut self) { 81 | self.on = false; 82 | } 83 | 84 | fn luma_up(&mut self) { 85 | let luma = self.color.luma(); 86 | if luma < 5 { 87 | self.color = self.color.with_luma(luma + 1); 88 | } 89 | } 90 | 91 | fn luma_down(&mut self) { 92 | let luma = self.color.luma(); 93 | if luma > 0 { 94 | self.color = self.color.with_luma(luma - 1); 95 | } 96 | } 97 | } 98 | 99 | #[derive(Clone, Copy)] 100 | pub enum AnimationKind { 101 | Static, 102 | Flash, 103 | Strobe, 104 | Fade, 105 | Smooth, 106 | Fire, 107 | Overheat, 108 | } 109 | 110 | #[derive(Clone, Copy, Default)] 111 | pub struct IndexedColor { 112 | code: usize, 113 | luma: usize, 114 | } 115 | 116 | impl IndexedColor { 117 | pub const OFF: Self = Self { 118 | code: usize::MAX, 119 | luma: 0, 120 | }; 121 | 122 | pub const RED: Self = Self { code: 1, luma: 0 }; 123 | 124 | const PALETTE: [(u8, u8, u8); 26] = [ 125 | (0xff, 0xff, 0xff), 126 | (0xff, 0x00, 0x00), 127 | (0x00, 0xff, 0x00), 128 | (0x00, 0x00, 0xff), 129 | (0xd3, 0x2f, 0x2f), 130 | (0x8b, 0xc3, 0x4a), 131 | (0x03, 0xa9, 0xf4), 132 | (0xff, 0x98, 0x00), 133 | (0x4d, 0xd0, 0xe1), 134 | (0x8c, 0x17, 0xe0), 135 | (0xff, 0x57, 0x22), 136 | (0x00, 0x96, 0x88), 137 | (0x9c, 0x27, 0xb0), 138 | (0xff, 0xeb, 0x3b), 139 | (0x3f, 0x51, 0xb5), 140 | (0xe9, 0x1e, 0x63), 141 | (0x03, 0x07, 0x1e), 142 | (0x37, 0x0f, 0x00), 143 | (0x6a, 0x0f, 0x00), 144 | (0x9d, 0x0f, 0x00), 145 | (0xd0, 0x0f, 0x00), 146 | (0x6d, 0x2f, 0x00), 147 | (0x7d, 0x3f, 0x10), 148 | (0x94, 0x4f, 0x00), 149 | (0xaa, 0x2f, 0x00), 150 | (0x00, 0x00, 0x00), 151 | ]; 152 | 153 | pub fn code(&self) -> usize { 154 | self.code 155 | } 156 | 157 | pub fn luma(&self) -> usize { 158 | self.luma 159 | } 160 | 161 | pub fn with_code(&self, code: usize) -> Self { 162 | Self { 163 | code, 164 | luma: self.luma, 165 | } 166 | } 167 | 168 | pub fn with_luma(&self, luma: usize) -> Self { 169 | assert!(self.luma <= 5); 170 | Self { 171 | luma, 172 | code: self.code, 173 | } 174 | } 175 | } 176 | 177 | impl From for RGB8 { 178 | fn from(color: IndexedColor) -> Self { 179 | if color.code > 25 { 180 | return RGB8::default(); 181 | } 182 | let (r, g, b) = IndexedColor::PALETTE[color.code]; 183 | assert!(color.luma <= 5); 184 | let shift = 5 - color.luma; 185 | RGB8::new(r >> shift, g >> shift, b >> shift) 186 | } 187 | } 188 | 189 | pub struct Animation { 190 | kind: AnimationKind, 191 | color: IndexedColor, 192 | cursor: usize, 193 | frame: usize, 194 | seed: usize, 195 | } 196 | 197 | impl Animation { 198 | pub fn new(kind: AnimationKind, frame: usize, color: IndexedColor) -> Self { 199 | Self { 200 | cursor: crate::STRIP_SIZE, 201 | kind, 202 | color, 203 | frame, 204 | seed: frame, 205 | } 206 | } 207 | } 208 | 209 | impl Iterator for Animation { 210 | type Item = RGB8; 211 | 212 | fn next(&mut self) -> Option { 213 | if self.cursor == 0 { 214 | return None; 215 | } 216 | let color = match self.kind { 217 | AnimationKind::Static => self.color, 218 | AnimationKind::Flash if self.frame % 10 < 5 => self.color, 219 | AnimationKind::Strobe if self.frame % 15 < 9 && self.frame % 2 == 0 => self.color, 220 | AnimationKind::Smooth => { 221 | let color = (self.frame >> 2) % 5; 222 | self.color.with_code(color * 3 + 1) 223 | } 224 | AnimationKind::Fade => { 225 | let mut luma = self.color.luma(); 226 | if luma < 1 { 227 | luma = 1; 228 | } 229 | let luma = luma.saturating_sub(5 - (self.frame >> 1) % 6); 230 | self.color.with_luma(luma) 231 | } 232 | AnimationKind::Fire => { 233 | self.seed = self.seed * 16_807 % 0x7fff_ffff; 234 | let rnd = ((self.frame + self.seed) as u8) as usize; 235 | self.color.with_code(21 + rnd % 4) 236 | } 237 | AnimationKind::Overheat if self.frame % 10 < 5 => { 238 | let color = self.color; 239 | self.color = IndexedColor::OFF; 240 | color 241 | } 242 | _ => IndexedColor::OFF, 243 | }; 244 | 245 | self.cursor -= 1; 246 | Some(color.into()) 247 | } 248 | } 249 | --------------------------------------------------------------------------------