Added new switch footprints, updated reversibility functionality, integrated hotswap footprints, added orientation to promicro, alphabetized index, and added net and paramter documentation
This commit is contained in:
parent
3e78e6e557
commit
1ff7e0746e
13 changed files with 483 additions and 377 deletions
|
@ -1,55 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
nets: ['A', 'B', 'C', 'D'],
|
|
||||||
params: {
|
|
||||||
class: 'T', // for TRRS
|
|
||||||
reverse: true
|
|
||||||
},
|
|
||||||
body: p => {
|
|
||||||
|
|
||||||
const reversal = (j) => {
|
|
||||||
if (j == true) return `
|
|
||||||
(pad 1 thru_hole oval (at 0 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A})
|
|
||||||
(pad 2 thru_hole oval (at -4.6 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.B})
|
|
||||||
(pad 3 thru_hole oval (at -4.6 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.C})
|
|
||||||
(pad 4 thru_hole oval (at -4.6 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.D})
|
|
||||||
(fp_line (start 0.5 -2) (end -5.1 -2) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.1 0) (end -5.1 -2) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.5 0) (end 0.5 -2) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.35 0) (end -5.35 12.1) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 0) (end 0.75 12.1) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 12.1) (end -5.35 12.1) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 0) (end -5.35 0) (layer B.SilkS) (width 0.15))
|
|
||||||
`
|
|
||||||
else return ''
|
|
||||||
}
|
|
||||||
|
|
||||||
return `
|
|
||||||
|
|
||||||
(module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5)
|
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
|
||||||
|
|
||||||
(fp_text reference REF** (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15))))
|
|
||||||
(fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
|
||||||
(fp_line (start 0.5 -2) (end -5.1 -2) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.1 0) (end -5.1 -2) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.5 0) (end 0.5 -2) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.35 0) (end -5.35 12.1) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 0) (end 0.75 12.1) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 12.1) (end -5.35 12.1) (layer F.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 0.75 0) (end -5.35 0) (layer F.SilkS) (width 0.15))
|
|
||||||
|
|
||||||
(pad 1 thru_hole oval (at -4.6 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A})
|
|
||||||
(pad 2 thru_hole oval (at 0 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.B})
|
|
||||||
(pad 3 thru_hole oval (at 0 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.C})
|
|
||||||
(pad 4 thru_hole oval (at 0 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.D})
|
|
||||||
|
|
||||||
${reversal(p.param.reverse)}
|
|
||||||
|
|
||||||
(pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
|
||||||
)
|
|
||||||
`
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,39 +1,78 @@
|
||||||
|
// Kailh Choc PG1350
|
||||||
|
// Nets
|
||||||
|
// from: corresponds to pin 1
|
||||||
|
// to: corresponds to pin 2
|
||||||
|
// Params
|
||||||
|
// hotswap: default is false
|
||||||
|
// if true, will include holes and pads for Kailh choc hotswap sockets
|
||||||
|
// reverse: default is false
|
||||||
|
// if true, will flip the footprint such that the pcb can be reversible
|
||||||
|
//
|
||||||
|
// note: hotswap and reverse can be used simultaneously
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
nets: ['from', 'to'],
|
nets: ['from', 'to'],
|
||||||
params: {
|
params: {
|
||||||
class: 'S'
|
class: 'S',
|
||||||
},
|
hotswap: false,
|
||||||
body: p => `
|
reverse: false
|
||||||
|
},
|
||||||
|
body: p => {
|
||||||
|
const standard = `
|
||||||
|
(module PG1350 (layer F.Cu) (tedit 5DD50112)
|
||||||
|
${p.at /* parametric position */}
|
||||||
|
|
||||||
(module PG1350 (layer F.Cu) (tedit 5DD50112)
|
${'' /* footprint reference */}
|
||||||
|
(fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15))))
|
||||||
|
(fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))))
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
${''/* corner marks */}
|
||||||
|
(fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
|
||||||
${'' /* footprint reference */}
|
(fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_text reference "${p.ref}" (at 0 0) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15))))
|
(fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))))
|
(fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15))
|
||||||
${''/* corner marks */}
|
(fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
|
(fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
|
(fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_line (start -6 -7) (end -7 -7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -7 7) (end -7 6) (layer Dwgs.User) (width 0.15))
|
${''/* middle shaft */}
|
||||||
(fp_line (start 7 6) (end 7 7) (layer Dwgs.User) (width 0.15))
|
(pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask))
|
||||||
(fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
|
|
||||||
|
|
||||||
${''/* pins */}
|
|
||||||
(pad 1 thru_hole circle (at 5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.from})
|
|
||||||
(pad 2 thru_hole circle (at 0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.to})
|
|
||||||
|
|
||||||
${''/* middle shaft */}
|
${''/* stabilizers */}
|
||||||
(pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask))
|
(pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
||||||
${''/* stabilizers */}
|
`
|
||||||
(pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
function pins(def_neg, def_pos, def_side) {
|
||||||
(pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
if(p.param.hotswap) {
|
||||||
)
|
return `
|
||||||
|
${'' /* holes */}
|
||||||
`
|
(pad "" np_thru_hole circle (at ${def_pos}5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
||||||
|
|
||||||
|
${'' /* net pads */}
|
||||||
|
(pad 1 smd rect (at ${def_neg}3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from})
|
||||||
|
(pad 2 smd rect (at ${def_pos}8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${''/* pins */}
|
||||||
|
(pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.from})
|
||||||
|
(pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.net.to})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(p.param.reverse) {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '', 'B')}
|
||||||
|
${pins('', '-', 'F')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '', 'B')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,59 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
nets: ['from', 'to'],
|
|
||||||
params: {
|
|
||||||
class: 'S',
|
|
||||||
reverse: true
|
|
||||||
},
|
|
||||||
body: p => {
|
|
||||||
|
|
||||||
const reversal = (j) => {
|
|
||||||
if (j == true) return `
|
|
||||||
(pad "" np_thru_hole circle (at -5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
|
||||||
(pad 1 smd rect (at 3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) ${p.net.from})
|
|
||||||
(pad 2 smd rect (at -8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers F.Cu F.Paste F.Mask) ${p.net.to})
|
|
||||||
`
|
|
||||||
else return ''
|
|
||||||
}
|
|
||||||
|
|
||||||
return `
|
|
||||||
(module Kailh_socket_PG1350_optional (layer F.Cu) (tedit 5DD50F3F)
|
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
|
||||||
|
|
||||||
${'' /* footprint reference */}
|
|
||||||
(fp_text reference "${p.ref}" (at 0 -8.255) (layer F.SilkS) ${p.ref_hide}
|
|
||||||
(effects (font (size 1 1) (thickness 0.15))))
|
|
||||||
(fp_text value "" (at 0 8.25) (layer F.Fab)
|
|
||||||
(effects (font (size 1 1) (thickness 0.15))))
|
|
||||||
|
|
||||||
|
|
||||||
(fp_line (start -6.9 6.9) (end 6.9 6.9) (layer Eco2.User) (width 0.15))
|
|
||||||
(fp_line (start 6.9 -6.9) (end -6.9 -6.9) (layer Eco2.User) (width 0.15))
|
|
||||||
(fp_line (start 6.9 -6.9) (end 6.9 6.9) (layer Eco2.User) (width 0.15))
|
|
||||||
(fp_line (start -6.9 6.9) (end -6.9 -6.9) (layer Eco2.User) (width 0.15))
|
|
||||||
|
|
||||||
${''/* Outline */}
|
|
||||||
(fp_line (start -7.5 -7.5) (end 7.5 -7.5) (layer F.Fab) (width 0.15))
|
|
||||||
(fp_line (start 7.5 -7.5) (end 7.5 7.5) (layer F.Fab) (width 0.15))
|
|
||||||
(fp_line (start 7.5 7.5) (end -7.5 7.5) (layer F.Fab) (width 0.15))
|
|
||||||
(fp_line (start -7.5 7.5) (end -7.5 -7.5) (layer F.Fab) (width 0.15))
|
|
||||||
|
|
||||||
${'' /* holes */}
|
|
||||||
(pad "" np_thru_hole circle (at -5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 5.5 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 5 -3.75) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 0 -5.95) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
|
||||||
|
|
||||||
${'' /* net pads */}
|
|
||||||
(pad 1 smd rect (at -3.275 -5.95 ${p.rot}) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) ${p.net.from})
|
|
||||||
(pad 2 smd rect (at 8.275 -3.75 ${p.rot}) (size 2.6 2.6) (layers B.Cu B.Paste B.Mask) ${p.net.to})
|
|
||||||
|
|
||||||
${reversal(p.param.reverse)}
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
`
|
|
||||||
}
|
|
||||||
}
|
|
84
src/footprints/chocmini.js
Normal file
84
src/footprints/chocmini.js
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
// Kailh Choc PG1232
|
||||||
|
// Nets
|
||||||
|
// from: corresponds to pin 1
|
||||||
|
// to: corresponds to pin 2
|
||||||
|
// Params
|
||||||
|
// reverse: default is false
|
||||||
|
// if true, will flip the footprint such that the pcb can be reversible
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
nets: ['from', 'to'],
|
||||||
|
params: {
|
||||||
|
class: 'S',
|
||||||
|
side: 'F',
|
||||||
|
reverse: false
|
||||||
|
},
|
||||||
|
body: p => {
|
||||||
|
const standard = `
|
||||||
|
(module lib:Kailh_PG1232 (layer F.Cu) (tedit 5E1ADAC2)
|
||||||
|
${p.at /* parametric position */}
|
||||||
|
|
||||||
|
${'' /* footprint reference */}
|
||||||
|
(fp_text reference REF** (at 0 7.4) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
(fp_text value Kailh_PG1232 (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
|
||||||
|
${''/* corner marks */}
|
||||||
|
(fp_line (start 9 -8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 9 8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -9 8.5) (end 9 8.5) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -9 -8.5) (end -9 8.5) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 2.25 2.95) (end 5.95 2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -2.25 2.95) (end -5.95 2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 2.25 4) (end 2.25 2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -2.25 4) (end 2.25 4) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -2.25 2.95) (end -2.25 4) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -6.75 6.25) (end -6.75 -6.25) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 6.75 6.25) (end -6.75 6.25) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 6.75 -6.25) (end 6.75 6.25) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -6.75 -6.25) (end 6.75 -6.25) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -5.95 2.95) (end -5.95 -2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 5.95 -2.95) (end 5.95 2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -5.95 -2.95) (end 5.95 -2.95) (layer Dwgs.User) (width 0.12))
|
||||||
|
|
||||||
|
${''/* stabilizers */}
|
||||||
|
(pad 3 thru_hole circle (at 5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2))
|
||||||
|
(pad 4 thru_hole circle (at -5.3 -4.75) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) (clearance 0.2))
|
||||||
|
`
|
||||||
|
function pins(def_neg, def_pos) {
|
||||||
|
return `
|
||||||
|
${''/* middle shaft */}
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}0 3.5 ${p.rot}) (size 4.7 1) (drill oval 4.7 1) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_neg}2.2 3.5 ${90 + p.rot}) (size 1.2 0.3) (drill oval 1.2 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}2.2 3.5 ${90 + p.rot}) (size 1.2 0.3) (drill oval 1.2 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}0 3.95 ${p.rot}) (size 4.7 0.3) (drill oval 4.7 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}5.36 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}4.59 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}4.2 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_neg}4.2 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_neg}4.59 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_neg}5.9 0 ${90 + p.rot}) (size 6.1 0.3) (drill oval 6.1 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}5.9 0 ${90 + p.rot}) (size 6.1 0.3) (drill oval 6.1 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}0 2.9 ${p.rot}) (size 12.1 0.3) (drill oval 12.1 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}0 -2.9 ${p.rot}) (size 12.1 0.3) (drill oval 12.1 0.3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_neg}5.36 0 ${p.rot}) (size 1 5.9) (drill oval 1 5.9) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole oval (at ${def_pos}0 0 ${p.rot}) (size 11.85 5.9) (drill oval 11.85 5.9) (layers *.Cu *.Mask))
|
||||||
|
|
||||||
|
${''/* pins */}
|
||||||
|
(pad 1 thru_hole circle (at ${def_neg}4.58 5.1) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.from} (clearance 0.2))
|
||||||
|
(pad 2 thru_hole circle (at ${def_pos}2 5.4) (size 1.6 1.6) (drill 1.1) (layers *.Cu *.Mask) ${p.net.to} (clearance 0.2))
|
||||||
|
`
|
||||||
|
}
|
||||||
|
if(p.param.reverse){
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '')}
|
||||||
|
${pins('', '-')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,19 +1,17 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mx: require('./mx'),
|
|
||||||
mx_hotswap: require('./mx_hotswap'),
|
|
||||||
alps: require('./alps'),
|
alps: require('./alps'),
|
||||||
choc: require('./choc'),
|
|
||||||
choc_hotswap: require('./choc_hotswap'),
|
|
||||||
diode: require('./diode'),
|
|
||||||
promicro: require('./promicro'),
|
|
||||||
slider: require('./slider'),
|
|
||||||
button: require('./button'),
|
button: require('./button'),
|
||||||
rgb: require('./rgb'),
|
choc: require('./choc'),
|
||||||
|
chocmini: require('./chocmini'),
|
||||||
|
diode: require('./diode'),
|
||||||
jstph: require('./jstph'),
|
jstph: require('./jstph'),
|
||||||
|
mx: require('./mx'),
|
||||||
pad: require('./pad'),
|
pad: require('./pad'),
|
||||||
|
promicro: require('./promicro'),
|
||||||
|
rgb: require('./rgb'),
|
||||||
rotary: require('./rotary'),
|
rotary: require('./rotary'),
|
||||||
// Fresh prints
|
scrollwheel: require('./scrollwheel'),
|
||||||
promicro_front: require('./promicro_front'),
|
slider: require('./slider'),
|
||||||
trrs: require('./TRRS-PJ-320A-dual'),
|
trrs: require('./trrs'),
|
||||||
via: require('./via.js')
|
via: require('./via'),
|
||||||
}
|
}
|
|
@ -1,12 +1,25 @@
|
||||||
|
// Any MX switch
|
||||||
|
// Nets
|
||||||
|
// from: corresponds to pin 1
|
||||||
|
// to: corresponds to pin 2
|
||||||
|
// Params
|
||||||
|
// hotswap: default is false
|
||||||
|
// if true, will include holes and pads for Kailh MX hotswap sockets
|
||||||
|
// reverse: default is false
|
||||||
|
// if true, will flip the footprint such that the pcb can be reversible
|
||||||
|
//
|
||||||
|
// note: hotswap and reverse can be used simultaneously
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
nets: ['from', 'to'],
|
nets: ['from', 'to'],
|
||||||
params: {
|
params: {
|
||||||
class: 'S'
|
class: 'S',
|
||||||
|
hotswap: false,
|
||||||
|
reverse: false
|
||||||
},
|
},
|
||||||
body: p => `
|
body: p => {
|
||||||
|
const standard = `
|
||||||
(module MX (layer F.Cu) (tedit 5DD4F656)
|
(module MX (layer F.Cu) (tedit 5DD4F656)
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
${p.at /* parametric position */}
|
||||||
|
|
||||||
${'' /* footprint reference */}
|
${'' /* footprint reference */}
|
||||||
|
@ -22,18 +35,45 @@ module.exports = {
|
||||||
(fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
|
(fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
|
(fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
|
||||||
(fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
|
(fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
|
||||||
|
|
||||||
${''/* pins */}
|
|
||||||
(pad 1 thru_hole circle (at 2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.from})
|
|
||||||
(pad 2 thru_hole circle (at -3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.to})
|
|
||||||
|
|
||||||
${''/* middle shaft */}
|
${''/* middle shaft */}
|
||||||
(pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask))
|
(pad "" np_thru_hole circle (at 0 0) (size 3.9878 3.9878) (drill 3.9878) (layers *.Cu *.Mask))
|
||||||
|
|
||||||
${''/* stabilizers */}
|
${''/* stabilizers */}
|
||||||
(pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
(pad "" np_thru_hole circle (at 5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
||||||
(pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
(pad "" np_thru_hole circle (at -5.08 0) (size 1.7018 1.7018) (drill 1.7018) (layers *.Cu *.Mask))
|
||||||
)
|
)
|
||||||
|
`
|
||||||
`
|
function pins(def_neg, def_pos, def_side) {
|
||||||
|
if(p.param.hotswap == TRUE) {
|
||||||
|
return `
|
||||||
|
${'' /* holes */}
|
||||||
|
(pad "" np_thru_hole circle (at ${def_pos}2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole circle (at ${def_neg}3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
||||||
|
|
||||||
|
${'' /* net pads */}
|
||||||
|
(pad 1 smd rect (at ${def_neg}7.085 -2.54 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.from})
|
||||||
|
(pad 2 smd rect (at ${def_pos}5.842 -5.08 180) (size 2.55 2.5) (layers ${def_side}.Cu ${def_side}.Paste ${def_side}.Mask) ${p.net.to})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${''/* pins */}
|
||||||
|
(pad 1 thru_hole circle (at ${def_pos}2.54 -5.08) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.from})
|
||||||
|
(pad 2 thru_hole circle (at ${def_neg}3.81 -2.54) (size 2.286 2.286) (drill 1.4986) (layers *.Cu *.Mask) ${p.net.to})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(p.param.reverse){
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '', 'B')}
|
||||||
|
${pins('', '-', 'F')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '', 'B')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,62 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
nets: ['from', 'to'],
|
|
||||||
params: {
|
|
||||||
class: 'S'
|
|
||||||
},
|
|
||||||
body: p => `
|
|
||||||
|
|
||||||
(module MX_Hotswap (layer F.Cu) (tedit 5DD4F656)
|
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
|
||||||
|
|
||||||
${'' /* footprint reference */}
|
|
||||||
(fp_text reference "${p.ref}" (at 7.1 8.2) (layer F.SilkS) ${p.ref_hide} (effects (font (size 1.27 1.27) (thickness 0.15))))
|
|
||||||
(fp_text value "" (at 0 0) (layer F.SilkS) hide (effects (font (size 1.27 1.27) (thickness 0.15))))
|
|
||||||
|
|
||||||
${'' /* silk stuff */}
|
|
||||||
(fp_line (start -7 7) (end -6 7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 7 -7) (end 7 -6) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -7 -7) (end -6 -7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 7 7) (end 7 6) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 6 7) (end 7 7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -7 6) (end -7 7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 7 -7) (end 6 -7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -7 -6) (end -7 -7) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -9.525 9.525) (end -9.525 -9.525) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 9.525 9.525) (end -9.525 9.525) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start 9.525 -9.525) (end 9.525 9.525) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -9.525 -9.525) (end 9.525 -9.525) (layer Dwgs.User) (width 0.15))
|
|
||||||
(fp_line (start -5.8 -4.05) (end -5.8 -4.7) (layer B.SilkS) (width 0.3))
|
|
||||||
(fp_line (start -5.3 -1.6) (end -5.3 -3.399999) (layer B.SilkS) (width 0.8))
|
|
||||||
(fp_line (start -4.17 -5.1) (end -4.17 -2.86) (layer B.SilkS) (width 3))
|
|
||||||
(fp_line (start 4.2 -3.25) (end 2.9 -3.3) (layer B.SilkS) (width 0.5))
|
|
||||||
(fp_line (start 3.9 -6) (end 3.9 -3.5) (layer B.SilkS) (width 1))
|
|
||||||
(fp_line (start 2.6 -4.8) (end -4.1 -4.8) (layer B.SilkS) (width 3.5))
|
|
||||||
(fp_line (start 4.4 -3) (end 4.4 -6.6) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 4.38 -4) (end 4.38 -6.25) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.9 -3.95) (end -5.7 -3.95) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.65 -5.55) (end -5.65 -1.1) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.9 -4.7) (end -5.9 -3.95) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -5.65 -1.1) (end -2.62 -1.1) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start -0.4 -3) (end 4.4 -3) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_line (start 4.4 -6.6) (end -3.800001 -6.6) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_arc (start -0.465 -0.83) (end -0.4 -3) (angle -84) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_arc (start -3.9 -4.6) (end -3.800001 -6.6) (angle -90) (layer B.SilkS) (width 0.15))
|
|
||||||
(fp_arc (start -0.865 -1.23) (end -0.8 -3.4) (angle -84) (layer B.SilkS) (width 1))
|
|
||||||
(fp_line (start -5.45 -1.3) (end -3 -1.3) (layer B.SilkS) (width 0.5))
|
|
||||||
(fp_line (start 4.25 -6.4) (end 3 -6.4) (layer B.SilkS) (width 0.4))
|
|
||||||
|
|
||||||
${'' /* holes */}
|
|
||||||
(pad "" np_thru_hole circle (at 2.54 -5.08) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at -3.81 -2.54) (size 3 3) (drill 3) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at -5.08 0) (size 1.9 1.9) (drill 1.9) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 5.08 0) (size 1.9 1.9) (drill 1.9) (layers *.Cu *.Mask))
|
|
||||||
(pad "" np_thru_hole circle (at 0 0 90) (size 4.1 4.1) (drill 4.1) (layers *.Cu *.Mask))
|
|
||||||
|
|
||||||
${'' /* net pads */}
|
|
||||||
(pad 1 smd rect (at -7.085 -2.54 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) ${p.net.from})
|
|
||||||
(pad 2 smd rect (at 5.842 -5.08 180) (size 2.55 2.5) (layers B.Cu B.Paste B.Mask) ${p.net.to})
|
|
||||||
)
|
|
||||||
|
|
||||||
`
|
|
||||||
}
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
// 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 = {
|
module.exports = {
|
||||||
static_nets: [
|
static_nets: [
|
||||||
'RAW', 'GND', 'RST', 'VCC',
|
'RAW', 'GND', 'RST', 'VCC',
|
||||||
|
@ -7,12 +13,12 @@ module.exports = {
|
||||||
'P5', 'P6', 'P7', 'P8', 'P9'
|
'P5', 'P6', 'P7', 'P8', 'P9'
|
||||||
],
|
],
|
||||||
params: {
|
params: {
|
||||||
class: 'C' // for Controller
|
class: 'C', // for Controller
|
||||||
|
orientation: 'down'
|
||||||
},
|
},
|
||||||
body: p => `
|
body: p => {
|
||||||
|
const standard = `
|
||||||
(module ProMicro (layer F.Cu) (tedit 5B307E4C)
|
(module ProMicro (layer F.Cu) (tedit 5B307E4C)
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
${p.at /* parametric position */}
|
||||||
|
|
||||||
${'' /* footprint reference */}
|
${'' /* footprint reference */}
|
||||||
|
@ -30,65 +36,79 @@ module.exports = {
|
||||||
(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 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 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 -17.78 8.89) (layer F.SilkS) (width 0.15))
|
||||||
|
`
|
||||||
|
function pins(def_neg, def_pos) {
|
||||||
|
return `
|
||||||
|
${''/* 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 F.SilkS) (width 0.15))
|
||||||
|
(fp_line (start -15.24 ${def_pos}6.35) (end -15.24 ${def_pos}8.89) (layer F.SilkS) (width 0.15))
|
||||||
|
(fp_line (start -12.7 ${def_pos}6.35) (end -12.7 ${def_pos}8.89) (layer F.SilkS) (width 0.15))
|
||||||
|
|
||||||
${''/* extra border around "RAW", in case the rectangular shape is not distinctive enough */}
|
${''/* pin names */}
|
||||||
(fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.15))
|
(fp_text user RAW (at -13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_line (start -15.24 6.35) (end -15.24 8.89) (layer F.SilkS) (width 0.15))
|
(fp_text user GND (at -11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.15))
|
(fp_text user RST (at -8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
|
(fp_text user VCC (at -6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
${''/* pin names */}
|
(fp_text user P21 (at -3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user RAW (at -13.97 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P20 (at -1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user GND (at -11.43 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P19 (at 1.27 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user RST (at -8.89 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P18 (at 3.81 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user VCC (at -6.35 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P15 (at 6.35 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user P21 (at -3.81 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P14 (at 8.89 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user P20 (at -1.27 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P16 (at 11.43 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user P19 (at 1.27 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
(fp_text user P10 (at 13.97 ${def_pos}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(fp_text user P18 (at 3.81 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P15 (at 6.35 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P14 (at 8.89 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P16 (at 11.43 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P10 (at 13.97 4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
|
|
||||||
(fp_text user P01 (at -13.97 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P00 (at -11.43 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user GND (at -8.89 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user GND (at -6.35 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P02 (at -3.81 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P03 (at -1.27 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P04 (at 1.27 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P05 (at 3.81 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P06 (at 6.35 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P07 (at 8.89 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P08 (at 11.43 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
(fp_text user P09 (at 13.97 -4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
|
||||||
|
|
||||||
${''/* and now the actual pins */}
|
|
||||||
(pad 1 thru_hole rect (at -13.97 7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RAW})
|
|
||||||
(pad 2 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
|
||||||
(pad 3 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RST})
|
|
||||||
(pad 4 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.VCC})
|
|
||||||
(pad 5 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P21})
|
|
||||||
(pad 6 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P20})
|
|
||||||
(pad 7 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P19})
|
|
||||||
(pad 8 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P18})
|
|
||||||
(pad 9 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P15})
|
|
||||||
(pad 10 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P14})
|
|
||||||
(pad 11 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P16})
|
|
||||||
(pad 12 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P10})
|
|
||||||
|
|
||||||
(pad 13 thru_hole circle (at -13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P1})
|
(fp_text user P01 (at -13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 14 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P0})
|
(fp_text user P00 (at -11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 15 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
(fp_text user GND (at -8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 16 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
(fp_text user GND (at -6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 17 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P2})
|
(fp_text user P02 (at -3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 18 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P3})
|
(fp_text user P03 (at -1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 19 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P4})
|
(fp_text user P04 (at 1.27 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 20 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P5})
|
(fp_text user P05 (at 3.81 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 21 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P6})
|
(fp_text user P06 (at 6.35 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 22 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P7})
|
(fp_text user P07 (at 8.89 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 23 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P8})
|
(fp_text user P08 (at 11.43 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
(pad 24 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P9})
|
(fp_text user P09 (at 13.97 ${def_neg}4.8 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
|
||||||
)
|
|
||||||
`
|
${''/* and now the actual pins */}
|
||||||
}
|
(pad 1 thru_hole rect (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.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.net.P9})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
if(p.param.orientation == 'down') {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('', '-')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,65 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
static_nets: [
|
|
||||||
'RAW', 'GND', 'RST', 'VCC',
|
|
||||||
'P21', 'P20', 'P19', 'P18',
|
|
||||||
'P15', 'P14', 'P16', 'P10',
|
|
||||||
'P1', 'P0', 'P2', 'P3', 'P4',
|
|
||||||
'P5', 'P6', 'P7', 'P8', 'P9'
|
|
||||||
],
|
|
||||||
params: {
|
|
||||||
class: 'C' // for Controller
|
|
||||||
},
|
|
||||||
body: p => `
|
|
||||||
|
|
||||||
(module ArduinoProMicro-TopSide (layer F.Cu) (tedit 591BD5DD)
|
|
||||||
|
|
||||||
${p.at /* parametric position */}
|
|
||||||
(fp_text value "Arduino Pro Micro" (at 0 0) (layer F.SilkS) hide
|
|
||||||
(effects (font (size 1.27 1.524) (thickness 0.2032)))
|
|
||||||
)
|
|
||||||
(fp_text user TX0 (at -13.9 4.6 90) (layer B.SilkS)
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
|
||||||
)
|
|
||||||
(fp_text user RAW (at -13.9 -4.7 90) (layer B.SilkS)
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
|
||||||
)
|
|
||||||
(fp_text user RAW (at -13.9 -4.6 90) (layer F.SilkS)
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)))
|
|
||||||
)
|
|
||||||
(fp_text user TX0 (at -13.9 4.5 90) (layer F.SilkS)
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)))
|
|
||||||
)
|
|
||||||
(fp_line (start -15.24 -8.89) (end -15.24 8.89) (layer F.SilkS) (width 0.381))
|
|
||||||
(fp_line (start -15.24 8.89) (end 15.24 8.89) (layer F.SilkS) (width 0.381))
|
|
||||||
(fp_line (start 15.24 8.89) (end 15.24 -8.89) (layer F.SilkS) (width 0.381))
|
|
||||||
(fp_line (start 15.24 -8.89) (end -15.24 -8.89) (layer F.SilkS) (width 0.381))
|
|
||||||
(fp_line (start -15.24 6.35) (end -12.7 6.35) (layer F.SilkS) (width 0.381))
|
|
||||||
(fp_line (start -12.7 6.35) (end -12.7 8.89) (layer F.SilkS) (width 0.381))
|
|
||||||
(pad 1 thru_hole rect (at -13.97 -7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RAW})
|
|
||||||
(pad 2 thru_hole circle (at -11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
|
||||||
(pad 3 thru_hole circle (at -8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.RST})
|
|
||||||
(pad 4 thru_hole circle (at -6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.VCC})
|
|
||||||
(pad 5 thru_hole circle (at -3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P21})
|
|
||||||
(pad 6 thru_hole circle (at -1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P20})
|
|
||||||
(pad 7 thru_hole circle (at 1.27 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P19})
|
|
||||||
(pad 8 thru_hole circle (at 3.81 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P18})
|
|
||||||
(pad 9 thru_hole circle (at 6.35 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P15})
|
|
||||||
(pad 10 thru_hole circle (at 8.89 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P14})
|
|
||||||
(pad 11 thru_hole circle (at 11.43 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P16})
|
|
||||||
(pad 12 thru_hole circle (at 13.97 -7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P10})
|
|
||||||
|
|
||||||
(pad 13 thru_hole circle (at -13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P1})
|
|
||||||
(pad 14 thru_hole circle (at -11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P0})
|
|
||||||
(pad 15 thru_hole circle (at -8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
|
||||||
(pad 16 thru_hole circle (at -6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.GND})
|
|
||||||
(pad 17 thru_hole circle (at -3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P2})
|
|
||||||
(pad 18 thru_hole circle (at -1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P3})
|
|
||||||
(pad 19 thru_hole circle (at 1.27 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P4})
|
|
||||||
(pad 20 thru_hole circle (at 3.81 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P5})
|
|
||||||
(pad 21 thru_hole circle (at 6.35 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P6})
|
|
||||||
(pad 22 thru_hole circle (at 8.89 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P7})
|
|
||||||
(pad 23 thru_hole circle (at 11.43 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P8})
|
|
||||||
(pad 24 thru_hole circle (at 13.97 7.62 0) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.net.P9})
|
|
||||||
)
|
|
||||||
`
|
|
||||||
}
|
|
|
@ -1,5 +1,14 @@
|
||||||
|
// EC11 rotary encoder
|
||||||
|
//
|
||||||
|
// Nets
|
||||||
|
// from: corresponds to switch pin 1 (for button presses)
|
||||||
|
// to: corresponds to switch pin 2 (for button presses)
|
||||||
|
// A: corresponds to pin 1 (for rotary)
|
||||||
|
// B: corresponds to pin 2 (for rotary, should be GND)
|
||||||
|
// C: corresponds to pin 3 (for rotary)
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
nets: ['A', 'B', 'C', 'from', 'to'],
|
nets: ['from', 'to', 'A', 'B', 'C'],
|
||||||
params: {
|
params: {
|
||||||
class: 'R'
|
class: 'R'
|
||||||
},
|
},
|
||||||
|
|
79
src/footprints/scrollwheel.js
Normal file
79
src/footprints/scrollwheel.js
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
// Panasonic EVQWGD001 horizontal rotary encoder
|
||||||
|
//
|
||||||
|
// __________________
|
||||||
|
// (f) (t) | |
|
||||||
|
// | (1) | |
|
||||||
|
// | (2) | |
|
||||||
|
// | (3) | |
|
||||||
|
// | (4) | |
|
||||||
|
// |_( )___________|_|
|
||||||
|
//
|
||||||
|
// Nets
|
||||||
|
// from: corresponds to switch pin 1 (for button presses)
|
||||||
|
// to: corresponds to switch pin 2 (for button presses)
|
||||||
|
// A: corresponds to pin 1 (for rotary)
|
||||||
|
// B: corresponds to pin 2 (for rotary, should be GND)
|
||||||
|
// C: corresponds to pin 3 (for rotary)
|
||||||
|
// D: corresponds to pin 4 (for rotary, unused)
|
||||||
|
// Params
|
||||||
|
// reverse: default is false
|
||||||
|
// if true, will flip the footprint such that the pcb can be reversible
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
nets: ['from', 'to', 'A', 'B', 'C', 'D'],
|
||||||
|
params: {
|
||||||
|
class: 'S',
|
||||||
|
reverse: false
|
||||||
|
},
|
||||||
|
body: p => {
|
||||||
|
standard = `
|
||||||
|
(module RollerEncoder_Panasonic_EVQWGD001 (layer F.Cu) (tedit 6040A10C)
|
||||||
|
${p.at /* parametric position */}
|
||||||
|
(fp_text reference REF** (at 0 0 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
(fp_text value RollerEncoder_Panasonic_EVQWGD001 (at -0.1 9 ${p.rot}) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
|
||||||
|
${'' /* corner marks */}
|
||||||
|
(fp_line (start -8.4 -6.4) (end 8.4 -6.4) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start 8.4 7.4) (end -8.4 7.4) (layer Dwgs.User) (width 0.12))
|
||||||
|
(fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer Dwgs.User) (width 0.12))
|
||||||
|
`
|
||||||
|
function pins(def_neg, def_pos) {
|
||||||
|
return `
|
||||||
|
${'' /* edge cuts */}
|
||||||
|
(fp_line (start ${def_pos}9.8 7.3) (end ${def_pos}9.8 -6.3) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_line (start ${def_pos}7.4 -6.3) (end ${def_pos}7.4 7.3) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_line (start ${def_pos}9.5 -6.6) (end ${def_pos}7.7 -6.6) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_line (start ${def_pos}7.7 7.6) (end ${def_pos}9.5 7.6) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_arc (start ${def_pos}7.7 7.3) (end ${def_pos}7.4 7.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_arc (start ${def_pos}9.5 7.3) (end ${def_pos}9.5 7.6) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_arc (start ${def_pos}7.7 -6.3) (end ${def_pos}7.7 -6.6) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15))
|
||||||
|
(fp_arc (start ${def_pos}9.5 -6.3) (end ${def_pos}9.8 -6.3) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15))
|
||||||
|
|
||||||
|
${'' /* pins */}
|
||||||
|
(pad S1 thru_hole circle (at ${def_neg}6.85 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.from})
|
||||||
|
(pad S2 thru_hole circle (at ${def_neg}5 -6.2 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.to})
|
||||||
|
(pad A thru_hole circle (at ${def_neg}5.625 -3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.A})
|
||||||
|
(pad B thru_hole circle (at ${def_neg}5.625 -1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.B})
|
||||||
|
(pad C thru_hole circle (at ${def_neg}5.625 1.27 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.C})
|
||||||
|
(pad D thru_hole circle (at ${def_neg}5.625 3.81 ${p.rot}) (size 1.6 1.6) (drill 0.9) (layers *.Cu *.Mask) ${p.net.D})
|
||||||
|
|
||||||
|
${'' /* stabilizer */}
|
||||||
|
(pad "" np_thru_hole circle (at ${def_neg}5.625 6.3 ${p.rot}) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
||||||
|
`
|
||||||
|
}
|
||||||
|
if(p.param.reverse) {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '')}
|
||||||
|
${pins('', '-')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-', '')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
77
src/footprints/trrs.js
Normal file
77
src/footprints/trrs.js
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
// TRRS-PJ-320A-dual
|
||||||
|
// _________________
|
||||||
|
// | (1) (3) (4)|
|
||||||
|
// | |
|
||||||
|
// |___(2)__________|
|
||||||
|
//
|
||||||
|
// Nets
|
||||||
|
// A: corresponds to pin 1
|
||||||
|
// B: corresponds to pin 2
|
||||||
|
// C: corresponds to pin 3
|
||||||
|
// D: corresponds to pin 4
|
||||||
|
// Params
|
||||||
|
// reverse: default is false
|
||||||
|
// if true, will flip the footprint such that the pcb can be reversible
|
||||||
|
// symmetric: default is false
|
||||||
|
// if true, will only work if reverse is also true
|
||||||
|
// this will cause the footprint to be symmetrical on each half
|
||||||
|
// pins 1 and 2 must be identical if symmetric is true, as they will overlap
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
nets: ['A', 'B', 'C', 'D'],
|
||||||
|
params: {
|
||||||
|
class: 'T', // for TRRS
|
||||||
|
reverse: false,
|
||||||
|
symmetric: false
|
||||||
|
},
|
||||||
|
body: p => {
|
||||||
|
const standard = `
|
||||||
|
(module TRRS-PJ-320A-dual (layer F.Cu) (tedit 5970F8E5)
|
||||||
|
|
||||||
|
${p.at /* parametric position */}
|
||||||
|
|
||||||
|
${'' /* footprint reference */}
|
||||||
|
(fp_text reference REF** (at 0 14.2) (layer Dwgs.User) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
(fp_text value TRRS-PJ-320A-dual (at 0 -5.6) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
|
||||||
|
${''/* corner marks */}
|
||||||
|
(fp_line (start 0.5 -2) (end -5.1 -2) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start -5.1 0) (end -5.1 -2) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start 0.5 0) (end 0.5 -2) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start -5.35 0) (end -5.35 12.1) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start 0.75 0) (end 0.75 12.1) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start 0.75 12.1) (end -5.35 12.1) (layer Dwgs.User) (width 0.15))
|
||||||
|
(fp_line (start 0.75 0) (end -5.35 0) (layer Dwgs.User) (width 0.15))
|
||||||
|
|
||||||
|
${''/* stabilizers */}
|
||||||
|
(pad "" np_thru_hole circle (at -2.3 8.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
||||||
|
(pad "" np_thru_hole circle (at -2.3 1.6) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask))
|
||||||
|
`
|
||||||
|
function pins(def_neg, def_pos) {
|
||||||
|
return `
|
||||||
|
(pad 1 thru_hole oval (at ${def_neg} 11.3 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.A})
|
||||||
|
(pad 2 thru_hole oval (at ${def_pos} 10.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.B})
|
||||||
|
(pad 3 thru_hole oval (at ${def_pos} 6.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.C})
|
||||||
|
(pad 4 thru_hole oval (at ${def_pos} 3.2 ${p.rot}) (size 1.6 2.2) (drill oval 0.9 1.5) (layers *.Cu *.Mask) ${p.net.D})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
if(p.param.reverse & p.param.symmetric) {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('0', '-4.6')}
|
||||||
|
${pins('-4.6', '0')})
|
||||||
|
`
|
||||||
|
} else if(p.param.reverse) {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-4.6', '0')}
|
||||||
|
${pins('4.6', '0')})
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
return `
|
||||||
|
${standard}
|
||||||
|
${pins('-4.6', '0')})
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,17 +1,18 @@
|
||||||
|
// Via
|
||||||
|
// Nets
|
||||||
|
// from: the net this via should be connected to
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
nets: ['from'],
|
nets: ['from'],
|
||||||
body: p => `
|
body: p => `
|
||||||
|
(module VIA-0.6mm (layer F.Cu) (tedit 591DBFB0)
|
||||||
|
${p.at /* parametric position */}
|
||||||
|
${'' /* footprint reference */}
|
||||||
|
(fp_text reference REF** (at 0 1.4) (layer F.SilkS) hide (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
(fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide (effects (font (size 1 1) (thickness 0.15))))
|
||||||
|
|
||||||
(module VIA-0.6mm (layer F.Cu) (tedit 591DBFB0)
|
${'' /* via */}
|
||||||
|
(pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.from})
|
||||||
${p.at /* parametric position */}
|
)
|
||||||
(fp_text reference REF** (at 0 1.4) (layer F.SilkS) hide
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)))
|
|
||||||
)
|
|
||||||
(fp_text value VIA-0.6mm (at 0 -1.4) (layer F.Fab) hide
|
|
||||||
(effects (font (size 1 1) (thickness 0.15)))
|
|
||||||
)
|
|
||||||
(pad 1 thru_hole circle (at 0 0) (size 0.6 0.6) (drill 0.3) (layers *.Cu) (zone_connect 2) ${p.net.from})
|
|
||||||
)
|
|
||||||
`
|
`
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue