Automating repetitive tasks

I am about to design a circuit with 100 LEDs, which will be arranged in a circle. I checked and PCBnew does have an option to distribute components in a “circular array” (I’m hoping it will be smart enough to put the LEDs in the right order), but I’m in the schematic editor now, trying to figure out if there is a way to easily add and manage 100 components of the same type.

Perhaps somebody did a design of this type and can offer hints?

I’ve made last week RGB LED matrix (16x32). Everything you need is: Copy component (C key), Repeat Last Item (Ins key) and block commands.

Well, you’re right — in the schematic editor at least, things are reasonably easy.

But I encountered a problem in PCBnew and I’m hoping someone can help. I tried to use a circular array to arrange all my LEDs in a circle. But it seems that this tool isn’t designed to arrange existing components, but instead it creates new ones (with a numbering scheme).

Am I missing something? Is there a way to take 100 LEDs and arrange them in a circle?

Unfortunately not. But I think there is a workaround. If your LEDs were numbered in incremental way without gaps, for example LED100, LED101, LED102, etc., you could place these LEDs using the automated tool before load any netlist.
Place one LED and edit Reference to match your schematic, here: LED (Important! Without a number.). Start automated tool. Set placement options and annotation options: check Restart numbering, Numbering type: Numerals, Numbering start: first LED number, here: 100.
When the LEDs are ready and have the annotation just like in the schematic, load the netlist using Footprint Selection by Reference. This way the netlist importer should use existing LEDs because they match to those from netlist.

2 Likes

I managed to get to a similar workflow. I delete all the leds except one in pcbnew, then create the circular array, and afterwards load the netlist. This works surprisingly well — I also used it to place the shift registers. Thanks :slight_smile:

3 Likes