PCB: Replace controller with 2x6 pin header

This commit is contained in:
Lexi / Zoe 2024-06-12 20:44:27 +02:00
parent 5ee51ef8da
commit 4d2948fcb0
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
4 changed files with 102 additions and 210 deletions

View File

@ -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

View File

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

View File

@ -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))
)
)
`,
}

View File

@ -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})
)
`;
}
}