diff --git a/.gitignore b/.gitignore index 53752db..4f84c8d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ output +pcb diff --git a/ergogen/config.yaml b/ergogen/config.yaml index 65e6694..d87858c 100644 --- a/ergogen/config.yaml +++ b/ergogen/config.yaml @@ -255,7 +255,7 @@ pcbs: from: ENCB adjust: rotate: 90 - shift: [-2, 3.81] + shift: [-3, 3.81] jumper_sw_left_gnd: what: jumper where: [scrollwheel] @@ -265,7 +265,7 @@ pcbs: from: GND adjust: rotate: 90 - shift: [-2, 1.27] + shift: [-3, 1.27] jumper_sw_left_ENCA: what: jumper where: [scrollwheel] @@ -275,7 +275,7 @@ pcbs: from: ENCA adjust: rotate: 90 - shift: [-2, -1.27] + shift: [-3, -1.27] jumper_sw_right_a: what: jumper where: [scrollwheel] @@ -285,7 +285,7 @@ pcbs: from: ENCB adjust: rotate: 90 - shift: [-2, -3.81] + shift: [-3, -3.81] jumper_sw_right_gnd: what: jumper where: [scrollwheel] @@ -295,7 +295,7 @@ pcbs: from: GND adjust: rotate: 90 - shift: [-2, -1.27] + shift: [-3, -1.27] jumper_sw_right_ENCA: what: jumper where: [scrollwheel] @@ -305,9 +305,9 @@ pcbs: from: ENCA adjust: rotate: 90 - shift: [-2, 1.27] - promicro: - what: promicro + shift: [-3, 1.27] + nicenano: + what: nicenano where: mcu params: orientation: down @@ -335,22 +335,6 @@ pcbs: P7: col2 P8: col3 P9: col4 - jumper_text_left: - what: text - where: mcu - params: - side: "F" - text: "Place Nice!Nano face down &\\nsolder jumpers on the back side." - adjust: - rotate: 90 - jumper_text_right: - what: text - where: mcu - params: - side: "B" - text: "Place Nice!Nano face down &\\nsolder jumpers on the back side." - adjust: - rotate: 90 jumper_left_raw: what: jumper where: mcu @@ -641,6 +625,7 @@ pcbs: text: "Left Hand Front" side: F knockout: true + fontsize: 1.4 adjust: shift: [0, 4] rotate: 90 @@ -651,6 +636,7 @@ pcbs: text: "Right Hand Front" side: B knockout: true + fontsize: 1.4 adjust: rotate: 90 shift: [0, 4] diff --git a/ergogen/footprints/choc.js b/ergogen/footprints/choc.js new file mode 100644 index 0000000..464567f --- /dev/null +++ b/ergogen/footprints/choc.js @@ -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')}) + ` + } + } +} diff --git a/ergogen/footprints/promicro.js b/ergogen/footprints/nicenano.js similarity index 93% rename from ergogen/footprints/promicro.js rename to ergogen/footprints/nicenano.js index 7c5767b..fc809d1 100644 --- a/ergogen/footprints/promicro.js +++ b/ergogen/footprints/nicenano.js @@ -53,6 +53,7 @@ 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 -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 ` @@ -100,6 +101,14 @@ module.exports = { (fp_text user row3 (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 row4 (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 row5 (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 ${def_pos}1.2 ${p.rot}) (layer F.SilkS knockout) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user "Place face down." (at 3 ${def_pos}-0.55 ${p.rot}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user "Solder jumpers on back." (at 3 ${def_pos}-1.8 ${p.rot}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user "Nice!Nano" (at 3 ${def_pos}1.2 ${p.rot}) (layer B.SilkS knockout) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) + (fp_text user "Place face down." (at 3 ${def_pos}-0.55 ${p.rot}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) + (fp_text user "Solder jumpers on back." (at 3 ${def_pos}-1.8 ${p.rot}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ${''/* 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}) diff --git a/ergogen/footprints/niceview.js b/ergogen/footprints/niceview.js index 31f7628..0098d51 100644 --- a/ergogen/footprints/niceview.js +++ b/ergogen/footprints/niceview.js @@ -46,8 +46,8 @@ module.exports = { (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 0.00 ${p.rot+90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) - (fp_text user Nice!View (at -2 0.00 ${p.rot+90}) (layer B.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) + (fp_text user Nice!View (at -2.5 0.00 ${p.rot+90}) (layer F.SilkS knockout) (effects (font (size 0.8 0.8) (thickness 0.15)))) + (fp_text user Nice!View (at -2.5 0.00 ${p.rot+90}) (layer B.SilkS knockout) (effects (font (size 0.8 0.8) (thickness 0.15)) (justify mirror))) ` } diff --git a/ergogen/footprints/scrollwheel_mirrored.js b/ergogen/footprints/scrollwheel_mirrored.js index 460dd01..61b9742 100644 --- a/ergogen/footprints/scrollwheel_mirrored.js +++ b/ergogen/footprints/scrollwheel_mirrored.js @@ -39,14 +39,18 @@ module.exports = { (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)) - (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)) + (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 0.8 0.8) (thickness 0.15)))) + (fp_text user "EVQWGD001" (at 1.75 0 ${p.rot + 90}) (layer F.SilkS) (effects (font (size 0.8 0.8) (thickness 0.15)))) ` function pins(def_neg, def_pos) { diff --git a/ergogen/footprints/text.js b/ergogen/footprints/text.js index 9a8d36a..2247335 100644 --- a/ergogen/footprints/text.js +++ b/ergogen/footprints/text.js @@ -2,14 +2,15 @@ module.exports = { params: { text: '', side: 'F', - knockout: false + 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 0.8 0.8) (thickness 0.15)) ${p.side === 'F' ? "" : "(justify mirror)"} )) + (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)"} )) ) `