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))
}