move corax56 in own folder

This commit is contained in:
daniel
2024-02-10 13:30:30 +01:00
parent ddad4ba393
commit 029a0dbdb2
43 changed files with 1 additions and 1 deletions

720
corax56/ergogen/config.yaml Normal file
View File

@@ -0,0 +1,720 @@
units:
kx: cx # cx=18
ky: cy # cy=17
mbkx: 17.5
mbky: 16.5
padding: 2
px: kx+padding
py: ky+padding
mcu_height: 34
mcu_width: 18
# distance keys to mcu
mcu_padding: 1.5
scrollwheel_width: 17
scrollwheel_height: 14
screw_diameter: 4.7
screw_hole: 4.1
screen_screw_diameter: 4
screen_screw_hole: 2.2
switchplate_switch_cutout: 14
switchplate_scrollwheel_cutout_x: 17.5
switchplate_scrollwheel_cutout_y: 14.5
switchplate_screw_diameter: 3.3
switchplate_screw_hole: 2.2
points:
rotate: 5
zones:
matrix:
# fix placement on kicad
anchor.shift: [50, -150]
key:
tags: [switch]
padding: 1ky
spread: 1kx
columns:
outer2:
rows:
mod:
skip: true
bottom.skip: true
home:
tags: [switch_top]
bind: [0, 5, 0, 0]
row_net: col0
top.skip: true
num.skip: true
key.column_net: row0
outer:
rows:
num.skip: true
mod.skip: true
key:
column_net: row0
pinky:
rows:
mod.skip: true
key:
origin: [0, 8]
column_net: row1
ring:
rows:
mod.skip: true
key:
origin: [0, 8]
stagger: 0.66ky
splay: -5
column_net: row2
middle:
key:
stagger: 0.33ky
column_net: row3
rows:
mod:
column_net: row1
index:
key:
stagger: -0.33ky
column_net: row4
rows:
mod:
column_net: row2
inner:
rows:
mod.skip: true
key:
stagger: -2.5
column_net: row5
rows:
mod:
row_net: col4
tags: [switch_bottom]
bottom:
row_net: col3
tags: [switch_top]
home:
row_net: col2
tags: [switch_bottom]
top:
row_net: col1
tags: [switch_top]
num:
row_net: col0
tags: [switch_bottom]
thumbs:
anchor:
ref: matrix_middle_home
shift: [38, -44]
key:
tags: [switch]
padding: 1ky
spread: 1kx
columns:
layer:
key:
splay: -15
column_net: row3
space:
key:
width: 1.5kx
splay: 75
shift: [13-kx, -3]
column_net: row4
tags: [switch_space]
rows:
cluster:
row_net: col4
scrollwheel:
anchor:
ref: matrix_inner_bottom
columns:
scrollwheel:
key:
tags: [scrollwheel]
shift: [kx+mcu_padding-1.25, 0]
column_net: row5
width: scrollwheel_width
height: scrollwheel_height
rows:
scrollwheel:
row_net: col4
mcu:
anchor:
ref: matrix_inner_num
columns:
mcu:
key:
tags: [mcu]
width: mcu_height # footprint width/height unintuitive
height: mcu_width
rotate: -90
shift: [kx+mcu_padding, -mcu_width/2-0.3]
screw_top_left:
anchor:
ref.aggregate.parts: [matrix_ring_num, matrix_ring_top]
shift: [-11, 0]
columns.screw.key.tags: [screw]
screw_top_right:
anchor:
ref.aggregate.parts: [matrix_index_num, matrix_inner_num, matrix_index_top, matrix_inner_top]
columns.screw.key.tags: [screw]
screw_bottom_left:
anchor:
ref.aggregate.parts: [matrix_outer_home, matrix_outer_bottom, matrix_pinky_home, matrix_pinky_bottom]
columns.screw.key.tags: [screw]
screw_bottom_right:
anchor:
ref.aggregate.parts: [matrix_index_bottom, matrix_index_mod]
shift: [-0.5kx, 0]
columns.screw.key.tags: [screw]
screw_thumb:
anchor:
ref.aggregate.parts: [thumbs_layer_cluster, thumbs_space_cluster]
shift: [9, 7]
columns.screw.key.tags: [screw]
outlines:
board:
- what: polygon
operation: stack
fillet: 2
points:
- ref: matrix_outer2_home
shift: [-0.5px, -0.5py]
- ref: matrix_outer2_home
shift: [-0.5px, 0.5py]
- ref: matrix_outer_top
shift: [-0.5px, 0.5py]
- ref: matrix_pinky_num
shift: [-0.5px, 0.5py]
- ref: matrix_ring_num
shift: [-0.5px, 0.5py]
- ref: matrix_middle_num
shift: [-0.5px, 0.5py]
- ref: matrix_middle_num
shift: [0.5px, 0.5py]
- ref: matrix_inner_num
shift: [0.5px, 0.5py]
- ref: matrix_inner_num
shift: [0.5px+mcu_padding+mcu_width+0.25, 0.5py]
- ref: matrix_inner_bottom
shift: [0.5px+mcu_padding+mcu_width+0.25, -0.5py]
- ref: thumbs_space_cluster
shift: [0.5px, -0.5py]
- ref: thumbs_space_cluster
shift: [-0.5px, -0.5py]
- ref: matrix_index_mod
shift: [-0.5px, -0.5py]
- ref: matrix_pinky_bottom
shift: [0.5px, -0.5py]
- ref: matrix_outer_bottom
shift: [-0.5px, -0.5py]
_switchplate_base:
- what: polygon
operation: stack
fillet: 2
points:
- ref: matrix_outer2_home
shift: [-0.5px, -0.5py]
- ref: matrix_outer2_home
shift: [-0.5px, 0.5py]
- ref: matrix_outer_top
shift: [-0.5px, 0.5py]
- ref: matrix_pinky_num
shift: [-0.5px, 0.5py]
- ref: matrix_ring_num
shift: [-0.5px, 0.5py]
- ref: matrix_middle_num
shift: [-0.5px, 0.5py]
- ref: matrix_middle_num
shift: [0.5px, 0.5py]
- ref: matrix_inner_num
shift: [0.5px-0.5, 0.5py]
- ref: matrix_inner_bottom
shift: [0.5px-0.5, 0.5py+2.5]
- ref: matrix_inner_bottom
shift: [0.5px+mcu_padding+mcu_width+0.25, 0.5py+2.5]
- ref: matrix_inner_bottom
shift: [0.5px+mcu_padding+mcu_width+0.25, -0.5py]
- ref: thumbs_space_cluster
shift: [0.5px, -0.5py]
- ref: thumbs_space_cluster
shift: [-0.5px, -0.5py]
- ref: matrix_index_mod
shift: [-0.5px, -0.5py]
- ref: matrix_pinky_bottom
shift: [0.5px, -0.5py]
- ref: matrix_outer_bottom
shift: [-0.5px, -0.5py]
_switch_cutout:
- what: rectangle
where: [switch, switch_top, switch_bottom, switch_space]
size: switchplate_switch_cutout
bound: false
_scrollwheel_cutout:
- what: rectangle
where: [scrollwheel]
size: [switchplate_scrollwheel_cutout_x, switchplate_scrollwheel_cutout_y]
bound: false
_screw_holes:
- what: circle
where: [screw]
radius: 0.5switchplate_screw_hole
switchplate:
- what: outline
name: _switchplate_base
- what: outline
name: _switch_cutout
operation: subtract
- what: outline
name: _scrollwheel_cutout
operation: subtract
case:
- what: outline
name: board
- what: outline
name: _screw_holes
operation: subtract
pcbs:
keyboard:
outlines.main.outline: board
footprints:
choc_hotswap:
what: choc
where: [switch, switch_space, switch_bottom, switch_top]
params:
keycaps: true
reverse: true
hotswap: true
from: "{{column_net}}"
to: "{{colrow}}"
adjust:
rotate: 180
diode_bottom:
what: diode
where: [switch, switch_bottom]
params:
from: "{{colrow}}"
to: "{{row_net}}"
adjust:
rotate: 0
shift: [0, -9.5]
diode_top:
what: diode
where: [switch_top]
params:
from: "{{colrow}}"
to: "{{row_net}}"
adjust:
rotate: 0
shift: [0, 5.2]
diode_space:
what: diode
where: [switch_space]
params:
from: "{{colrow}}"
to: "{{row_net}}"
adjust:
rotate: -90
# 8.275 is exactly above the pad
shift: [8.275, 1]
scrollwheel:
what: scrollwheel_mirrored
where: [scrollwheel]
params:
from: "{{column_net}}"
to: "{{colrow}}"
A: ENCB_undef
B: GND_ENCA
C: ENCA_GND
D: undef_ENCB
scroll_diode:
what: diode
where: [scrollwheel]
params:
from: "{{colrow}}"
to: "{{row_net}}"
adjust:
shift: [-5, -9]
jumper_sw_left_a:
what: jumper
where: [scrollwheel]
params:
side: B
to: ENCB_undef
from: ENCB
adjust:
rotate: 90
shift: [-3, 3.81]
jumper_sw_left_gnd:
what: jumper
where: [scrollwheel]
params:
side: B
to: GND_ENCA
from: GND
adjust:
rotate: 90
shift: [-3, 1.27]
jumper_sw_left_ENCA:
what: jumper
where: [scrollwheel]
params:
side: B
to: ENCA_GND
from: ENCA
adjust:
rotate: 90
shift: [-3, -1.27]
jumper_sw_right_a:
what: jumper
where: [scrollwheel]
params:
side: F
to: undef_ENCB
from: ENCB
adjust:
rotate: 90
shift: [-3, -3.81]
jumper_sw_right_gnd:
what: jumper
where: [scrollwheel]
params:
side: F
to: ENCA_GND
from: GND
adjust:
rotate: 90
shift: [-3, -1.27]
jumper_sw_right_ENCA:
what: jumper
where: [scrollwheel]
params:
side: F
to: GND_ENCA
from: ENCA
adjust:
rotate: 90
shift: [-3, 1.27]
nicenano:
what: nicenano
where: mcu
params:
orientation: down
RAW: RAW_P1
GND1: GND_P0
RST: RST_GND
VCC: VCC_GND
P21: ENCA
P20: ENCB
P19: row0
P18: row1
P15: row2
P14: row3
P16: row4
P10: row5
P1: P1_RAW
P0: P0_GND
GND2: GND_RST
GND3: GND_VCC
P2: SDA
P3: SCL
P4: CS
P5: col0
P6: col1
P7: col2
P8: col3
P9: col4
jumper_left_raw:
what: jumper
where: mcu
params:
from: RAW
to: RAW_P1
side: B
adjust:
shift: [-11.45, -2.5]
rotate: 180
jumper_left_rst:
what: jumper
where: mcu
params:
from: RST
to: RST_GND
side: B
adjust:
shift: [-8.9, -2.5]
rotate: 180
jumper_left_vcc:
what: jumper
where: mcu
params:
from: VCC
to: VCC_GND
side: B
adjust:
shift: [-6.35, -2.5]
rotate: 180
jumper_left_gnd:
what: jumper
where: mcu
params:
from: GND
to: GND_RST
side: B
adjust:
shift: [-8.9, 2.5]
jumper_right_raw:
what: jumper
where: mcu
params:
from: RAW
to: P1_RAW
side: F
adjust:
shift: [-11.45, 2.5]
jumper_right_rst:
what: jumper
where: mcu
params:
from: RST
to: GND_RST
side: F
adjust:
shift: [-8.9, 2.5]
jumper_right_vcc:
what: jumper
where: mcu
params:
from: VCC
to: GND_VCC
side: F
adjust:
shift: [-6.35, 2.5]
jumper_right_gnd:
what: jumper
where: mcu
params:
from: GND
to: RST_GND
side: F
adjust:
shift: [-8.9, -2.5]
rotate: 180
niceview:
what: niceview
where: mcu
adjust:
shift: [20.5, 0]
rotate: 180
params:
outline: true
side: 'F'
SDA: NN_SDA_CS
SCL: NN_SCL_GND
VCC: NN_VCC
GND: NN_GND_SCL
CS: NN_CS_SDA
jumper_nv_left_sda:
what: jumper
where: mcu
params:
from: SDA
to: NN_SDA_CS
side: B
adjust:
shift: [20.50-2.5, -5.08]
rotate: -90
jumper_nv_left_scl:
what: jumper
where: mcu
params:
from: SCL
to: NN_SCL_GND
side: B
adjust:
shift: [20.50-2.5, -2.54]
rotate: -90
jumper_nv_left_vcc:
what: jumper
where: mcu
params:
from: VCC
to: NN_VCC
side: B
adjust:
shift: [20.50-2.5, 0]
rotate: -90
jumper_nv_left_gnd:
what: jumper
where: mcu
params:
from: GND
to: NN_GND_SCL
side: B
adjust:
shift: [20.50-2.5, 2.54]
rotate: -90
jumper_nv_left_cs:
what: jumper
where: mcu
params:
from: CS
to: NN_CS_SDA
side: B
adjust:
shift: [20.50-2.5, 5.08]
rotate: -90
jumper_nv_right_sda:
what: jumper
where: mcu
params:
from: SDA
to: NN_CS_SDA
side: F
adjust:
shift: [20.50-2.5, 5.08]
rotate: -90
jumper_nv_right_scl:
what: jumper
where: mcu
params:
from: SCL
to: NN_GND_SCL
side: F
adjust:
shift: [20.50-2.5, 2.54]
rotate: -90
jumper_nv_right_vcc:
what: jumper
where: mcu
params:
from: VCC
to: NN_VCC
side: F
adjust:
shift: [20.50-2.5, 0]
rotate: -90
jumper_nv_right_gnd:
what: jumper
where: mcu
params:
from: GND
to: NN_SCL_GND
side: F
adjust:
shift: [20.50-2.5, -2.54]
rotate: -90
jumper_nv_right_cs:
what: jumper
where: mcu
params:
from: CS
to: NN_SDA_CS
side: F
adjust:
shift: [20.50-2.5, -5.08]
rotate: -90
slider:
what: slider_reversible
where: mcu
adjust:
shift: [-17.1, 0]
rotate: 90
params:
side: F
reverse: true
from: switch_from
to: RAW
battery:
what: battery
where: mcu
adjust:
shift: [-17, 0]
params:
RAW: switch_from
reset:
what: reset
where: mcu
params:
from: GND
to: RST
adjust:
shift: [10+mcu_height/2, 0]
rotate: -90
plexi_inner:
what: hole
where: mcu
params:
size: screen_screw_diameter
drill: screen_screw_hole
adjust:
shift: [10+mcu_height/2, -mcu_width/2+1.5]
plexi_outer:
what: hole
where: mcu
params:
size: screen_screw_diameter
drill: screen_screw_hole
adjust:
shift: [10+mcu_height/2, mcu_width/2-1.5]
screw_holes:
what: hole
where: [screw]
params:
size: screw_diameter
drill: screw_hole
left_text:
what: text
where: matrix_middle_home
params:
text: "Left Hand Front"
side: F
knockout: true
fontsize: 1.6
adjust:
shift: [0, 4]
rotate: 90
right_text:
what: text
where: matrix_middle_home
params:
text: "Right Hand Front"
side: B
knockout: true
fontsize: 1.6
adjust:
rotate: 90
shift: [0, 4]
order_number_text:
what: text
where: [switch_space]
params:
side: B
text: "JLCJLCJLCJLC"
adjust:
rotate: 10
shift: [-9.5, 10]
name_text:
what: text
where: matrix_middle_mod
params:
text: "Corax56 rev. 1.1"
adjust:
rotate: 82
shift: [-9, -11]
name_text_right:
what: text
where: matrix_middle_mod
params:
side: B
text: "Corax56 rev. 1.1"
adjust:
rotate: 82
shift: [-9, -11]
switchplate:
outlines.main.outline: switchplate
footprints:
- what: hole
where: screw
params:
size: switchplate_screw_diameter
drill: switchplate_screw_hole

View File

@@ -0,0 +1,26 @@
module.exports = {
params: {
designator: 'Battery',
RAW: { type: 'net', value: 'RAW' },
GND: { type: 'net', value: 'GND' },
},
body: p => `
(module lib:niceview_headers (layer F.Cu) (tedit 648E0265)
${p.at /* parametric position */}
${''/* pin names */}
(fp_text user + (at 0 6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
(fp_text user - (at 0 -6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
(fp_text user + (at 0 6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
(fp_text user - (at 0 -6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15))))
${''/* pins */}
(pad 1 thru_hole rect (at 0 7.75 ${p.rot}) (size 1.4 1.4) (drill 0.8) (layers *.Cu *.SilkS *.Mask) ${p.RAW.str})
(pad 2 thru_hole circle (at 0 -7.75 ${p.rot}) (size 1.4 1.4) (drill 0.8) (layers *.Cu *.SilkS *.Mask) ${p.GND.str})
)
`
}

View File

@@ -0,0 +1,101 @@
// 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
// keycaps: default is false
// if true, will add choc sized keycap box around the footprint
//
// note: hotswap and reverse can be used simultaneously
module.exports = {
params: {
designator: 'S',
hotswap: false,
reverse: false,
keycaps: false,
from: undefined,
to: undefined
},
body: p => {
const standard = `
(module PG1350 (layer F.Cu) (tedit 5DD50112)
${p.at /* parametric position */}
${'' /* 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))))
${''/* middle shaft */}
(pad "" np_thru_hole circle (at 0 0) (size 3.429 3.429) (drill 3.429) (layers *.Cu *.Mask))
${''/* stabilizers */}
(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))
`
const keycap = `
${'' /* keycap marks */}
(fp_line (start -9 -8.5) (end 9 -8.5) (layer Dwgs.User) (width 0.15))
(fp_line (start 9 -8.5) (end 9 8.5) (layer Dwgs.User) (width 0.15))
(fp_line (start 9 8.5) (end -9 8.5) (layer Dwgs.User) (width 0.15))
(fp_line (start -9 8.5) (end -9 -8.5) (layer Dwgs.User) (width 0.15))
`
function pins(def_neg, def_pos, def_side) {
if(p.hotswap) {
return `
${''/* corner marks */}
(fp_line (start -7 -6) (end -7 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -7 7) (end -6 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -6 -7) (end -7 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -7 7) (end -7 6) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 6) (end 7 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 -7) (end 6 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 6 7) (end 7 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 -7) (end 7 -6) (layer ${def_side}.SilkS) (width 0.15))
${'' /* 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.from.str})
(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.to.str})
`
} else {
return `
${''/* corner marks */}
(fp_line (start -7 -6) (end -7 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -7 7) (end -6 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -6 -7) (end -7 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start -7 7) (end -7 6) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 6) (end 7 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 -7) (end 6 -7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 6 7) (end 7 7) (layer ${def_side}.SilkS) (width 0.15))
(fp_line (start 7 -7) (end 7 -6) (layer ${def_side}.SilkS) (width 0.15))
${''/* pins */}
(pad 1 thru_hole circle (at ${def_pos}5 -3.8) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.from.str})
(pad 2 thru_hole circle (at ${def_pos}0 -5.9) (size 2.032 2.032) (drill 1.27) (layers *.Cu *.Mask) ${p.to.str})
`
}
}
if(p.reverse) {
return `
${standard}
${p.keycaps ? keycap : ''}
${pins('-', '', 'B')}
${pins('', '-', 'F')})
`
} else {
return `
${standard}
${p.keycaps ? keycap : ''}
${pins('-', '', 'B')})
`
}
}
}

View File

@@ -0,0 +1,46 @@
module.exports = {
params: {
designator: 'D',
from: undefined,
to: undefined
},
body: p => `
(module ComboDiode (layer F.Cu) (tedit 5B24D78E)
${p.at /* parametric position */}
${'' /* 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))))
${''/* diode symbols */}
(fp_line (start 0.25 0) (end 0.75 0) (layer F.SilkS) (width 0.1))
(fp_line (start 0.25 0.4) (end -0.35 0) (layer F.SilkS) (width 0.1))
(fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end -0.35 0.55) (layer F.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.SilkS) (width 0.1))
(fp_line (start -0.75 0) (end -0.35 0) (layer F.SilkS) (width 0.1))
(fp_line (start 0.25 0) (end 0.75 0) (layer B.SilkS) (width 0.1))
(fp_line (start 0.25 0.4) (end -0.35 0) (layer B.SilkS) (width 0.1))
(fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer B.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end 0.25 -0.4) (layer B.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end -0.35 0.55) (layer B.SilkS) (width 0.1))
(fp_line (start -0.35 0) (end -0.35 -0.55) (layer B.SilkS) (width 0.1))
(fp_line (start -0.75 0) (end -0.35 0) (layer B.SilkS) (width 0.1))
${''/* SMD pads on both sides */}
(pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.to.str})
(pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.from.str})
(pad 1 smd rect (at -1.65 0 ${p.rot}) (size 0.9 1.2) (layers B.Cu B.Paste B.Mask) ${p.to.str})
(pad 2 smd rect (at 1.65 0 ${p.rot}) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask) ${p.from.str})
${''/* vias */}
(pad 1 thru_hole circle (at -0.75 0 ${p.rot}) (size 0.6 0.6) (drill 0.3) (layers *.Cu *.Mask) ${p.to.str})
(pad 2 thru_hole circle (at 0.75 0 ${p.rot}) (size 0.6 0.6) (drill 0.3) (layers *.Cu *.Mask) ${p.from.str})
)
`
}

View File

@@ -0,0 +1,19 @@
module.exports = {
params: {
class: "MP",
size: 4.0,
drill: 2.2
},
body: (p) => {
return `
(module Hole (layer F.Cu) (tedit 5F7666C1)
${p.at /* parametric position */}
(fp_text reference "${p.ref}" (at 0 0.5) (layer F.SilkS) ${p.ref_hide}
(effects (font (size 1 1) (thickness 0.15)))
)
(pad "" thru_hole circle (at 0 0) (size ${p.size} ${p.size}) (drill ${p.drill}) (layers *.Cu *.Mask) (tstamp 75b224f0-3010-4e8c-bf32-f95a770c96d9))
)
`;
},
};

View File

@@ -0,0 +1,28 @@
module.exports = {
params: {
designator: 'J',
side: 'F',
from: undefined,
to: undefined
},
body: p => `
(module lib:Jumper (layer F.Cu) (tedit 5E1ADAC2)
${p.at /* parametric position */}
${'' /* 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 Jumper (at 0 -7.3) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
${'' /* pins */}
(pad 1 smd custom (at 0 -0.508 ${p.rot}) (size 0.1 0.1) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)
${p.to.str} (clearance 0.1) (zone_connect 0) (options (clearance outline) (anchor rect))
(primitives (gr_poly (pts (xy 0.6 -0.4) (xy -0.6 -0.4) (xy -0.6 -0.2) (xy 0 0.4) (xy 0.6 -0.2)) (width 0))))
(pad 2 smd custom (at 0 0.508 ${p.rot}) (size 1.2 0.5) (layers ${p.side}.Cu ${p.side}.Paste ${p.side}.Mask)
${p.from.str} (clearance 0.1) (zone_connect 0) (options (clearance outline) (anchor rect))
(primitives (gr_poly (pts (xy 0.6 0) (xy -0.6 0) (xy -0.6 -1) (xy 0 -0.4) (xy 0.6 -1)) (width 0))))
)
`
}

View File

@@ -0,0 +1,157 @@
// 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' },
GND1: { 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' },
GND2: { type: 'net', value: 'GND' },
GND3: { type: 'net', value: 'GND' },
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 => {
const standard = `
(module ProMicro (layer F.Cu) (tedit 5B307E4C)
${p.at /* parametric position */}
${'' /* 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))))
${''/* 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))
`
function pins(def_neg, def_pos) {
return `
${''/* pin names */}
(fp_text user RAW (at -13.97 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user RST (at -8.89 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user VCC (at -6.35 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user ENCA (at -3.81 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user ENCB (at -1.27 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row0 (at 1.27 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row1 (at 3.81 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row2 (at 6.35 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row3 (at 8.89 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row4 (at 11.43 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user row5 (at 13.97 ${def_pos}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)))
(fp_text user GND (at -8.89 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user SDA (at -3.81 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user SCL (at -1.27 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user CS (at 1.27 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user col0 (at 3.81 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user col1 (at 6.35 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user col2 (at 8.89 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user col3 (at 11.43 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user col4 (at 13.97 ${def_neg}6.3 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)))
(fp_text user GND (at -8.89 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user ENCA (at -3.81 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user ENCB (at -1.27 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row0 (at 1.27 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row1 (at 3.81 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row2 (at 6.35 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row3 (at 8.89 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row4 (at 11.43 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user row5 (at 13.97 ${def_pos}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right mirror)))
(fp_text user RAW (at -13.97 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user RST (at -8.89 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user VCC (at -6.35 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user SDA (at -3.81 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user SCL (at -1.27 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user CS (at 1.27 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user col0 (at 3.81 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user col1 (at 6.35 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user col2 (at 8.89 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user col3 (at 11.43 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
(fp_text user col4 (at 13.97 ${def_neg}6.3 ${p.rot + 90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left mirror)))
${'' /* description */}
(fp_text user "Nice!Nano" (at 3.7 ${def_pos}1.2 ${p.rot}) (layer F.SilkS knockout) (effects (font (size 1.0 1.0) (thickness 0.15))))
(fp_text user "Place face down." (at 3.7 ${def_pos}-0.55 ${p.rot}) (layer F.SilkS) (effects (font (size 1.0 1.0) (thickness 0.15))))
(fp_text user "Solder jumpers on back." (at 3.7 ${def_pos}-1.8 ${p.rot}) (layer F.SilkS) (effects (font (size 1.0 1.0) (thickness 0.15))))
(fp_text user "Nice!Nano" (at 3.7 ${def_pos}1.2 ${p.rot}) (layer B.SilkS knockout) (effects (font (size 1.0 1.0) (thickness 0.15)) (justify mirror)))
(fp_text user "Place face down." (at 3.7 ${def_pos}-0.55 ${p.rot}) (layer B.SilkS) (effects (font (size 1.0 1.0) (thickness 0.15)) (justify mirror)))
(fp_text user "Solder jumpers on back." (at 3.7 ${def_pos}-1.8 ${p.rot}) (layer B.SilkS) (effects (font (size 1.0 1.0) (thickness 0.15)) (justify mirror)))
${''/* and now the actual pins */}
(pad 1 thru_hole circle (at -13.97 ${def_pos}7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.0922) (layers *.Cu *.SilkS *.Mask) ${p.RAW.str})
(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.GND1.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.GND2.str})
(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.GND3.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
(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.str})
${''/* rect around RAW */}
(pad "" thru_hole rect (at -13.97 7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.1) (layers F.Cu F.Mask) (zone_connect 0) ${p.RAW.str})
(pad "" thru_hole rect (at -13.97 -7.62 ${p.rot}) (size 1.7526 1.7526) (drill 1.1) (layers B.Cu B.Mask) (zone_connect 0) ${p.P1.str})
`
}
if (p.orientation == 'down') {
return `
${standard}
${pins('-', '')})
`
} else {
return `
${standard}
${pins('', '-')})
`
}
}
}

View File

@@ -0,0 +1,64 @@
module.exports = {
params: {
designator: 'Nice!View',
side: 'F',
outline: false,
VCC: { type: 'net', value: 'VCC' },
GND: { type: 'net', value: 'GND' },
SDA: undefined,
SCL: undefined,
CS: undefined,
},
body: p => {
const standard = `
(module lib:niceview_headers (layer F.Cu) (tedit 648E0265)
${p.at /* parametric position */}
${'' /* footprint reference */}
(fp_text reference "${p.ref}" (at -1.6 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 1) (thickness 0.15))))
${'' /* pins */}
(pad 4 thru_hole oval (at 0.0 -5.08 ${p.rot + 270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
${p.SDA.str})
(pad 3 thru_hole oval (at 0.0 -2.54 ${p.rot + 270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
${p.SCL.str})
(pad 2 thru_hole oval (at 0.0 0.00 ${p.rot + 270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
${p.VCC.str})
(pad 1 thru_hole oval (at 0.0 2.54 ${p.rot + 270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
${p.GND.str})
(pad 1 thru_hole oval (at 0.0 5.08 ${p.rot + 270}) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask)
${p.CS.str})
${'' /* corner marks */}
(fp_line (start -1.25 -7) (end -1.25 7) (layer Dwgs.User) (width 0.15))
(fp_line (start -1.25 7) (end 34.75 7) (layer Dwgs.User) (width 0.15))
(fp_line (start 34.75 7) (end 34.75 -7) (layer Dwgs.User) (width 0.15))
(fp_line (start 34.75 -7) (end -1.25 -7) (layer Dwgs.User) (width 0.15))
`
function outline() {
return `
${'' /* Nice!View outline */}
(fp_line (start -1.25 -6.5) (end -1.25 6.5) (layer F.SilkS) (width 0.15))
(fp_line (start -1.25 6.5) (end 1.25 6.5) (layer F.SilkS) (width 0.15))
(fp_line (start 1.25 6.5) (end 1.25 -6.5) (layer F.SilkS) (width 0.15))
(fp_line (start 1.25 -6.5) (end -1.25 -6.5) (layer F.SilkS) (width 0.15))
${'' /* labels */}
(fp_text user Nice!View (at -2.5 0.00 ${p.rot+90}) (layer F.SilkS knockout) (effects (font (size 1.0 1.0) (thickness 0.15))))
(fp_text user Nice!View (at -2.5 0.00 ${p.rot+90}) (layer B.SilkS knockout) (effects (font (size 1.0 1.0) (thickness 0.15)) (justify mirror)))
`
}
if (p.outline) {
return `
${standard}
${outline()})
`
} else {
return `${standard})`
}
}
}

View File

@@ -0,0 +1,55 @@
module.exports = {
params: {
class: "B", // for Button
side: "F",
from: undefined,
to: undefined
},
body: (p) => `
(module kbd:ResetSW (layer F.Cu) (tedit 5B9559E6)
(descr "Two pin through hole Tactile Switch, the same as on the Corne")
(tags "Tactile Switch")
${p.at /* parametric position */}
${"" /* footprint reference */}
(fp_text reference "${p.ref}" (at 0 2.55) (layer F.SilkS) ${
p.ref_hide
} (effects (font (size 1 1) (thickness 0.15))))
(fp_text value "" (at 0 -2.55) (layer F.Fab) (effects (font (size 1 1) (thickness 0.15))))
${"" /* outline */}
(fp_text user RESET (at 0 0 ${
p.rot
}) (layer F.SilkS) (effects (font (size 1 1) (thickness 0.15))))
(fp_text user RESET (at 0.127 0 ${
p.rot
}) (layer B.SilkS) (effects (font (size 1 1) (thickness 0.15)) (justify mirror)))
(fp_line (start 3 1.5) (end 3 1.75) (layer B.SilkS) (width 0.15))
(fp_line (start 3 1.75) (end -3 1.75) (layer B.SilkS) (width 0.15))
(fp_line (start -3 1.75) (end -3 1.5) (layer B.SilkS) (width 0.15))
(fp_line (start -3 -1.5) (end -3 -1.75) (layer B.SilkS) (width 0.15))
(fp_line (start -3 -1.75) (end 3 -1.75) (layer B.SilkS) (width 0.15))
(fp_line (start 3 -1.75) (end 3 -1.5) (layer B.SilkS) (width 0.15))
(fp_line (start -3 1.75) (end 3 1.75) (layer F.SilkS) (width 0.15))
(fp_line (start 3 1.75) (end 3 1.5) (layer F.SilkS) (width 0.15))
(fp_line (start -3 1.75) (end -3 1.5) (layer F.SilkS) (width 0.15))
(fp_line (start -3 -1.75) (end -3 -1.5) (layer F.SilkS) (width 0.15))
(fp_line (start -3 -1.75) (end 3 -1.75) (layer F.SilkS) (width 0.15))
(fp_line (start 3 -1.75) (end 3 -1.5) (layer F.SilkS) (width 0.15))
${"" /* pins */}
(pad 2 thru_hole circle (at -3.25 0 ${
p.rot
}) (size 2 2) (drill 1.3) (layers *.Cu *.Mask F.SilkS) ${
p.from.str
})
(pad 1 thru_hole circle (at 3.25 0 ${
p.rot
}) (size 2 2) (drill 1.3) (layers *.Cu *.Mask F.SilkS) ${
p.to.str
})
)
`
};

View File

@@ -0,0 +1,66 @@
// 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 = {
params: {
designator: 'ROT',
from: undefined,
to: undefined,
A: undefined,
B: undefined,
C: undefined
},
body: p => `
(module rotary_encoder (layer F.Cu) (tedit 603326DE)
${p.at /* parametric position */}
${'' /* footprint reference */}
(fp_text reference "${p.ref}" (at 0 0.5) (layer F.SilkS)
${p.ref_hide} (effects (font (size 1 1) (thickness 0.15))))
(fp_text value "" (at 0 8.89) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15))))
${''/* component outline */}
(fp_line (start -0.62 -0.04) (end 0.38 -0.04) (layer F.SilkS) (width 0.12))
(fp_line (start -0.12 -0.54) (end -0.12 0.46) (layer F.SilkS) (width 0.12))
(fp_line (start 5.98 3.26) (end 5.98 5.86) (layer F.SilkS) (width 0.12))
(fp_line (start 5.98 -1.34) (end 5.98 1.26) (layer F.SilkS) (width 0.12))
(fp_line (start 5.98 -5.94) (end 5.98 -3.34) (layer F.SilkS) (width 0.12))
(fp_line (start -3.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12))
(fp_line (start -0.12 -3.04) (end -0.12 2.96) (layer F.Fab) (width 0.12))
(fp_line (start -7.32 -4.14) (end -7.62 -3.84) (layer F.SilkS) (width 0.12))
(fp_line (start -7.92 -4.14) (end -7.32 -4.14) (layer F.SilkS) (width 0.12))
(fp_line (start -7.62 -3.84) (end -7.92 -4.14) (layer F.SilkS) (width 0.12))
(fp_line (start -6.22 -5.84) (end -6.22 5.86) (layer F.SilkS) (width 0.12))
(fp_line (start -2.12 -5.84) (end -6.22 -5.84) (layer F.SilkS) (width 0.12))
(fp_line (start -2.12 5.86) (end -6.22 5.86) (layer F.SilkS) (width 0.12))
(fp_line (start 5.98 5.86) (end 1.88 5.86) (layer F.SilkS) (width 0.12))
(fp_line (start 1.88 -5.94) (end 5.98 -5.94) (layer F.SilkS) (width 0.12))
(fp_line (start -6.12 -4.74) (end -5.12 -5.84) (layer F.Fab) (width 0.12))
(fp_line (start -6.12 5.76) (end -6.12 -4.74) (layer F.Fab) (width 0.12))
(fp_line (start 5.88 5.76) (end -6.12 5.76) (layer F.Fab) (width 0.12))
(fp_line (start 5.88 -5.84) (end 5.88 5.76) (layer F.Fab) (width 0.12))
(fp_line (start -5.12 -5.84) (end 5.88 -5.84) (layer F.Fab) (width 0.12))
(fp_line (start -8.87 -6.89) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05))
(fp_line (start -8.87 -6.89) (end -8.87 6.81) (layer F.CrtYd) (width 0.05))
(fp_line (start 7.88 6.81) (end 7.88 -6.89) (layer F.CrtYd) (width 0.05))
(fp_line (start 7.88 6.81) (end -8.87 6.81) (layer F.CrtYd) (width 0.05))
(fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.SilkS) (width 0.12))
(fp_circle (center -0.12 -0.04) (end 2.88 -0.04) (layer F.Fab) (width 0.12))
${''/* pin names */}
(pad A thru_hole rect (at -7.62 -2.54 ${p.rot}) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.A.str})
(pad C thru_hole circle (at -7.62 -0.04) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.C.str})
(pad B thru_hole circle (at -7.62 2.46) (size 2 2) (drill 1) (layers *.Cu *.Mask) ${p.B.str})
(pad 1 thru_hole circle (at 6.88 -2.54) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.from.str})
(pad 2 thru_hole circle (at 6.88 2.46) (size 1.5 1.5) (drill 1) (layers *.Cu *.Mask) ${p.to.str})
)
`
}

View File

@@ -0,0 +1,95 @@
// 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 = {
params: {
designator: 'S',
reverse: false,
from: undefined,
to: undefined,
A: undefined,
B: undefined,
C: undefined,
D: undefined
},
body: p => {
const 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 F.SilkS) (width 0.12))
(fp_line (start 8.4 -6.4) (end 8.4 7.4) (layer F.SilkS) (width 0.12))
(fp_line (start 8.4 7.4) (end -8.4 7.4) (layer F.SilkS) (width 0.12))
(fp_line (start -8.4 7.4) (end -8.4 -6.4) (layer F.SilkS) (width 0.12))
(fp_line (start -8.4 6.4) (end 8.4 6.4) (layer B.SilkS) (width 0.12))
(fp_line (start 8.4 6.4) (end 8.4 -7.4) (layer B.SilkS) (width 0.12))
(fp_line (start 8.4 -7.4) (end -8.4 -7.4) (layer B.SilkS) (width 0.12))
(fp_line (start -8.4 -7.4) (end -8.4 6.4) (layer B.SilkS) (width 0.12))
(fp_text user "Scrollwheel" (at 0 0 ${p.rot + 90}) (layer F.SilkS knockout) (effects (font (size 1.0 1.0) (thickness 0.15))))
(fp_text user "EVQWGD001" (at 1.75 0 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 1.0 1.0) (thickness 0.15))))
`
function pins(def_neg, def_pos) {
return `
${'' /* edge cuts */}
(fp_line (start ${def_pos}9.8 7.3) (end ${def_pos}9.8 -7.3) (layer Edge.Cuts) (width 0.15))
(fp_line (start ${def_pos}7.4 -7.3) (end ${def_pos}7.4 7.3) (layer Edge.Cuts) (width 0.15))
(fp_line (start ${def_pos}9.5 -7.6) (end ${def_pos}7.7 -7.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 -7.3) (end ${def_pos}7.7 -7.6) (angle ${def_neg}90) (layer Edge.Cuts) (width 0.15))
(fp_arc (start ${def_pos}9.5 -7.3) (end ${def_pos}9.8 -7.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.from.str})
(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.to.str})
(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.A.str})
(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.B.str})
(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.C.str})
(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.D.str})
${'' /* mirror 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.from.str})
(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.to.str})
`
}
if(p.reverse) {
return `
${standard}
${pins('-', '')}
${pins('', '-')})
`
} else {
return `
${standard}
${pins('-', '')})
`
}
}
}

View File

@@ -0,0 +1,69 @@
module.exports = {
params: {
designator: 'T', // for Toggle
side: 'F',
reverse: false,
from: undefined,
to: undefined
},
body: p => {
const standard = `
(module E73:SPDT_C128955 (layer F.Cu) (tstamp 5BF2CC3C)
${p.at /* parametric position */}
${'' /* 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))))
${'' /* extra indicator for the slider */}
(fp_line (start -1.95 -3.85) (end 1.95 -3.85) (layer Dwgs.User) (width 0.15))
(fp_line (start 1.95 -3.85) (end 1.95 -1.35) (layer Dwgs.User) (width 0.15))
(fp_line (start -1.95 -1.35) (end -1.95 -3.85) (layer Dwgs.User) (width 0.15))
${'' /* bottom cutouts */}
(pad "" np_thru_hole circle (at 1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask))
(pad "" np_thru_hole circle (at -1.5 0) (size 1 1) (drill 0.9) (layers *.Cu *.Mask))
`
function pads(side, left, right) {
return `
${'' /* outline */}
(fp_line (start 1.95 -1.35) (end -1.95 -1.35) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 0 -1.35) (end -3.3 -1.35) (layer ${side}.SilkS) (width 0.15))
(fp_line (start -3.3 -1.35) (end -3.3 1.5) (layer ${side}.SilkS) (width 0.15))
(fp_line (start -3.3 1.5) (end 3.3 1.5) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 3.3 1.5) (end 3.3 -1.35) (layer ${side}.SilkS) (width 0.15))
(fp_line (start 0 -1.35) (end 3.3 -1.35) (layer ${side}.SilkS) (width 0.15))
${'' /* side mounts */}
(pad "" smd rect (at 3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${side}.Cu ${side}.Paste ${side}.Mask))
(pad "" smd rect (at 3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${side}.Cu ${side}.Paste ${side}.Mask))
(pad "" smd rect (at -3.7 1.1 ${p.rot}) (size 0.9 0.9) (layers ${side}.Cu ${side}.Paste ${side}.Mask))
(pad "" smd rect (at -3.7 -1.1 ${p.rot}) (size 0.9 0.9) (layers ${side}.Cu ${side}.Paste ${side}.Mask))
${'' /* pins */}
(pad 1 smd rect (at ${right}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.from.str})
(pad 2 smd rect (at ${left}0.75 2.075 ${p.rot}) (size 0.9 1.25) (layers ${side}.Cu ${side}.Paste ${side}.Mask) ${p.to.str})
(pad 3 smd rect (at ${left}2.25 2.075 ${p.rot}) (size 0.9 1.25) (layers ${side}.Cu ${side}.Paste ${side}.Mask))
`
}
const left = p.side == 'F' ? '-' : ''
const right = p.side == 'F' ? '' : '-'
if (p.reverse) {
return `
${standard}
${pads(p.side, left, right)}
${pads(p.side == 'F' ? 'B' : 'F', right, left)}
)`
} else {
return `
${standard}
${pads(p.side, left, right)}
)`
}
}
}

View File

@@ -0,0 +1,19 @@
module.exports = {
params: {
text: '',
side: 'F',
knockout: false,
fontsize: 0.8
},
body: p => `
(module lib:text (layer F.Cu) (tedit 648E0265)
${p.at /* parametric position */}
(fp_text user "${p.text}" (at 0 0 ${p.rot + 90}) (layer ${p.side}.SilkS ${p.knockout ? "knockout" : ""}) (effects (font (size ${p.fontsize} ${p.fontsize}) (thickness 0.15)) ${p.side === 'F' ? "" : "(justify mirror)"} ))
)
`
}