gokul/macro-six-usbc

USB-powered ATmega32U4 controller board with protected/switched 5 V power, six tactile keys, rotary encoder, reset/boot/ISP interfaces, power LED, and six daisy-chained SK6812 RGB LEDs driven through MOSFETs.

Version
0.1.6
License
MIT
Stars
0

lib/controller.tsx

import { Fragment } from "react"
import { ATMEGA32U4_AU } from "../imports/ATMEGA32U4_AU"
import { X322516MLB4SI } from "../imports/X322516MLB4SI"
import { TS_1088_AR02016 } from "../imports/TS_1088_AR02016"
import { C, R } from "./passives"

export const Controller = () => (
  <>
    <ATMEGA32U4_AU name="U1" pcbX={39} pcbY={23}
      schWidth={2.5} schHeight={3.2}
      schPinArrangement={{ leftSide: ["pin3", "pin4", "pin13", "pin33", "pin16", "pin17"],
        topSide: ["pin2", "pin7", "pin14", "pin24", "pin34", "pin44"],
        bottomSide: ["pin5", "pin15", "pin23", "pin35", "pin43", "pin6", "pin42"],
        rightSide: ["pin18", "pin19", "pin20", "pin21", "pin25", "pin26", "pin27", "pin28", "pin29", "pin30", "pin31", "pin9", "pin10", "pin11"] }}
      connections={{ pin2: "net.VCC", pin7: "net.VCC", pin14: "net.VCC", pin24: "net.VCC", pin34: "net.VCC", pin44: "net.VCC",
        pin5: "net.GND", pin15: "net.GND", pin23: "net.GND", pin35: "net.GND", pin43: "net.GND",
        pin3: "net.USB_DM", pin4: "net.USB_DP", pin6: "net.UCAP", pin42: "net.AREF", pin13: "net.RESET", pin33: "net.HWB",
        pin16: "net.XTAL2", pin17: "net.XTAL1", pin18: "net.KEY1", pin19: "net.KEY2", pin20: "net.KEY3", pin21: "net.KEY4", pin25: "net.KEY5", pin26: "net.KEY6",
        pin27: "net.ENC_A", pin28: "net.ENC_B", pin29: "net.ENC_PUSH", pin30: "net.RGB_DATA", pin31: "net.RGB_GATE",
        pin9: "net.SCK", pin10: "net.MOSI", pin11: "net.MISO" }} />
      <X322516MLB4SI name="Y1" loadCapacitance="9pF" pcbX={50} pcbY={22.5} pcbRotation={270}
        connections={{ pin1: "net.XTAL1", pin3: "net.XTAL2", pin2: "net.GND", pin4: "net.GND" }} />
      <C name="C_X1" capacitance="12pF" part="C38523" pcbX={50} pcbY={26} connections={{ pin1: "net.XTAL1", pin2: "net.GND" }} />
      <C name="C_X2" capacitance="12pF" part="C38523" pcbX={50} pcbY={19} connections={{ pin1: "net.XTAL2", pin2: "net.GND" }} />
      {[{x:35.8,y:13.5},{x:48.5,y:16.5},{x:41,y:32},{x:29.5,y:27},{x:30,y:10.5}].map((pos,i)=>(
        <C key={i} name={`C_V${i + 1}`} capacitance="100nF" pcbX={pos.x} pcbY={pos.y} connections={{ pin1: "net.VCC", pin2: "net.GND" }} />
      ))}
      <C name="C_UCAP" capacitance="1uF" part="C15849" pcbX={39} pcbY={13.5} connections={{ pin1: "net.UCAP", pin2: "net.GND" }} />
      <C name="C_AREF" capacitance="100nF" pcbX={29.5} pcbY={22.5} connections={{ pin1: "net.AREF", pin2: "net.GND" }} />
      <R name="R_RESET" resistance="10k" part="C98220" pcbX={48.5} pcbY={13} connections={{ pin1: "net.VCC", pin2: "net.RESET" }} />
      <R name="R_HWB" resistance="10k" part="C98220" pcbX={43} pcbY={-15} connections={{ pin1: "net.VCC", pin2: "net.HWB" }} />
      <TS_1088_AR02016 name="SW_RESET" pcbX={36} pcbY={-19} connections={{ pin1: "net.RESET", pin2: "net.GND" }} />
      <TS_1088_AR02016 name="SW_BOOT" pcbX={45} pcbY={-19} connections={{ pin1: "net.HWB", pin2: "net.GND" }} />
      <chip doNotPlace manufacturerPartNumber="CUSTOM-ISP-PADS" pinAttributes={{pin1:{isPassive:true},pin2:{requiresPower:true},pin3:{isPassive:true},pin4:{isPassive:true},pin5:{isPassive:true},pin6:{requiresGround:true}}} name="ISP" pcbX={38} pcbY={-27} pinLabels={{pin1:"MISO",pin2:"VCC",pin3:"SCK",pin4:"MOSI",pin5:"RESET",pin6:"GND"}}
        footprint={<footprint><courtyardrect width={7.6} height={4.6} />{[[-2.54,1.27],[-2.54,-1.27],[0,1.27],[0,-1.27],[2.54,1.27],[2.54,-1.27]].map(([x,y],i)=>(<Fragment key={i}><smtpad pcbX={x} pcbY={y} radius={0.75} shape="circle" portHints={[`pin${i+1}`]} /></Fragment>))}</footprint>}
        connections={{pin1:"net.MISO",pin2:"net.VCC",pin3:"net.SCK",pin4:"net.MOSI",pin5:"net.RESET",pin6:"net.GND"}} />
  </>
)