imrishabh18/rp2040-motor-controller

An RP2040-based NEMA17 stepper-motor controller with USB-C programming and PD motor-power negotiation, DRV8825 dual H-bridge drive, current/temperature telemetry, protected power filtering, status RGB LED, buzzer alarm, and optional magnetic encoder.

Version
1.0.41
License
unset
Stars
3

scripts/render-route-plan.tsx

import { Circuit } from 'tscircuit';
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
import Board from '../index.circuit';
import { canonicalRoutingInput } from '../routing/saved-routing';
const plan = JSON.parse(readFileSync(process.argv[2] ?? 'dist/feedback/route-plan.json','utf8'));
const routingAlgorithm=async(input:unknown)=>{
  if(canonicalRoutingInput(input)!==canonicalRoutingInput(plan.expectedInput)) throw new Error('Candidate routing input mismatch');
  const handlers=new Map<string,Function>();
  return {on(name:string,fn:Function){handlers.set(name,fn)},stop(){},start(){handlers.get('complete')?.({traces:structuredClone(plan.traces)})}};
};
const circuit=new Circuit();circuit.add(<Board finalizeGroundPours={false} routingAlgorithm={routingAlgorithm as any}/>);await circuit.renderUntilSettled();
const json=circuit.getCircuitJson();const output=process.argv[3] ?? 'dist/feedback/circuit.json';mkdirSync(output.slice(0,output.lastIndexOf('/')),{recursive:true});writeFileSync(output,JSON.stringify(json,null,2));
const errors=json.filter(e=>e.type.endsWith('_error'));console.log(JSON.stringify(errors,null,2));if(errors.length)process.exitCode=1;