gokul/flex-led-wristband

A flexible, rechargeable touch wristband PCB with MCP73831 Li-ion charging, switched 3.0 V regulation, ATtiny402 control, TTP223 capacitive touch sensing, and six charlieplexed red LEDs plus power/charge indicators.

Version
0.0.3
License
unset
Stars
0

lib/PowerSwitch.tsx

import { type ChipProps } from "tscircuit";
export const PowerSwitch = (props: ChipProps) => (
  <chip
    footprint={
      <footprint>
        <courtyardoutline
          outline={[
            { x: -5, y: 2.25 },
            { x: -5, y: -2.25 },
            { x: -3.25, y: -2.25 },
            { x: -3.25, y: -2.75 },
            { x: -2.5, y: -2.75 },
            { x: -2.5, y: -4.25 },
            { x: 2.5, y: -4.25 },
            { x: 2.5, y: -2.5 },
            { x: 3.25, y: -2.5 },
            { x: 3.25, y: -2.25 },
            { x: 5, y: -2.25 },
            { x: 5, y: 2.25 },
            { x: 3.5, y: 2.25 },
            { x: 3.5, y: 4.5 },
            { x: -3.5, y: 4.5 },
            { x: -3.5, y: 2.25 },
          ]}
          layer="top"
        />
        <hole pcbX="-3.4mm" pcbY="0mm" diameter="0.9mm" />
        <hole pcbX="3.4mm" pcbY="0mm" diameter="0.9mm" />
        <smtpad
          portHints={["1"]}
          pcbX="-2.5mm"
          pcbY="2.75mm"
          layer="top"
          width="1.2mm"
          height="2.5mm"
          shape="rect"
        />
        <smtpad
          portHints={["2"]}
          pcbX="0mm"
          pcbY="2.75mm"
          layer="top"
          width="1.2mm"
          height="2.5mm"
          shape="rect"
        />
        <smtpad
          portHints={["3"]}
          pcbX="2.5mm"
          pcbY="2.75mm"
          layer="top"
          width="1.2mm"
          height="2.5mm"
          shape="rect"
        />
        <silkscreenpath
          route={[
            { x: 3.2, y: 1.9 },
            { x: 4.6, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 4.6, y: 1.9 },
            { x: 4.6, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -4.6, y: -1.9 },
            { x: -4.6, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -4.6, y: 1.9 },
            { x: -3.2, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 1.8, y: 1.9 },
            { x: 0.7, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 0.7, y: 1.9 },
            { x: 0.7, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -0.7, y: 1.9 },
            { x: -1.8, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -1.8, y: 1.9 },
            { x: -1.8, y: 1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 4.6, y: -1.9 },
            { x: 2.9, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2.9, y: -1.9 },
            { x: 2.9, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2.9, y: -2.2 },
            { x: 2.1, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2.1, y: -2.2 },
            { x: 2.1, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2.1, y: -1.9 },
            { x: 0.4, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 0.4, y: -1.9 },
            { x: 0.4, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 0.4, y: -2.2 },
            { x: -0.4, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -0.4, y: -2.2 },
            { x: -0.4, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -0.4, y: -1.9 },
            { x: -2.1, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2.1, y: -1.9 },
            { x: -2.1, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2.1, y: -2.2 },
            { x: -2.9, y: -2.2 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2.9, y: -2.2 },
            { x: -2.9, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2.9, y: -1.9 },
            { x: -4.6, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -4.6, y: -1.9 },
            { x: -4.6, y: -1.9 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2, y: -3.8 },
            { x: -2, y: -3.3 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2, y: -3.3 },
            { x: -2, y: -3.3 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2, y: -3.8 },
            { x: -1.5, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -1.5, y: -3.8 },
            { x: -1.5, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2, y: -3.8 },
            { x: 1.5, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 1.5, y: -3.8 },
            { x: 1.5, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2, y: -3.8 },
            { x: 2, y: -3.3 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2, y: -3.3 },
            { x: 2, y: -3.3 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2, y: -3 },
            { x: 2, y: -2.5 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 2, y: -2.5 },
            { x: 2, y: -2.5 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2, y: -3 },
            { x: -2, y: -2.5 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -2, y: -2.5 },
            { x: -2, y: -2.5 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -1.2, y: -3.8 },
            { x: -0.7, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -0.7, y: -3.8 },
            { x: -0.7, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 1.2, y: -3.8 },
            { x: 0.7, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 0.7, y: -3.8 },
            { x: 0.7, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: 0.4, y: -3.8 },
            { x: -0.4, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <silkscreenpath
          route={[
            { x: -0.4, y: -3.8 },
            { x: -0.4, y: -3.8 },
          ]}
          strokeWidth={0.12}
        />
        <fabricationnotepath
          route={[
            { x: -4.5, y: 1.8 },
            { x: 4.5, y: 1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 4.5, y: 1.8 },
            { x: 4.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 4.5, y: -1.8 },
            { x: -4.4, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -4.4, y: -1.8 },
            { x: -4.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -4.5, y: -1.8 },
            { x: -4.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -4.5, y: 1.8 },
            { x: -4.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -4.5, y: -1.8 },
            { x: -4.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -1.5, y: -1.8 },
            { x: -1.5, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 0.3, y: -1.8 },
            { x: 0.3, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 0.3, y: -2.1 },
            { x: -0.3, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -0.3, y: -2.1 },
            { x: -0.3, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -0.3, y: -1.8 },
            { x: -0.3, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2.2, y: -1.8 },
            { x: -2.2, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2.2, y: -2.1 },
            { x: -2.8, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2.8, y: -2.1 },
            { x: -2.8, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2.8, y: -1.8 },
            { x: -2.8, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 2.2, y: -1.8 },
            { x: 2.2, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 2.2, y: -2.1 },
            { x: 2.8, y: -2.1 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 2.8, y: -2.1 },
            { x: 2.8, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: 2.8, y: -1.8 },
            { x: 2.8, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -0.5, y: -1.8 },
            { x: -0.5, y: -3.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -0.5, y: -3.8 },
            { x: -2, y: -3.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2, y: -3.8 },
            { x: -2, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
        <fabricationnotepath
          route={[
            { x: -2, y: -1.8 },
            { x: -2, y: -1.8 },
          ]}
          strokeWidth={0.1}
        />
      </footprint>
    }
    {...props}
  />
);