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

scripts/check-native.ts

import { CircuitJsonToKicadPcbConverter, CircuitJsonToKicadProConverter } from "circuit-json-to-kicad"
import type { CircuitJson } from "circuit-json"
import { mkdirSync } from "node:fs"

mkdirSync("work", { recursive: true })
const circuitJson = await Bun.file("outputs/release/board.circuit.json").json() as CircuitJson
for (const projectName of ["final-check", "routes-only"]) {
  const auditCircuit = projectName === "routes-only" ? circuitJson.filter(element => element.type !== "pcb_copper_pour") : circuitJson
  const pcbFilename = `${projectName}.kicad_pcb`
  const pcb = new CircuitJsonToKicadPcbConverter(auditCircuit, { projectName })
  pcb.runUntilFinished()
  await Bun.write(`work/${pcbFilename}`, pcb.getOutputString())
  const project = new CircuitJsonToKicadProConverter(auditCircuit, { projectName, pcbFilename })
  project.runUntilFinished()
  const settings = project.getOutput()
  Object.assign(settings.board.design_settings.rules, {
    min_clearance: 0.1, min_track_width: 0.2, min_via_diameter: 0.6,
    min_through_hole_diameter: 0.3, min_hole_clearance: 0.2,
    min_hole_to_hole: 0.2, min_copper_edge_clearance: 0.3,
    min_text_height: 1, min_text_thickness: 0.15, min_silk_clearance: 0.15,
  })
  for (const netClass of settings.net_settings.classes) netClass.clearance = 0.1
  await Bun.write(`work/${projectName}.kicad_pro`, JSON.stringify(settings, null, 2))
}