From 4d2948fcb08a6f0e0d5c98771552a74e6d17cad3 Mon Sep 17 00:00:00 2001 From: binaryDiv Date: Wed, 12 Jun 2024 20:44:27 +0200 Subject: [PATCH] PCB: Replace controller with 2x6 pin header --- ergogen/config.yaml | 57 +++++----- ergogen/footprints/button_6x6.js | 48 --------- ergogen/footprints/pin_header_2x6.js | 71 +++++++++++++ ergogen/footprints/promicro_modified.js | 136 ------------------------ 4 files changed, 102 insertions(+), 210 deletions(-) delete mode 100644 ergogen/footprints/button_6x6.js create mode 100644 ergogen/footprints/pin_header_2x6.js delete mode 100644 ergogen/footprints/promicro_modified.js diff --git a/ergogen/config.yaml b/ergogen/config.yaml index c8498fb..15275ef 100644 --- a/ergogen/config.yaml +++ b/ergogen/config.yaml @@ -42,42 +42,53 @@ points: rows: # Modifier row (Ctrl, ..., but excluding the thumb keys) mod: + row_net: P9 # Bottom letter row (Shift, Backspace, ZXCV...) bottom: + row_net: P7 # Middle letter row (Esc, ASDFG...) home: + row_net: P5 # Top letter row (Tab, QWERT...) top: + row_net: P3 # Number row (`, 12345...) num: + row_net: P1 # Key columns (from left to right) columns: # Left-most column (`, Tab, Esc, Shift, Ctrl) outer: + key.column_net: P10 key.stagger: 0.25cy # First letter column (1, QA, ...) one: + key.column_net: P8 key.stagger: 0.25cy # Second letter column (2, WSZ) two: + key.column_net: P6 rows.mod.skip: true # Third letter column (3, EDX) three: + key.column_net: P4 rows.mod.skip: true # Fourth letter column (4, RFC) four: - rows.mod.skip: true + key.column_net: P2 key.stagger: -0.25cy + rows.mod.skip: true # Fifth letter column (5, TGV) five: - rows.mod.skip: true + key.column_net: P12 key.stagger: -0.25cy + rows.mod.skip: true # Thumb fan thumb: @@ -88,15 +99,20 @@ points: # Rotate the thumb keys around the bottom-left corner of the key key: + row_net: P9 origin: [ -0.5cx, -0.5cy ] splay: -8 # Define thumb keys columns: one: + key.column_net: P6 two: + key.column_net: P4 three: + key.column_net: P2 four: + key.column_net: P12 # Generate outlines that can be used in the PCB and for 3D models outlines: @@ -128,12 +144,13 @@ outlines: board_preview: - board - ^keys - # Pro Micro board - TODO: position? + # Pin header - what: rectangle operation: stack where: primary_five_num - size: [ 18, 32 ] - adjust.shift: [ cx + 2, 0.25cy ] + size: [ 5.2, 15.4 ] + adjust.rotate: 90 + adjust.shift: [ 0cx, cy - 2 ] # Cutouts for the switches switch_cutouts: @@ -163,8 +180,8 @@ pcbs: keycaps: true reverse: true hotswap: true - from: "{{colrow}}" - to: "{{row_net}}" + from: "{{column_net}}" + to: "{{colrow}}" diode: what: diode_smd @@ -175,28 +192,16 @@ pcbs: params: side: B from: "{{colrow}}" - to: "{{column_net}}" + to: "{{row_net}}" - controller: - what: promicro_modified + pin_header: + what: pin_header_2x6 where: ref: primary_five_num - rotate: -90 - shift: [ cx + 2, cy - 14 ] - params: - orientation: up - - # TODO: Place reset button - # reset_button: - # what: button_6x6 - # where: - # # TODO: Where? - # ref: pad_four_five - # shift: [ 0, 15 ] - # params: - # side: B - # from: GND - # to: RST + rotate: 90 + # The footprint's origin is on the first pin, so we need an offset of -6.35 / -1.27 (2.5 pins, 0.5 pins) to + # center the footprint. + shift: [ 0 - 6.35, cy - 2 - 1.27 ] # Mounting holes # TODO: Place these diff --git a/ergogen/footprints/button_6x6.js b/ergogen/footprints/button_6x6.js deleted file mode 100644 index 034877d..0000000 --- a/ergogen/footprints/button_6x6.js +++ /dev/null @@ -1,48 +0,0 @@ -// Tactile button 6x6mm -// Source: https://kicad.github.io/footprints/Button_Switch_SMD -module.exports = { - params: { - designator: 'B', - side: 'F', - from: undefined, - to: undefined - }, - body: p => ` - (module SW_Push_1P1T_NO_6x6mm_H9.5mm (layer F.Cu) (tedit 5CA1CA7F) - (descr "tactile push button, 6x6mm e.g. PTS645xx series, height=9.5mm") - (tags "tact sw push 6mm smd") - (attr smd) - - ${p.at /* parametric position */} - - ${'' /* footprint reference */} - (fp_text reference "${p.ref}" (at 0 -4.05) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1 1) (thickness 0.15)))) - (fp_text value "" (at 0 4.15) (layer F.SilkS) hide (effects (font (size 1 1) (thickness 0.15)))) - - ${'' /* outline */} - (fp_line (start -3 -3 ) (end -3 3 ) (layer ${p.side}.Fab) (width 0.1)) - (fp_line (start -3 3 ) (end 3 3 ) (layer ${p.side}.Fab) (width 0.1)) - (fp_line (start 3 3 ) (end 3 -3 ) (layer ${p.side}.Fab) (width 0.1)) - (fp_line (start 3 -3 ) (end -3 -3 ) (layer ${p.side}.Fab) (width 0.1)) - (fp_line (start 5 3.25) (end 5 -3.25) (layer ${p.side}.CrtYd) (width 0.05)) - (fp_line (start -5 -3.25) (end -5 3.25) (layer ${p.side}.CrtYd) (width 0.05)) - (fp_line (start -5 3.25) (end 5 3.25) (layer ${p.side}.CrtYd) (width 0.05)) - (fp_line (start -5 -3.25) (end 5 -3.25) (layer ${p.side}.CrtYd) (width 0.05)) - (fp_line (start 3.23 -3.23) (end 3.23 -3.2 ) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start 3.23 3.23) (end 3.23 3.2 ) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start -3.23 3.23) (end -3.23 3.2 ) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start -3.23 -3.2 ) (end -3.23 -3.23) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start 3.23 -1.3 ) (end 3.23 1.3 ) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start -3.23 -3.23) (end 3.23 -3.23) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start -3.23 -1.3 ) (end -3.23 1.3 ) (layer ${p.side}.SilkS) (width 0.12)) - (fp_line (start -3.23 3.23) (end 3.23 3.23) (layer ${p.side}.SilkS) (width 0.12)) - (fp_circle (center 0 0) (end 1.75 -0.05) (layer ${p.side}.Fab) (width 0.1)) - - ${'' /* pins */} - (pad 1 smd rect (at -3.975 -2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 1 smd rect (at 3.975 -2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.from}) - (pad 2 smd rect (at -3.975 2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - (pad 2 smd rect (at 3.975 2.25 ${p.r}) (size 1.55 1.3) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask) ${p.to}) - ) - ` -} diff --git a/ergogen/footprints/pin_header_2x6.js b/ergogen/footprints/pin_header_2x6.js new file mode 100644 index 0000000..1ca6687 --- /dev/null +++ b/ergogen/footprints/pin_header_2x6.js @@ -0,0 +1,71 @@ +// Pin header 2x06, 2.54mm pitch, vertical (THT) +// Source: https://kicad.github.io/footprints/Connector_PinHeader_2.54mm +module.exports = { + params: { + designator: 'J', + side: 'F', + P1: {type: 'net', value: 'P1'}, + P2: {type: 'net', value: 'P2'}, + P3: {type: 'net', value: 'P3'}, + P4: {type: 'net', value: 'P4'}, + P5: {type: 'net', value: 'P5'}, + P6: {type: 'net', value: 'P6'}, + P7: {type: 'net', value: 'P7'}, + P8: {type: 'net', value: 'P8'}, + P9: {type: 'net', value: 'P9'}, + P10: {type: 'net', value: 'P10'}, + P11: {type: 'net', value: 'P11'}, + P12: {type: 'net', value: 'P12'}, + }, + body: p => ` + (module PinHeader_2x06_P2.54mm_Vertical (layer F.Cu) (tedit 59FED5CC) + (descr "Through hole straight pin header, 2x06, 2.54mm pitch, double rows") + (tags "Through hole pin header THT 2x06 2.54mm double row") + + ${p.at /* parametric position */} + + ${'' /* footprint reference */} + (fp_text reference "${p.ref}" (at 1.27 -2.33) (layer ${p.side}.SilkS) ${p.ref_hide} (effects (font (size 1 1) (thickness 0.15)))) + (fp_text value "" (at 1.27 15.03) (layer ${p.side}.SilkS) hide (effects (font (size 1 1) (thickness 0.15)))) + + ${'' /* outline */} + (fp_line (start 0 -1.27) (end 3.81 -1.27) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start 3.81 -1.27) (end 3.81 13.97) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start 3.81 13.97) (end -1.27 13.97) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start -1.27 13.97) (end -1.27 0 ) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start -1.27 0 ) (end 0 -1.27) (layer ${p.side}.Fab) (width 0.1)) + (fp_line (start -1.33 14.03) (end 3.87 14.03) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end -1.33 14.03) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start 3.87 -1.33) (end 3.87 14.03) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.33 1.27) (end 1.27 1.27) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start 1.27 1.27) (end 1.27 -1.33) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start 1.27 -1.33) (end 3.87 -1.33) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.33 0 ) (end -1.33 -1.33) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer ${p.side}.SilkS) (width 0.12)) + (fp_line (start -1.8 -1.8 ) (end -1.8 14.5 ) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start -1.8 14.5 ) (end 4.35 14.5 ) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start 4.35 14.5 ) (end 4.35 -1.8 ) (layer ${p.side}.CrtYd) (width 0.05)) + (fp_line (start 4.35 -1.8 ) (end -1.8 -1.8 ) (layer ${p.side}.CrtYd) (width 0.05)) + + ${'' /* pins */} + (pad 1 thru_hole rect (at 0 0 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P1}) + (pad 2 thru_hole oval (at 2.54 0 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P2}) + (pad 3 thru_hole oval (at 0 2.54 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P3}) + (pad 4 thru_hole oval (at 2.54 2.54 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P4}) + (pad 5 thru_hole oval (at 0 5.08 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P5}) + (pad 6 thru_hole oval (at 2.54 5.08 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P6}) + (pad 7 thru_hole oval (at 0 7.62 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P7}) + (pad 8 thru_hole oval (at 2.54 7.62 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P8}) + (pad 9 thru_hole oval (at 0 10.16 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P9}) + (pad 10 thru_hole oval (at 2.54 10.16 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P10}) + (pad 11 thru_hole oval (at 0 12.7 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P11}) + (pad 12 thru_hole oval (at 2.54 12.7 ${p.r}) (size 1.7 1.7) (drill 1.0) (layers *.Cu *.Mask) ${p.P12}) + + (model \${KISYS3DMOD}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_2x06_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + `, +} diff --git a/ergogen/footprints/promicro_modified.js b/ergogen/footprints/promicro_modified.js deleted file mode 100644 index 9028823..0000000 --- a/ergogen/footprints/promicro_modified.js +++ /dev/null @@ -1,136 +0,0 @@ -// Modified version of promicro.js -// ------------------------------- -// Arduino ProMicro atmega32u4au -// Params -// orientation: default is down -// if down, power led will face the pcb -// if up, power led will face away from pcb - -module.exports = { - params: { - designator: 'MCU', - orientation: 'down', - RAW: {type: 'net', value: 'RAW'}, - GND: {type: 'net', value: 'GND'}, - RST: {type: 'net', value: 'RST'}, - VCC: {type: 'net', value: 'VCC'}, - P21: {type: 'net', value: 'P21'}, - P20: {type: 'net', value: 'P20'}, - P19: {type: 'net', value: 'P19'}, - P18: {type: 'net', value: 'P18'}, - P15: {type: 'net', value: 'P15'}, - P14: {type: 'net', value: 'P14'}, - P16: {type: 'net', value: 'P16'}, - P10: {type: 'net', value: 'P10'}, - P1: {type: 'net', value: 'P1'}, - P0: {type: 'net', value: 'P0'}, - P2: {type: 'net', value: 'P2'}, - P3: {type: 'net', value: 'P3'}, - P4: {type: 'net', value: 'P4'}, - P5: {type: 'net', value: 'P5'}, - P6: {type: 'net', value: 'P6'}, - P7: {type: 'net', value: 'P7'}, - P8: {type: 'net', value: 'P8'}, - P9: {type: 'net', value: 'P9'}, - }, - body: p => { - let def_neg, def_pos, side, mirror; - if (p.orientation === 'down') { - def_neg = '-'; - def_pos = ''; - side = 'B'; - mirror = '(justify mirror)'; - } else { - def_neg = ''; - def_pos = '-'; - side = 'F'; - mirror = ''; - } - - return ` - (module ProMicro (layer F.Cu) (tedit 5B307E4C) - ${p.at /* parametric position */} - - ${'' /* footprint reference */} - (fp_text reference "${p.ref}" (at 0 0) (layer ${side}.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15)))) - (fp_text value "" (at 0 0) (layer ${side}.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15)))) - - ${'' /* illustration of the (possible) USB port overhang */} - (fp_line (start -19.304 -3.81) (end -14.224 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -19.304 3.81) (end -19.304 -3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 3.81) (end -19.304 3.81) (layer Dwgs.User) (width 0.15)) - (fp_line (start -14.224 -3.81) (end -14.224 3.81) (layer Dwgs.User) (width 0.15)) - - ${'' /* component outline */} - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer F.SilkS) (width 0.15)) - - (fp_line (start -17.78 8.89) (end 15.24 8.89) (layer B.SilkS) (width 0.15)) - (fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer B.SilkS) (width 0.15)) - (fp_line (start 15.24 -8.89) (end -17.78 -8.89) (layer B.SilkS) (width 0.15)) - (fp_line (start -17.78 -8.89) (end -17.78 8.89) (layer B.SilkS) (width 0.15)) - - ${'' /* extra border around "RAW", in case the rectangular shape is not distinctive enough */} - (fp_line (start -15.24 ${def_pos}6.35) (end -12.7 ${def_pos}6.35) (layer ${side}.SilkS) (width 0.15)) - (fp_line (start -15.24 ${def_pos}6.35) (end -15.24 ${def_pos}8.89) (layer ${side}.SilkS) (width 0.15)) - (fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer ${side}.SilkS) (width 0.15)) - - ${'' /* pin names */} - (fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user GND (at -11.43 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user RST (at -8.89 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - - (fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user GND (at -8.89 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user GND (at -6.35 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - (fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.r + 90}) (layer ${side}.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) ${mirror})) - - ${'' /* and now the actual pins */} - (pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.r}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW}) - (pad 2 thru_hole circle (at -11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 3 thru_hole circle (at -8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RST}) - (pad 4 thru_hole circle (at -6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.VCC}) - (pad 5 thru_hole circle (at -3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P21}) - (pad 6 thru_hole circle (at -1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P20}) - (pad 7 thru_hole circle (at 1.27 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P19}) - (pad 8 thru_hole circle (at 3.81 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P18}) - (pad 9 thru_hole circle (at 6.35 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P15}) - (pad 10 thru_hole circle (at 8.89 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P14}) - (pad 11 thru_hole circle (at 11.43 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P16}) - (pad 12 thru_hole circle (at 13.97 ${def_pos}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P10}) - - (pad 13 thru_hole circle (at -13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P1}) - (pad 14 thru_hole circle (at -11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P0}) - (pad 15 thru_hole circle (at -8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 16 thru_hole circle (at -6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.GND}) - (pad 17 thru_hole circle (at -3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P2}) - (pad 18 thru_hole circle (at -1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P3}) - (pad 19 thru_hole circle (at 1.27 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P4}) - (pad 20 thru_hole circle (at 3.81 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P5}) - (pad 21 thru_hole circle (at 6.35 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P6}) - (pad 22 thru_hole circle (at 8.89 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P7}) - (pad 23 thru_hole circle (at 11.43 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P8}) - (pad 24 thru_hole circle (at 13.97 ${def_neg}7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.P9}) - ) - `; - } -}