tscircuit/sparkfun-boards

This code defines a detailed PCB schematic and physical footprint layout for various embedded hardware modules, mapping electrical pins, mechanical mounting holes, and silk-screen annotations for manufacturing and assembly.

Version
0.0.32
License
unset
Stars
3

tests/OutlineBoard.test.tsx

import { expect, test } from "bun:test"
import { Circuit } from "tscircuit"
import { outlineBuilder } from "../util/OutlineBuilder"

test("OutlineBoard", () => {
  const outline = outlineBuilder(-9, 11)
    .lineTo(11, 11)
    .corner({ radius: 1, turn: "ccw" })
    .lineTo(11, -7)
    .corner({ radius: 0.5, turn: "ccw" })
    .lineTo(10, -7)
    .corner({ radius: 0.5, turn: "cw" })
    .lineTo(10, -11)
    .lineTo(3.28, -11)
    .lineTo(3.28, -8)
    .arcTo(2.08, -8, { radius: 0.6, sweep: true })
    .lineTo(2.08, -11)
    .lineTo(-10, -11)
    .lineTo(-10, -7)
    .corner({ radius: 0.5, turn: "cw" })
    .lineTo(-11, -7)
    .corner({ radius: 0.5, turn: "ccw" })
    .lineTo(-11, 11)
    .corner({ radius: 1, turn: "ccw" })
    .toArray()

  const circuit = new Circuit()
  circuit.add(<board outline={outline}></board>)
  expect(outline).toMatchInlineSnapshot(`
    [
      {
        "x": -9,
        "y": 11,
      },
      {
        "x": 10,
        "y": 11,
      },
      {
        "x": 10.195090322016128,
        "y": 10.98078528040323,
      },
      {
        "x": 10.38268343236509,
        "y": 10.923879532511286,
      },
      {
        "x": 10.555570233019603,
        "y": 10.831469612302545,
      },
      {
        "x": 10.707106781186548,
        "y": 10.707106781186548,
      },
      {
        "x": 10.831469612302545,
        "y": 10.555570233019601,
      },
      {
        "x": 10.923879532511286,
        "y": 10.38268343236509,
      },
      {
        "x": 10.98078528040323,
        "y": 10.195090322016128,
      },
      {
        "x": 11,
        "y": 10,
      },
      {
        "x": 11,
        "y": -6.5,
      },
      {
        "x": 10.990392640201616,
        "y": -6.597545161008064,
      },
      {
        "x": 10.961939766255643,
        "y": -6.691341716182545,
      },
      {
        "x": 10.915734806151272,
        "y": -6.777785116509801,
      },
      {
        "x": 10.853553390593273,
        "y": -6.853553390593274,
      },
      {
        "x": 10.7777851165098,
        "y": -6.9157348061512725,
      },
      {
        "x": 10.691341716182546,
        "y": -6.961939766255643,
      },
      {
        "x": 10.597545161008064,
        "y": -6.990392640201615,
      },
      {
        "x": 10.5,
        "y": -7,
      },
      {
        "x": 10.402454838991936,
        "y": -7.009607359798385,
      },
      {
        "x": 10.308658283817454,
        "y": -7.038060233744357,
      },
      {
        "x": 10.2222148834902,
        "y": -7.0842651938487275,
      },
      {
        "x": 10.146446609406727,
        "y": -7.146446609406726,
      },
      {
        "x": 10.084265193848728,
        "y": -7.222214883490199,
      },
      {
        "x": 10.038060233744357,
        "y": -7.308658283817455,
      },
      {
        "x": 10.009607359798384,
        "y": -7.402454838991936,
      },
      {
        "x": 10,
        "y": -7.5,
      },
      {
        "x": 10,
        "y": -11,
      },
      {
        "x": 3.28,
        "y": -11,
      },
      {
        "x": 3.28,
        "y": -8,
      },
      {
        "x": 3.2684711660390393,
        "y": -7.882945808620388,
      },
      {
        "x": 3.2343277158029364,
        "y": -7.770389944543881,
      },
      {
        "x": 3.1788817629005806,
        "y": -7.666657866386814,
      },
      {
        "x": 3.104264064149398,
        "y": -7.575735939630326,
      },
      {
        "x": 3.013342135788035,
        "y": -7.50111824283469,
      },
      {
        "x": 2.909610056438437,
        "y": -7.445672292163401,
      },
      {
        "x": 2.7970541916275735,
        "y": -7.411528844348147,
      },
      {
        "x": 2.6799999999999997,
        "y": -7.400000012904785,
      },
      {
        "x": 2.5629458083724255,
        "y": -7.411528844348147,
      },
      {
        "x": 2.450389943561562,
        "y": -7.445672292163401,
      },
      {
        "x": 2.3466578642119647,
        "y": -7.50111824283469,
      },
      {
        "x": 2.255735935850602,
        "y": -7.575735939630325,
      },
      {
        "x": 2.1811182370994193,
        "y": -7.666657866386813,
      },
      {
        "x": 2.125672284197063,
        "y": -7.770389944543881,
      },
      {
        "x": 2.09152883396096,
        "y": -7.882945808620388,
      },
      {
        "x": 2.08,
        "y": -8,
      },
      {
        "x": 2.08,
        "y": -11,
      },
      {
        "x": -10,
        "y": -11,
      },
      {
        "x": -10,
        "y": -7.5,
      },
      {
        "x": -10.009607359798384,
        "y": -7.402454838991936,
      },
      {
        "x": -10.038060233744357,
        "y": -7.308658283817455,
      },
      {
        "x": -10.084265193848728,
        "y": -7.222214883490199,
      },
      {
        "x": -10.146446609406727,
        "y": -7.146446609406726,
      },
      {
        "x": -10.2222148834902,
        "y": -7.0842651938487275,
      },
      {
        "x": -10.308658283817454,
        "y": -7.038060233744357,
      },
      {
        "x": -10.402454838991936,
        "y": -7.009607359798385,
      },
      {
        "x": -10.5,
        "y": -7,
      },
      {
        "x": -10.597545161008064,
        "y": -6.990392640201615,
      },
      {
        "x": -10.691341716182546,
        "y": -6.961939766255643,
      },
      {
        "x": -10.7777851165098,
        "y": -6.9157348061512725,
      },
      {
        "x": -10.853553390593273,
        "y": -6.853553390593274,
      },
      {
        "x": -10.915734806151272,
        "y": -6.777785116509801,
      },
      {
        "x": -10.961939766255643,
        "y": -6.691341716182545,
      },
      {
        "x": -10.990392640201616,
        "y": -6.597545161008064,
      },
      {
        "x": -11,
        "y": -6.5,
      },
      {
        "x": -11,
        "y": 10,
      },
      {
        "x": -10.98078528040323,
        "y": 10.195090322016128,
      },
      {
        "x": -10.923879532511286,
        "y": 10.38268343236509,
      },
      {
        "x": -10.831469612302545,
        "y": 10.555570233019601,
      },
      {
        "x": -10.707106781186548,
        "y": 10.707106781186548,
      },
      {
        "x": -10.555570233019601,
        "y": 10.831469612302545,
      },
      {
        "x": -10.38268343236509,
        "y": 10.923879532511286,
      },
      {
        "x": -10.195090322016128,
        "y": 10.98078528040323,
      },
      {
        "x": -10,
        "y": 11,
      },
    ]
  `)
})