Files
corax-keyboard/ergogen/footprints/scrollwheel_mirrored.js
daniel 99a37eb0cc Squashed commit of the following:
commit bb18cddcc8
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 11:43:33 2023 +0200

    update gerbers

commit df5ee882de
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 11:43:15 2023 +0200

    pcb render

commit 14c23b0fa8
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 11:34:24 2023 +0200

    add icon svg

commit 6ec17faa04
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 11:31:08 2023 +0200

    Update README.md

commit b65a183fe3
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 11:30:20 2023 +0200

    routed rev 1.1

commit 9ce5d4ee41
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 09:46:20 2023 +0200

    add rev and order number to ergogen config

commit c0575a7352
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 08:56:18 2023 +0200

    make text on pcb better readable

commit 03692059b5
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 08:44:04 2023 +0200

    fix mcu labels

commit 6edd65c0c5
Author: daniel <github@dbauer.me>
Date:   Sat Aug 5 08:34:36 2023 +0200

    incr. diode to socket distance
2023-08-05 11:44:37 +02:00

96 lines
4.4 KiB
JavaScript

// 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('-', '')})
`
}
}
}