├── .github └── workflows │ └── ci.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── appendices │ ├── 3d-printing.md │ ├── hardware.md │ ├── macos.md │ ├── pcbs.md │ ├── programming.md │ └── volume.md ├── assembly-instructions.md ├── img │ ├── 1.JPG │ ├── 21.JPG │ ├── 22.JPG │ ├── 23.JPG │ ├── 31.JPG │ ├── 32.JPG │ ├── 33.JPG │ ├── 34.JPG │ ├── 4.JPG │ └── 5.JPG ├── index.md └── license.md ├── firmwares ├── ploopyco_knob_fast.uf2 ├── ploopyco_knob_slow.uf2 └── ploopyco_knob_volume.uf2 ├── hardware ├── electronics │ ├── Knob-R1_001.pdf │ ├── PCBs │ │ └── ScrollWheel │ │ │ ├── Connectors.SchDoc │ │ │ ├── HapticFeedback.SchDoc │ │ │ ├── History │ │ │ └── ScrollWheel.~(1).PcbDoc.Zip │ │ │ ├── MCU.SchDoc │ │ │ ├── Mechanical.SchDoc │ │ │ ├── Regulators.SchDoc │ │ │ ├── RotationSensor.SchDoc │ │ │ ├── ScrollWheel.Annotation │ │ │ ├── ScrollWheel.PcbDoc │ │ │ ├── ScrollWheel.PrjPCB │ │ │ ├── ScrollWheel.PrjPCBStructure │ │ │ ├── ScrollWheel.PrjPCBVariants │ │ │ └── ScrollWheel.SchDoc │ └── PartLibraries │ │ ├── Chip_Passives.PcbLib │ │ ├── Chip_Passives.SchLib │ │ ├── Connectors.PcbLib │ │ ├── Connectors.SchLib │ │ ├── Crystals.PcbLib │ │ ├── Crystals.SchLib │ │ ├── Diodes.PcbLib │ │ ├── Diodes.SchLib │ │ ├── FETs.PcbLib │ │ ├── FETs.SchLib │ │ ├── Graphics.PcbLib │ │ ├── Graphics.SchLib │ │ ├── History │ │ ├── Graphics.~(1).PcbLib.Zip │ │ └── Graphics.~(1).SchLib.Zip │ │ ├── LEDs.PcbLib │ │ ├── LEDs.SchLib │ │ ├── MCUs.PcbLib │ │ ├── MCUs.SchLib │ │ ├── Mechanical.PcbLib │ │ ├── Mechanical.SchLib │ │ ├── Memory.PcbLib │ │ ├── Memory.SchLib │ │ ├── MotorControl.PcbLib │ │ ├── MotorControl.SchLib │ │ ├── Motors.PcbLib │ │ ├── Motors.SchLib │ │ ├── OptoElectronics.PcbLib │ │ ├── OptoElectronics.SchLib │ │ ├── PCBFeatures.PcbLib │ │ ├── PCBFeatures.SchLib │ │ ├── PowerSupply.PcbLib │ │ ├── PowerSupply.SchLib │ │ ├── Sensors.PcbLib │ │ ├── Sensors.SchLib │ │ ├── Switches.PcbLib │ │ └── Switches.SchLib └── mechanicals │ ├── README.md │ ├── knob.3mf │ ├── knob.STEP │ └── knob.STL ├── knob.jpg └── mkdocs.yml /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | on: 3 | workflow_dispatch: 4 | push: 5 | branches: 6 | - master 7 | - main 8 | permissions: 9 | contents: write 10 | jobs: 11 | deploy: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Configure Git Credentials 16 | run: | 17 | git config user.name github-actions[bot] 18 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com 19 | - uses: actions/setup-python@v5 20 | with: 21 | python-version: 3.x 22 | - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV 23 | - uses: actions/cache@v4 24 | with: 25 | key: mkdocs-material-${{ env.cache_id }} 26 | path: .cache 27 | restore-keys: | 28 | mkdocs-material- 29 | - run: pip install mkdocs-material 30 | - run: mkdocs gh-deploy --force -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | venv/ 2 | site/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CERN Open Hardware Licence Version 2 - Strongly Reciprocal 2 | 3 | 4 | Preamble 5 | 6 | CERN has developed this licence to promote collaboration among 7 | hardware designers and to provide a legal tool which supports the 8 | freedom to use, study, modify, share and distribute hardware designs 9 | and products based on those designs. Version 2 of the CERN Open 10 | Hardware Licence comes in three variants: CERN-OHL-P (permissive); and 11 | two reciprocal licences: CERN-OHL-W (weakly reciprocal) and this 12 | licence, CERN-OHL-S (strongly reciprocal). 13 | 14 | The CERN-OHL-S is copyright CERN 2020. Anyone is welcome to use it, in 15 | unmodified form only. 16 | 17 | Use of this Licence does not imply any endorsement by CERN of any 18 | Licensor or their designs nor does it imply any involvement by CERN in 19 | their development. 20 | 21 | 22 | 1 Definitions 23 | 24 | 1.1 'Licence' means this CERN-OHL-S. 25 | 26 | 1.2 'Compatible Licence' means 27 | 28 | a) any earlier version of the CERN Open Hardware licence, or 29 | 30 | b) any version of the CERN-OHL-S, or 31 | 32 | c) any licence which permits You to treat the Source to which 33 | it applies as licensed under CERN-OHL-S provided that on 34 | Conveyance of any such Source, or any associated Product You 35 | treat the Source in question as being licensed under 36 | CERN-OHL-S. 37 | 38 | 1.3 'Source' means information such as design materials or digital 39 | code which can be applied to Make or test a Product or to 40 | prepare a Product for use, Conveyance or sale, regardless of its 41 | medium or how it is expressed. It may include Notices. 42 | 43 | 1.4 'Covered Source' means Source that is explicitly made available 44 | under this Licence. 45 | 46 | 1.5 'Product' means any device, component, work or physical object, 47 | whether in finished or intermediate form, arising from the use, 48 | application or processing of Covered Source. 49 | 50 | 1.6 'Make' means to create or configure something, whether by 51 | manufacture, assembly, compiling, loading or applying Covered 52 | Source or another Product or otherwise. 53 | 54 | 1.7 'Available Component' means any part, sub-assembly, library or 55 | code which: 56 | 57 | a) is licensed to You as Complete Source under a Compatible 58 | Licence; or 59 | 60 | b) is available, at the time a Product or the Source containing 61 | it is first Conveyed, to You and any other prospective 62 | licensees 63 | 64 | i) as a physical part with sufficient rights and 65 | information (including any configuration and 66 | programming files and information about its 67 | characteristics and interfaces) to enable it either to 68 | be Made itself, or to be sourced and used to Make the 69 | Product; or 70 | ii) as part of the normal distribution of a tool used to 71 | design or Make the Product. 72 | 73 | 1.8 'Complete Source' means the set of all Source necessary to Make 74 | a Product, in the preferred form for making modifications, 75 | including necessary installation and interfacing information 76 | both for the Product, and for any included Available Components. 77 | If the format is proprietary, it must also be made available in 78 | a format (if the proprietary tool can create it) which is 79 | viewable with a tool available to potential licensees and 80 | licensed under a licence approved by the Free Software 81 | Foundation or the Open Source Initiative. Complete Source need 82 | not include the Source of any Available Component, provided that 83 | You include in the Complete Source sufficient information to 84 | enable a recipient to Make or source and use the Available 85 | Component to Make the Product. 86 | 87 | 1.9 'Source Location' means a location where a Licensor has placed 88 | Covered Source, and which that Licensor reasonably believes will 89 | remain easily accessible for at least three years for anyone to 90 | obtain a digital copy. 91 | 92 | 1.10 'Notice' means copyright, acknowledgement and trademark notices, 93 | Source Location references, modification notices (subsection 94 | 3.3(b)) and all notices that refer to this Licence and to the 95 | disclaimer of warranties that are included in the Covered 96 | Source. 97 | 98 | 1.11 'Licensee' or 'You' means any person exercising rights under 99 | this Licence. 100 | 101 | 1.12 'Licensor' means a natural or legal person who creates or 102 | modifies Covered Source. A person may be a Licensee and a 103 | Licensor at the same time. 104 | 105 | 1.13 'Convey' means to communicate to the public or distribute. 106 | 107 | 108 | 2 Applicability 109 | 110 | 2.1 This Licence governs the use, copying, modification, Conveying 111 | of Covered Source and Products, and the Making of Products. By 112 | exercising any right granted under this Licence, You irrevocably 113 | accept these terms and conditions. 114 | 115 | 2.2 This Licence is granted by the Licensor directly to You, and 116 | shall apply worldwide and without limitation in time. 117 | 118 | 2.3 You shall not attempt to restrict by contract or otherwise the 119 | rights granted under this Licence to other Licensees. 120 | 121 | 2.4 This Licence is not intended to restrict fair use, fair dealing, 122 | or any other similar right. 123 | 124 | 125 | 3 Copying, Modifying and Conveying Covered Source 126 | 127 | 3.1 You may copy and Convey verbatim copies of Covered Source, in 128 | any medium, provided You retain all Notices. 129 | 130 | 3.2 You may modify Covered Source, other than Notices, provided that 131 | You irrevocably undertake to make that modified Covered Source 132 | available from a Source Location should You Convey a Product in 133 | circumstances where the recipient does not otherwise receive a 134 | copy of the modified Covered Source. In each case subsection 3.3 135 | shall apply. 136 | 137 | You may only delete Notices if they are no longer applicable to 138 | the corresponding Covered Source as modified by You and You may 139 | add additional Notices applicable to Your modifications. 140 | Including Covered Source in a larger work is modifying the 141 | Covered Source, and the larger work becomes modified Covered 142 | Source. 143 | 144 | 3.3 You may Convey modified Covered Source (with the effect that You 145 | shall also become a Licensor) provided that You: 146 | 147 | a) retain Notices as required in subsection 3.2; 148 | 149 | b) add a Notice to the modified Covered Source stating that You 150 | have modified it, with the date and brief description of how 151 | You have modified it; 152 | 153 | c) add a Source Location Notice for the modified Covered Source 154 | if You Convey in circumstances where the recipient does not 155 | otherwise receive a copy of the modified Covered Source; and 156 | 157 | d) license the modified Covered Source under the terms and 158 | conditions of this Licence (or, as set out in subsection 159 | 8.3, a later version, if permitted by the licence of the 160 | original Covered Source). Such modified Covered Source must 161 | be licensed as a whole, but excluding Available Components 162 | contained in it, which remain licensed under their own 163 | applicable licences. 164 | 165 | 166 | 4 Making and Conveying Products 167 | 168 | You may Make Products, and/or Convey them, provided that You either 169 | provide each recipient with a copy of the Complete Source or ensure 170 | that each recipient is notified of the Source Location of the Complete 171 | Source. That Complete Source is Covered Source, and You must 172 | accordingly satisfy Your obligations set out in subsection 3.3. If 173 | specified in a Notice, the Product must visibly and securely display 174 | the Source Location on it or its packaging or documentation in the 175 | manner specified in that Notice. 176 | 177 | 178 | 5 Research and Development 179 | 180 | You may Convey Covered Source, modified Covered Source or Products to 181 | a legal entity carrying out development, testing or quality assurance 182 | work on Your behalf provided that the work is performed on terms which 183 | prevent the entity from both using the Source or Products for its own 184 | internal purposes and Conveying the Source or Products or any 185 | modifications to them to any person other than You. Any modifications 186 | made by the entity shall be deemed to be made by You pursuant to 187 | subsection 3.2. 188 | 189 | 190 | 6 DISCLAIMER AND LIABILITY 191 | 192 | 6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products 193 | are provided 'as is' and any express or implied warranties, 194 | including, but not limited to, implied warranties of 195 | merchantability, of satisfactory quality, non-infringement of 196 | third party rights, and fitness for a particular purpose or use 197 | are disclaimed in respect of any Source or Product to the 198 | maximum extent permitted by law. The Licensor makes no 199 | representation that any Source or Product does not or will not 200 | infringe any patent, copyright, trade secret or other 201 | proprietary right. The entire risk as to the use, quality, and 202 | performance of any Source or Product shall be with You and not 203 | the Licensor. This disclaimer of warranty is an essential part 204 | of this Licence and a condition for the grant of any rights 205 | granted under this Licence. 206 | 207 | 6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to 208 | the maximum extent permitted by law, have no liability for 209 | direct, indirect, special, incidental, consequential, exemplary, 210 | punitive or other damages of any character including, without 211 | limitation, procurement of substitute goods or services, loss of 212 | use, data or profits, or business interruption, however caused 213 | and on any theory of contract, warranty, tort (including 214 | negligence), product liability or otherwise, arising in any way 215 | in relation to the Covered Source, modified Covered Source 216 | and/or the Making or Conveyance of a Product, even if advised of 217 | the possibility of such damages, and You shall hold the 218 | Licensor(s) free and harmless from any liability, costs, 219 | damages, fees and expenses, including claims by third parties, 220 | in relation to such use. 221 | 222 | 223 | 7 Patents 224 | 225 | 7.1 Subject to the terms and conditions of this Licence, each 226 | Licensor hereby grants to You a perpetual, worldwide, 227 | non-exclusive, no-charge, royalty-free, irrevocable (except as 228 | stated in subsections 7.2 and 8.4) patent licence to Make, have 229 | Made, use, offer to sell, sell, import, and otherwise transfer 230 | the Covered Source and Products, where such licence applies only 231 | to those patent claims licensable by such Licensor that are 232 | necessarily infringed by exercising rights under the Covered 233 | Source as Conveyed by that Licensor. 234 | 235 | 7.2 If You institute patent litigation against any entity (including 236 | a cross-claim or counterclaim in a lawsuit) alleging that the 237 | Covered Source or a Product constitutes direct or contributory 238 | patent infringement, or You seek any declaration that a patent 239 | licensed to You under this Licence is invalid or unenforceable 240 | then any rights granted to You under this Licence shall 241 | terminate as of the date such process is initiated. 242 | 243 | 244 | 8 General 245 | 246 | 8.1 If any provisions of this Licence are or subsequently become 247 | invalid or unenforceable for any reason, the remaining 248 | provisions shall remain effective. 249 | 250 | 8.2 You shall not use any of the name (including acronyms and 251 | abbreviations), image, or logo by which the Licensor or CERN is 252 | known, except where needed to comply with section 3, or where 253 | the use is otherwise allowed by law. Any such permitted use 254 | shall be factual and shall not be made so as to suggest any kind 255 | of endorsement or implication of involvement by the Licensor or 256 | its personnel. 257 | 258 | 8.3 CERN may publish updated versions and variants of this Licence 259 | which it considers to be in the spirit of this version, but may 260 | differ in detail to address new problems or concerns. New 261 | versions will be published with a unique version number and a 262 | variant identifier specifying the variant. If the Licensor has 263 | specified that a given variant applies to the Covered Source 264 | without specifying a version, You may treat that Covered Source 265 | as being released under any version of the CERN-OHL with that 266 | variant. If no variant is specified, the Covered Source shall be 267 | treated as being released under CERN-OHL-S. The Licensor may 268 | also specify that the Covered Source is subject to a specific 269 | version of the CERN-OHL or any later version in which case You 270 | may apply this or any later version of CERN-OHL with the same 271 | variant identifier published by CERN. 272 | 273 | 8.4 This Licence shall terminate with immediate effect if You fail 274 | to comply with any of its terms and conditions. 275 | 276 | 8.5 However, if You cease all breaches of this Licence, then Your 277 | Licence from any Licensor is reinstated unless such Licensor has 278 | terminated this Licence by giving You, while You remain in 279 | breach, a notice specifying the breach and requiring You to cure 280 | it within 30 days, and You have failed to come into compliance 281 | in all material respects by the end of the 30 day period. Should 282 | You repeat the breach after receipt of a cure notice and 283 | subsequent reinstatement, this Licence will terminate 284 | immediately and permanently. Section 6 shall continue to apply 285 | after any termination. 286 | 287 | 8.6 This Licence shall not be enforceable except by a Licensor 288 | acting as such, and third party beneficiary rights are 289 | specifically excluded. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Ploopy Knob 2 | 3 | ![The Ploopy Knob](knob.jpg) 4 | 5 | By some stroke of luck, you've made your way here. The Ploopy Knob. Your life will never be the same. 6 | 7 | This repository contains all of the design and production files necessary to make a Ploopy Knob. We've also included some kick-ass documentation on how to get it made, assemble it, and program it [which you can find here](https://ploopyco.github.io/knob/). 8 | 9 | What are you waiting for? Your new life awaits. 10 | 11 | ## QMK?! 12 | 13 | Knobs bought from the [Ploopy store](https://ploopy.co/product-category/knob) come with QMK preloaded. [Check out the documentation](https://ploopyco.github.io/knob/) for instructions on how to load new firmware onto your device. (It's super easy!) 14 | 15 | The firmware file that ships with all Knobs is included in this repository as well, as `ploopyco_knob_slow.uf2`. We also have a few other precompiled firmwares, so try which one works best for you. 16 | 17 | ## Under what license is this released? 18 | 19 | As per QMK's licensing requirements, the firmware for the Ploopy Knob is released under GPLv3. Hardware design files, including electronics and mechanical files, are released under OHL CERN v2-S. Check the respective directories for full license text. 20 | -------------------------------------------------------------------------------- /docs/appendices/3d-printing.md: -------------------------------------------------------------------------------- 1 | # Appendix B: 3D printed parts 2 | 3 | ## Buying 3D-printed parts from us 4 | Not everyone has access to a 3D-printer. [That's why we sell fully-assembled Knobs](https://ploopy.co/product-category/knob/). Here's why that's great for you: 5 | 6 | - You get all of the 3D-printed parts, guaranteed free of manufacturing defects 7 | - You won't waste time spending hours tweaking settings 8 | - We guarantee it will fit together *perfectly* 9 | 10 | Consider it. You're a smartie. You'll get there. 11 | 12 | ## Printing your own parts 13 | 14 | So, you have a printer and want to print your own parts? Great! We don't have specific instructions, since every printer setup is different. All of the STLs are available, and if you need to make tweaks, you can alter the design files. 15 | 16 | Here are the settings we use when we print parts. **Note that these settings have only been tested on the Prusa i3 MK2.5S and MK3S.** If you have another printer, you may need to tweak these settings. 17 | 18 | - PLA. The geometry of many of the parts is quite complex; trying to use other materials may not result in success. 19 | - 0.30mm layer height. You can go finer than this if you want, but we haven't tested that. Going coarser is not going to work; first, it's going to feel rough on your hand, and second, it won't accurately capture the necessary detail. 20 | - No support material is necessary. If your slicer is showing support material, you didn't orient the parts correctly. 21 | - Orient the pieces so that flat sides are on the build plate. 22 | - We like gyroid for infill pattern, but anything is probably good. Cubic, rectilinear, whatever. 23 | - We use 0.4mm nozzles. We haven't tested other nozzle sizes. -------------------------------------------------------------------------------- /docs/appendices/hardware.md: -------------------------------------------------------------------------------- 1 | # Appendix C: Hardware 2 | 3 | ## Buying hardware from us 4 | 5 | Getting all of the hardware on your own can be tricky because the parts you select may not fit perfectly. [That's why we sell fully-assembled Knobs](https://ploopy.co/product-category/knob/). Here's why that's great for you: 6 | 7 | - Everything is guaranteed to fit together perfectly 8 | - Everything is guaranteed to work as intended 9 | - You'll end up saving money - probably quite a bit of money - by not spending on extra parts 10 | 11 | Your call. You'll sort it out. 12 | 13 | ## Getting your own hardware 14 | 15 | This guide was a bit light on detail in the other sections, and that's because the hardware has to conform to many specifications. They'll all be listed here. 16 | 17 | First, a complete list of all the hardware you'll need: 18 | 19 | - \#2 1/4" screws, x2 20 | - 6mm diameter x 2mm thick magnet, x2 21 | - 6705ZZ bearing 22 | - 4x friction pads 23 | 24 | 25 | We'll be going over all of them in detail. There will be mentions of *critical specifications*; if you're going to be sourcing your own parts, **you must get parts that conform to the critical specifications**. If you go off-menu, the parts will not fit the way that we intended when we designed the Knob. That might mean that your Knob **doesn't work**. 26 | 27 | Let's get cracking. 28 | 29 | 30 | ### Screws 31 | 32 | Here are the critical specifications: 33 | 34 | - \#2 35 | - 1/4" length 36 | 37 | 38 | ### Magnets 39 | 40 | Here are the critical specifications: 41 | 42 | - 6mm diameter 43 | - 2mm thickness 44 | 45 | 46 | ### 6705ZZ Roller Bearing 47 | 48 | Here are the critical specifications: 49 | 50 | - 6705ZZ bearing 51 | - 25mm inner diameter 52 | - 32mm outer diameter 53 | - 4mm thickness 54 | 55 | 56 | ### Friction pads 57 | 58 | Here are the critical specifications: 59 | 60 | - Circular shape 61 | - Up to 3/4" diameter 62 | - Up to 1/8" thickness 63 | - Non-slip 64 | -------------------------------------------------------------------------------- /docs/appendices/macos.md: -------------------------------------------------------------------------------- 1 | # Appendix E: MacOS Compatibility 2 | 3 | Currently, MacOS does its own smoothing to implement high-resolution scrolling. As a result of that, HID-based high-res scrolling (such as the kind implemented in QMK) doesn't work well. More discussion on this topic [can be seen here](https://github.com/qmk/qmk_firmware/issues/17585). 4 | 5 | The current firmware implements notched scrolling for MacOS, which then smoothes the motion. However, it isn't as precise as it is in the Windows and Linux implementations. For this reason, we designate that high-resolution scrolling is not officially supported by the Knob. 6 | 7 | 8 | ## Workaround #1: discrete-scroll 9 | 10 | A possible workaround is to utilise [the open-source library "discrete-scroll"](https://github.com/emreyolcu/discrete-scroll). This disables the smooth scrolling on MacOS.[^1] 11 | 12 | After that, a new version of the firmware will have to be built. Begin by modifying the QMK file "keyboards/ploopyco/ploopyco.c". Change the following lines: 13 | 14 | #ifdef POINTING_DEVICE_AS5600_ENABLE 15 | // Get AS5600 rawangle 16 | uint16_t ra = get_rawangle(); 17 | int16_t delta = (int16_t)(ra - current_position); 18 | 19 | // Wrap into [-2048, 2047] to get shortest direction 20 | if (delta > 2048) { 21 | delta -= 4096; 22 | } else if (delta < -2048) { 23 | delta += 4096; 24 | } 25 | 26 | if (d_os == OS_WINDOWS || d_os == OS_LINUX) { 27 | // Establish a deadzone to prevent spurious inputs 28 | if (delta > POINTING_DEVICE_AS5600_DEADZONE || delta < -POINTING_DEVICE_AS5600_DEADZONE) { 29 | current_position = ra; 30 | mouse_report.v = delta / POINTING_DEVICE_AS5600_SPEED_DIV; 31 | } 32 | } else { 33 | // Certain operating systems, like MacOS, don't play well with the 34 | // high-res scrolling implementation. For more details, see: 35 | // https://github.com/qmk/qmk_firmware/issues/17585#issuecomment-2325248167 36 | if (delta >= POINTING_DEVICE_AS5600_TICK_COUNT) { 37 | current_position = ra; 38 | mouse_report.v = 1; 39 | } else if (delta <= -POINTING_DEVICE_AS5600_TICK_COUNT) { 40 | current_position = ra; 41 | mouse_report.v = -1; 42 | } 43 | } 44 | #endif 45 | 46 | to this: 47 | 48 | #ifdef POINTING_DEVICE_AS5600_ENABLE 49 | // Get AS5600 rawangle 50 | uint16_t ra = get_rawangle(); 51 | int16_t delta = (int16_t)(ra - current_position); 52 | 53 | // Wrap into [-2048, 2047] to get shortest direction 54 | if (delta > 2048) { 55 | delta -= 4096; 56 | } else if (delta < -2048) { 57 | delta += 4096; 58 | } 59 | 60 | // Establish a deadzone to prevent spurious inputs 61 | if (delta > POINTING_DEVICE_AS5600_DEADZONE || delta < -POINTING_DEVICE_AS5600_DEADZONE) { 62 | current_position = ra; 63 | mouse_report.v = delta / POINTING_DEVICE_AS5600_SPEED_DIV; 64 | } 65 | #endif 66 | 67 | After recompiling and reflashing (see [Appendix D: QMK Firmware Programming](programming.md) for more details), you should get smooth scrolling, just the same as on Windows or Linux. 68 | 69 | 70 | ## Workaround #2: BetterMouse 71 | 72 | Another workaround is using BetterMouse. It requires downloading paid software, and is verified as working. 73 | 74 | [A full write-up on how to do this is available here](https://www.reddit.com/r/ploopy/comments/1lv1i6m/got_the_knob_found_a_macos_workaround/).[^2] 75 | 76 | 77 | [^1]: Thanks to [asyncmeow](https://fedi.rrr.sh/@pearl) for her contributions to this fix. 78 | [^2]: Thanks to [u/SilentStormer](https://www.reddit.com/user/SilentStormer/) for his contributions to this fix. -------------------------------------------------------------------------------- /docs/appendices/pcbs.md: -------------------------------------------------------------------------------- 1 | # Appendix A: Printed circuit boards 2 | 3 | 4 | ## Buying boards from us 5 | Getting the Ploopy boards made can be complex, and expensive, especially if you only need one set. [That's why we sell fully-assembled Knobs](https://ploopy.co/product-category/knob/). Here's why that's great for you: 6 | 7 | - You get a PCB with all components soldered 8 | - The firmware is already programmed on the microcontroller, so you won't have to program it 9 | - It'll cost a hell of a lot less than if you do a production run of PCBs just for yourself 10 | - You won't have to order components and wait while they come in 11 | - We guarantee that it works 12 | 13 | Just something to consider. You're smart. You'll figure it out. 14 | 15 | ## Making your own boards 16 | 17 | Want to make your own Ploopy Knob boards? Great! Less work for us. Seriously, though, only choose this option if you know what you're doing. You don't want to embarrass yourself, do you? 18 | 19 | ### Step 1: Order the PCBs from a PCB production company 20 | 21 | Here are the most important configurations you'll need to communicate to the company: 22 | 23 | - 4 layers 24 | - FR-4, TG 150-160 (basically, whatever the cheapest option is) 25 | - 1.6mm thickness 26 | - 6/6mil track/spacing distance 27 | - 0.3mm minimum hole size 28 | - ENIG surface finish, but you can go with HASL if you don't care about lead poisoning 29 | - 1oz copper thickness for both outer and inner layers 30 | - Choose whatever colours you want for solder mask and silkscreen; we like green solder mask and white silkscreen 31 | 32 | If something is missing from here, it's not really important. 33 | 34 | At some point, you'll have to upload design files to the production company. Use the [electronics source files](https://github.com/ploopyco/knob/tree/master/hardware/electronics) to generate manufacturing files (you'll have to convert them from their native Altium format if you're using some other platform). That should contain everything you need to get the boards made. If the production company rejects this package, however, you'll need to address the issue yourself. 35 | 36 | 37 | ### Step 2: Order the electronics components 38 | 39 | All of the components are described in the schematics of the PCBs. Ordering the components is left as an exercise for the reader. 40 | 41 | A complete list of all of the components can be found in the electrical design files. 42 | 43 | 44 | ### Step 3: Get the necessary tools 45 | 46 | - PCB 47 | - All of the electronics components 48 | - A hot air rework tool 49 | - Solder paste 50 | - A printout of the schematics 51 | 52 | 53 | ### Step 4: Solder the components to the boards 54 | 55 | Once you've got the PCBs and all of the components, print out the schematics. Use the schematics to match the reference designators on the PCBs to the reference designators on the schematics, and then get to soldering. 56 | 57 | If you've never soldered surface mount components before, or want a refresher on how to solder, we recommend [this video on using an iron to solder surface mount components](https://www.youtube.com/watch?v=3NN7UGWYmBY), and [this video on using a hot-air soldering station](https://www.youtube.com/watch?v=c_Qt5CtUlqY). 58 | 59 | 60 | ### Step 5: All done! 61 | 62 | Congrats, you finished assembling the electronics! Pat yourself on the back. 63 | -------------------------------------------------------------------------------- /docs/appendices/programming.md: -------------------------------------------------------------------------------- 1 | # Appendix D: QMK Firmware Programming 2 | 3 | 4 | ## Working with QMK 5 | 6 | Ploopy devices are fairly easy to program and reprogram, thanks to the excellent work by all of the developers and maintainers of the [QMK firmware suite](https://github.com/qmk/qmk_firmware). 7 | 8 | 9 | ## Before you begin 10 | 11 | If you have never used QMK before, go through [all of the steps in the QMK guide to set up your environment](https://docs.qmk.fm/#/newbs_getting_started). 12 | 13 | QMK was built for keyboards, so you'll see lots of references to code that looks like the following: 14 | 15 | `-kb ` 16 | 17 | Whenever you see that, use the following syntax: 18 | 19 | `-kb ploopyco/knob` 20 | 21 | and you'll be fine. 22 | 23 | 24 | ## Building the Ploopy device firmware 25 | 26 | Using QMK MSYS or your compilation toolchain of choice, compile the firmware with the following command: 27 | 28 | `qmk compile -kb ploopyco/knob/rev1_001 -km default` 29 | 30 | For more details on building QMK firmware in general, see the [QMK firmware guide](https://docs.qmk.fm/#/newbs_building_firmware). 31 | 32 | 33 | ## Putting the Ploopy device into bootloader mode 34 | 35 | Putting the Ploopy device into bootloader mode is very simple and straightforward. 36 | 37 | 1. Unplug it from your computer. 38 | 2. Open it by removing the screws in the Base and removing the Top. 39 | 3. Look for a pair of vias (gold-plated holes) on the board ([here's a photo](https://ploopy.co/wp-content/uploads/2025/06/knob-vias.jpg)). 40 | 4. Get a paper clip (non-insulated, i.e. no plastic shit covering it) or a pair of tweezers, or some wire. Whatever you've got on hand that's metal. 41 | 5. Stick the paper clip or tweezers into the holes. You're trying to form an electrical connection between the two holes. 42 | 6. While you've got the two vias connected with your metal bridge, plug the Ploopy device into your computer. 43 | 7. The computer should recognise that a mass storage device was just plugged in. Once this is done, you should be able to drag and drop files onto the Ploopy device, as if the board was a USB drive. Feel free to remove the tweezers or paperclip at this point. 44 | 45 | And that's it. While plugged in this way, the Ploopy device will accept new firmware. 46 | 47 | If you want to upload a new firmware file (a ".uf2" file, like "ploopy_knob_v42069" or something), just drag it into the folder, and it'll automatically install on the Ploopy device and restart itself. 48 | 49 | Whenever you want to put new firmware onto the Ploopy device, go through these steps again. 50 | 51 | **TIP**: If your firmware is in some kind of strange state and uploading new firmware isn't fixing it, try uploading [a flash nuke](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython#flash-resetting-uf2-3083182) to the knob before flashing the new firmware. It wipes the memory of the knob completely clean, which can help clear a few types of errors. 52 | 53 | 54 | ## And that's it! 55 | 56 | Happy customizing! 57 | -------------------------------------------------------------------------------- /docs/appendices/volume.md: -------------------------------------------------------------------------------- 1 | # Appendix F: Volume Knob Patch 2 | 3 | A pre-compiled UF2 file to use the Knob as a volume controller is included in the firmwares directory of the Github repository. 4 | 5 | If you'd like to build your own, here's a patch you can apply to the code to get you started: 6 | 7 | diff --git a/keyboards/ploopyco/knob/config.h b/keyboards/ploopyco/knob/config.h 8 | index 9b7d9f5c1a..92d97584cc 100644 9 | --- a/keyboards/ploopyco/knob/config.h 10 | +++ b/keyboards/ploopyco/knob/config.h 11 | @@ -16,7 +16,7 @@ 12 | 13 | #pragma once 14 | 15 | -#define POINTING_DEVICE_HIRES_SCROLL_ENABLE 0 16 | +// #define POINTING_DEVICE_HIRES_SCROLL_ENABLE 0 17 | #define POINTING_DEVICE_AS5600_ENABLE true 18 | 19 | #define I2C_DRIVER I2CD1 20 | diff --git a/keyboards/ploopyco/ploopyco.c b/keyboards/ploopyco/ploopyco.c 21 | index 72fad42aba..24428a73c3 100644 22 | --- a/keyboards/ploopyco/ploopyco.c 23 | +++ b/keyboards/ploopyco/ploopyco.c 24 | @@ -180,23 +180,12 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) { 25 | delta += 4096; 26 | } 27 | 28 | - if (detected_host_os() == OS_WINDOWS || detected_host_os() == OS_LINUX) { 29 | - // Establish a deadzone to prevent spurious inputs 30 | - if (delta > POINTING_DEVICE_AS5600_DEADZONE || delta < -POINTING_DEVICE_AS5600_DEADZONE) { 31 | - current_position = ra; 32 | - mouse_report.v = delta / POINTING_DEVICE_AS5600_SPEED_DIV; 33 | - } 34 | - } else { 35 | - // Certain operating systems, like MacOS, don't play well with the 36 | - // high-res scrolling implementation. For more details, see: 37 | - // https://github.com/qmk/qmk_firmware/issues/17585#issuecomment-2325248167 38 | - if (delta >= POINTING_DEVICE_AS5600_TICK_COUNT) { 39 | - current_position = ra; 40 | - mouse_report.v = 1; 41 | - } else if (delta <= -POINTING_DEVICE_AS5600_TICK_COUNT) { 42 | - current_position = ra; 43 | - mouse_report.v = -1; 44 | - } 45 | + if (delta >= POINTING_DEVICE_AS5600_TICK_COUNT) { 46 | + current_position = ra; 47 | + tap_code(KC_VOLD); 48 | + } else if (delta <= -POINTING_DEVICE_AS5600_TICK_COUNT) { 49 | + current_position = ra; 50 | + tap_code(KC_VOLU); 51 | } 52 | #endif 53 | 54 | Happy coding! -------------------------------------------------------------------------------- /docs/assembly-instructions.md: -------------------------------------------------------------------------------- 1 | # Ploopy Knob Assembly Instructions 2 | 3 | ## Main Instructions 4 | 5 | In this section, you'll go over how to build a Ploopy Knob. This assumes you've sourced the parts yourself following the designs in this repository. 6 | 7 | Here's how these instructions are structured*: 8 | 9 | - 💡 Comments with a lightbulb are good information to know. 10 | - ➡️ Comments with an arrow are commands. Execute them when you encounter them. 11 | - ✅ Comments with a checkmark are verification steps. Check what they tell you to check, and if it's all good, move on. 12 | - 📷 Comments with a camera are references to photos. Check the corresponding image for guidance. 13 | 14 | Most steps have photos, so if you need some additional visual help, consult the images. 15 | 16 | *\* Thanks to [schneems](https://github.com/schneems) for his [great suggestions on how to write documentation](https://github.com/ploopyco/headphones/issues/37).* 17 | 18 | ### Step 1 19 | 20 | - ➡️ Get a #1 Phillips head screwdriver (or similar; you're looking for a small-ish screwdriver here). 21 | - 💡 A pair of needle-nose pliers and a pair of tweezers are optional, but they'll make future steps easier. 22 | 23 | 24 | | ![](img/1.JPG) | 25 | |:--:| 26 | | *Figure 1: Necessary tools* | 27 | 28 | 29 | ### Step 2 30 | 31 | - ➡️ Grab the plastic knob base, the PCB, and two #1 Phillips head plastic screws. 32 | - ➡️ Place the PCB in the base of the knob. Make sure to align the USB port with the slot for it in the base. 📷 *See Figure 2.2.* 33 | - ➡️ Screw in the two screws. 📷 *See Figure 2.3.* 34 | 35 | | ![](img/21.JPG) | 36 | |:--:| 37 | | *Figure 2.1: Parts needed for Step 2* | 38 | 39 | 40 | | ![](img/22.JPG) | 41 | |:--:| 42 | | *Figure 2.2: Align the USB port on the PCB with the slot in the base* | 43 | 44 | | ![](img/23.JPG) | 45 | |:--:| 46 | | *Figure 2.3: Attach the PCB with two screws* | 47 | 48 | 49 | 50 | ### Step 3 51 | 52 | - ➡️ Grab the top half of the knob and two magnets. 53 | - ➡️ Take ONE of the two magnets and insert it into one of the slots. A little force is required to press this first magnet into its slot. 📷 *See Figure 3.2.* 54 | - 💡 Do not insert magnet #2 until explicitly told to do so. 55 | - 💡 Magnet #1 when inserted should be free to rattle around a bit inside its slot before magnet #2 is installed. This is how you know magnet #1 is fully pressed in. 56 | - 💡 The orientation of both magnets needs to be verified before inserting magnet #2. When both magnets are inserted correctly, they'll attract each other, not repel each other. 57 | - ➡️ Without inserting it, place magnet #2 on the outside of the cylinder, closest to the empty slot. It should stick to the cylinder due to the magnetic attraction. 📷 *See Figure 3.3.* 58 | - 💡 Now, magnet #2 is oriented correctly. It just needs to be slipped into the slot. 59 | - ➡️ Without rotating magnet #2, slip it into its slot and press it in. 60 | - 💡 When both magnets are fully seated, you should hear a click as the two magnet snap together from inside their respective slots. 61 | 62 | | ![](img/31.JPG) | 63 | |:--:| 64 | | *Figure 3.1: Parts needed for Step 3* | 65 | 66 | 67 | | ![](img/32.JPG) | 68 | |:--:| 69 | | *Figure 3.2: Insert magnet #1 into the slot* | 70 | 71 | | ![](img/33.JPG) | 72 | |:--:| 73 | | *Figure 3.3: Align magnet #2 with the first* | 74 | 75 | | ![](img/34.JPG) | 76 | |:--:| 77 | | *Figure 3.4: Press magnet #2 into its slot* | 78 | 79 | ### Step 4 80 | 81 | - ➡️ Gently press the bearing into the top half of the knob. 82 | - 💡 Press with your thumbs all around the circumference of the bearing to make sure it's seated all the way into the slot. 83 | 84 | | ![](img/4.JPG) | 85 | |:--:| 86 | | *Figure 4: Press the bearing into the top half of the knob* | 87 | 88 | 89 | ### Step 5 90 | 91 | 92 | - ➡️ Take the top half of the knob, place it above the bottom half, making sure the two circles line up. Press the top half into the bottom half. 93 | - ➡️ You're done! Plug it in and take it for a spin! 94 | 95 | | ![](img/5.JPG) | 96 | |:--:| 97 | | *Figure 5: Press the knob halves together* | 98 | -------------------------------------------------------------------------------- /docs/img/1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/1.JPG -------------------------------------------------------------------------------- /docs/img/21.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/21.JPG -------------------------------------------------------------------------------- /docs/img/22.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/22.JPG -------------------------------------------------------------------------------- /docs/img/23.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/23.JPG -------------------------------------------------------------------------------- /docs/img/31.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/31.JPG -------------------------------------------------------------------------------- /docs/img/32.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/32.JPG -------------------------------------------------------------------------------- /docs/img/33.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/33.JPG -------------------------------------------------------------------------------- /docs/img/34.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/34.JPG -------------------------------------------------------------------------------- /docs/img/4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/4.JPG -------------------------------------------------------------------------------- /docs/img/5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/docs/img/5.JPG -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Home 2 | 3 | So, you want to build a Ploopy Knob, eh? Or, maybe you want to replace some broken parts. Maybe you want to reprogram it. Or maybe you just want to know how it all works. No matter the motivation, this is the place to learn. 4 | 5 | **Sourced the parts and itching to get it built?** --> Get started by going to the [assembly instructions](assembly-instructions.md). 6 | 7 | **Looking to purchase your own Knob?** --> [Check out the Ploopy store](https://ploopy.co/product-category/knob). 8 | 9 | **Building a Ploopy Knob from scratch?** --> Get started by going to [Appendix A: Printed circuit boards](appendices/pcbs.md). 10 | 11 | --- 12 | 13 | *Copyright (C) 2025 Ploopy Corporation. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".* -------------------------------------------------------------------------------- /docs/license.md: -------------------------------------------------------------------------------- 1 | # GNU Free Documentation License 2 | 3 | Version 1.3, 3 November 2008 4 | 5 | Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, 6 | Inc. 7 | 8 | Everyone is permitted to copy and distribute verbatim copies of this 9 | license document, but changing it is not allowed. 10 | 11 | #### 0. PREAMBLE 12 | 13 | The purpose of this License is to make a manual, textbook, or other 14 | functional and useful document "free" in the sense of freedom: to 15 | assure everyone the effective freedom to copy and redistribute it, 16 | with or without modifying it, either commercially or noncommercially. 17 | Secondarily, this License preserves for the author and publisher a way 18 | to get credit for their work, while not being considered responsible 19 | for modifications made by others. 20 | 21 | This License is a kind of "copyleft", which means that derivative 22 | works of the document must themselves be free in the same sense. It 23 | complements the GNU General Public License, which is a copyleft 24 | license designed for free software. 25 | 26 | We have designed this License in order to use it for manuals for free 27 | software, because free software needs free documentation: a free 28 | program should come with manuals providing the same freedoms that the 29 | software does. But this License is not limited to software manuals; it 30 | can be used for any textual work, regardless of subject matter or 31 | whether it is published as a printed book. We recommend this License 32 | principally for works whose purpose is instruction or reference. 33 | 34 | #### 1. APPLICABILITY AND DEFINITIONS 35 | 36 | This License applies to any manual or other work, in any medium, that 37 | contains a notice placed by the copyright holder saying it can be 38 | distributed under the terms of this License. Such a notice grants a 39 | world-wide, royalty-free license, unlimited in duration, to use that 40 | work under the conditions stated herein. The "Document", below, refers 41 | to any such manual or work. Any member of the public is a licensee, 42 | and is addressed as "you". You accept the license if you copy, modify 43 | or distribute the work in a way requiring permission under copyright 44 | law. 45 | 46 | A "Modified Version" of the Document means any work containing the 47 | Document or a portion of it, either copied verbatim, or with 48 | modifications and/or translated into another language. 49 | 50 | A "Secondary Section" is a named appendix or a front-matter section of 51 | the Document that deals exclusively with the relationship of the 52 | publishers or authors of the Document to the Document's overall 53 | subject (or to related matters) and contains nothing that could fall 54 | directly within that overall subject. (Thus, if the Document is in 55 | part a textbook of mathematics, a Secondary Section may not explain 56 | any mathematics.) The relationship could be a matter of historical 57 | connection with the subject or with related matters, or of legal, 58 | commercial, philosophical, ethical or political position regarding 59 | them. 60 | 61 | The "Invariant Sections" are certain Secondary Sections whose titles 62 | are designated, as being those of Invariant Sections, in the notice 63 | that says that the Document is released under this License. If a 64 | section does not fit the above definition of Secondary then it is not 65 | allowed to be designated as Invariant. The Document may contain zero 66 | Invariant Sections. If the Document does not identify any Invariant 67 | Sections then there are none. 68 | 69 | The "Cover Texts" are certain short passages of text that are listed, 70 | as Front-Cover Texts or Back-Cover Texts, in the notice that says that 71 | the Document is released under this License. A Front-Cover Text may be 72 | at most 5 words, and a Back-Cover Text may be at most 25 words. 73 | 74 | A "Transparent" copy of the Document means a machine-readable copy, 75 | represented in a format whose specification is available to the 76 | general public, that is suitable for revising the document 77 | straightforwardly with generic text editors or (for images composed of 78 | pixels) generic paint programs or (for drawings) some widely available 79 | drawing editor, and that is suitable for input to text formatters or 80 | for automatic translation to a variety of formats suitable for input 81 | to text formatters. A copy made in an otherwise Transparent file 82 | format whose markup, or absence of markup, has been arranged to thwart 83 | or discourage subsequent modification by readers is not Transparent. 84 | An image format is not Transparent if used for any substantial amount 85 | of text. A copy that is not "Transparent" is called "Opaque". 86 | 87 | Examples of suitable formats for Transparent copies include plain 88 | ASCII without markup, Texinfo input format, LaTeX input format, SGML 89 | or XML using a publicly available DTD, and standard-conforming simple 90 | HTML, PostScript or PDF designed for human modification. Examples of 91 | transparent image formats include PNG, XCF and JPG. Opaque formats 92 | include proprietary formats that can be read and edited only by 93 | proprietary word processors, SGML or XML for which the DTD and/or 94 | processing tools are not generally available, and the 95 | machine-generated HTML, PostScript or PDF produced by some word 96 | processors for output purposes only. 97 | 98 | The "Title Page" means, for a printed book, the title page itself, 99 | plus such following pages as are needed to hold, legibly, the material 100 | this License requires to appear in the title page. For works in 101 | formats which do not have any title page as such, "Title Page" means 102 | the text near the most prominent appearance of the work's title, 103 | preceding the beginning of the body of the text. 104 | 105 | The "publisher" means any person or entity that distributes copies of 106 | the Document to the public. 107 | 108 | A section "Entitled XYZ" means a named subunit of the Document whose 109 | title either is precisely XYZ or contains XYZ in parentheses following 110 | text that translates XYZ in another language. (Here XYZ stands for a 111 | specific section name mentioned below, such as "Acknowledgements", 112 | "Dedications", "Endorsements", or "History".) To "Preserve the Title" 113 | of such a section when you modify the Document means that it remains a 114 | section "Entitled XYZ" according to this definition. 115 | 116 | The Document may include Warranty Disclaimers next to the notice which 117 | states that this License applies to the Document. These Warranty 118 | Disclaimers are considered to be included by reference in this 119 | License, but only as regards disclaiming warranties: any other 120 | implication that these Warranty Disclaimers may have is void and has 121 | no effect on the meaning of this License. 122 | 123 | #### 2. VERBATIM COPYING 124 | 125 | You may copy and distribute the Document in any medium, either 126 | commercially or noncommercially, provided that this License, the 127 | copyright notices, and the license notice saying this License applies 128 | to the Document are reproduced in all copies, and that you add no 129 | other conditions whatsoever to those of this License. You may not use 130 | technical measures to obstruct or control the reading or further 131 | copying of the copies you make or distribute. However, you may accept 132 | compensation in exchange for copies. If you distribute a large enough 133 | number of copies you must also follow the conditions in section 3. 134 | 135 | You may also lend copies, under the same conditions stated above, and 136 | you may publicly display copies. 137 | 138 | #### 3. COPYING IN QUANTITY 139 | 140 | If you publish printed copies (or copies in media that commonly have 141 | printed covers) of the Document, numbering more than 100, and the 142 | Document's license notice requires Cover Texts, you must enclose the 143 | copies in covers that carry, clearly and legibly, all these Cover 144 | Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on 145 | the back cover. Both covers must also clearly and legibly identify you 146 | as the publisher of these copies. The front cover must present the 147 | full title with all words of the title equally prominent and visible. 148 | You may add other material on the covers in addition. Copying with 149 | changes limited to the covers, as long as they preserve the title of 150 | the Document and satisfy these conditions, can be treated as verbatim 151 | copying in other respects. 152 | 153 | If the required texts for either cover are too voluminous to fit 154 | legibly, you should put the first ones listed (as many as fit 155 | reasonably) on the actual cover, and continue the rest onto adjacent 156 | pages. 157 | 158 | If you publish or distribute Opaque copies of the Document numbering 159 | more than 100, you must either include a machine-readable Transparent 160 | copy along with each Opaque copy, or state in or with each Opaque copy 161 | a computer-network location from which the general network-using 162 | public has access to download using public-standard network protocols 163 | a complete Transparent copy of the Document, free of added material. 164 | If you use the latter option, you must take reasonably prudent steps, 165 | when you begin distribution of Opaque copies in quantity, to ensure 166 | that this Transparent copy will remain thus accessible at the stated 167 | location until at least one year after the last time you distribute an 168 | Opaque copy (directly or through your agents or retailers) of that 169 | edition to the public. 170 | 171 | It is requested, but not required, that you contact the authors of the 172 | Document well before redistributing any large number of copies, to 173 | give them a chance to provide you with an updated version of the 174 | Document. 175 | 176 | #### 4. MODIFICATIONS 177 | 178 | You may copy and distribute a Modified Version of the Document under 179 | the conditions of sections 2 and 3 above, provided that you release 180 | the Modified Version under precisely this License, with the Modified 181 | Version filling the role of the Document, thus licensing distribution 182 | and modification of the Modified Version to whoever possesses a copy 183 | of it. In addition, you must do these things in the Modified Version: 184 | 185 | - A. Use in the Title Page (and on the covers, if any) a title 186 | distinct from that of the Document, and from those of previous 187 | versions (which should, if there were any, be listed in the 188 | History section of the Document). You may use the same title as a 189 | previous version if the original publisher of that version 190 | gives permission. 191 | - B. List on the Title Page, as authors, one or more persons or 192 | entities responsible for authorship of the modifications in the 193 | Modified Version, together with at least five of the principal 194 | authors of the Document (all of its principal authors, if it has 195 | fewer than five), unless they release you from this requirement. 196 | - C. State on the Title page the name of the publisher of the 197 | Modified Version, as the publisher. 198 | - D. Preserve all the copyright notices of the Document. 199 | - E. Add an appropriate copyright notice for your modifications 200 | adjacent to the other copyright notices. 201 | - F. Include, immediately after the copyright notices, a license 202 | notice giving the public permission to use the Modified Version 203 | under the terms of this License, in the form shown in the 204 | Addendum below. 205 | - G. Preserve in that license notice the full lists of Invariant 206 | Sections and required Cover Texts given in the Document's 207 | license notice. 208 | - H. Include an unaltered copy of this License. 209 | - I. Preserve the section Entitled "History", Preserve its Title, 210 | and add to it an item stating at least the title, year, new 211 | authors, and publisher of the Modified Version as given on the 212 | Title Page. If there is no section Entitled "History" in the 213 | Document, create one stating the title, year, authors, and 214 | publisher of the Document as given on its Title Page, then add an 215 | item describing the Modified Version as stated in the 216 | previous sentence. 217 | - J. Preserve the network location, if any, given in the Document 218 | for public access to a Transparent copy of the Document, and 219 | likewise the network locations given in the Document for previous 220 | versions it was based on. These may be placed in the "History" 221 | section. You may omit a network location for a work that was 222 | published at least four years before the Document itself, or if 223 | the original publisher of the version it refers to 224 | gives permission. 225 | - K. For any section Entitled "Acknowledgements" or "Dedications", 226 | Preserve the Title of the section, and preserve in the section all 227 | the substance and tone of each of the contributor acknowledgements 228 | and/or dedications given therein. 229 | - L. Preserve all the Invariant Sections of the Document, unaltered 230 | in their text and in their titles. Section numbers or the 231 | equivalent are not considered part of the section titles. 232 | - M. Delete any section Entitled "Endorsements". Such a section may 233 | not be included in the Modified Version. 234 | - N. Do not retitle any existing section to be Entitled 235 | "Endorsements" or to conflict in title with any Invariant Section. 236 | - O. Preserve any Warranty Disclaimers. 237 | 238 | If the Modified Version includes new front-matter sections or 239 | appendices that qualify as Secondary Sections and contain no material 240 | copied from the Document, you may at your option designate some or all 241 | of these sections as invariant. To do this, add their titles to the 242 | list of Invariant Sections in the Modified Version's license notice. 243 | These titles must be distinct from any other section titles. 244 | 245 | You may add a section Entitled "Endorsements", provided it contains 246 | nothing but endorsements of your Modified Version by various 247 | parties—for example, statements of peer review or that the text has 248 | been approved by an organization as the authoritative definition of a 249 | standard. 250 | 251 | You may add a passage of up to five words as a Front-Cover Text, and a 252 | passage of up to 25 words as a Back-Cover Text, to the end of the list 253 | of Cover Texts in the Modified Version. Only one passage of 254 | Front-Cover Text and one of Back-Cover Text may be added by (or 255 | through arrangements made by) any one entity. If the Document already 256 | includes a cover text for the same cover, previously added by you or 257 | by arrangement made by the same entity you are acting on behalf of, 258 | you may not add another; but you may replace the old one, on explicit 259 | permission from the previous publisher that added the old one. 260 | 261 | The author(s) and publisher(s) of the Document do not by this License 262 | give permission to use their names for publicity for or to assert or 263 | imply endorsement of any Modified Version. 264 | 265 | #### 5. COMBINING DOCUMENTS 266 | 267 | You may combine the Document with other documents released under this 268 | License, under the terms defined in section 4 above for modified 269 | versions, provided that you include in the combination all of the 270 | Invariant Sections of all of the original documents, unmodified, and 271 | list them all as Invariant Sections of your combined work in its 272 | license notice, and that you preserve all their Warranty Disclaimers. 273 | 274 | The combined work need only contain one copy of this License, and 275 | multiple identical Invariant Sections may be replaced with a single 276 | copy. If there are multiple Invariant Sections with the same name but 277 | different contents, make the title of each such section unique by 278 | adding at the end of it, in parentheses, the name of the original 279 | author or publisher of that section if known, or else a unique number. 280 | Make the same adjustment to the section titles in the list of 281 | Invariant Sections in the license notice of the combined work. 282 | 283 | In the combination, you must combine any sections Entitled "History" 284 | in the various original documents, forming one section Entitled 285 | "History"; likewise combine any sections Entitled "Acknowledgements", 286 | and any sections Entitled "Dedications". You must delete all sections 287 | Entitled "Endorsements". 288 | 289 | #### 6. COLLECTIONS OF DOCUMENTS 290 | 291 | You may make a collection consisting of the Document and other 292 | documents released under this License, and replace the individual 293 | copies of this License in the various documents with a single copy 294 | that is included in the collection, provided that you follow the rules 295 | of this License for verbatim copying of each of the documents in all 296 | other respects. 297 | 298 | You may extract a single document from such a collection, and 299 | distribute it individually under this License, provided you insert a 300 | copy of this License into the extracted document, and follow this 301 | License in all other respects regarding verbatim copying of that 302 | document. 303 | 304 | #### 7. AGGREGATION WITH INDEPENDENT WORKS 305 | 306 | A compilation of the Document or its derivatives with other separate 307 | and independent documents or works, in or on a volume of a storage or 308 | distribution medium, is called an "aggregate" if the copyright 309 | resulting from the compilation is not used to limit the legal rights 310 | of the compilation's users beyond what the individual works permit. 311 | When the Document is included in an aggregate, this License does not 312 | apply to the other works in the aggregate which are not themselves 313 | derivative works of the Document. 314 | 315 | If the Cover Text requirement of section 3 is applicable to these 316 | copies of the Document, then if the Document is less than one half of 317 | the entire aggregate, the Document's Cover Texts may be placed on 318 | covers that bracket the Document within the aggregate, or the 319 | electronic equivalent of covers if the Document is in electronic form. 320 | Otherwise they must appear on printed covers that bracket the whole 321 | aggregate. 322 | 323 | #### 8. TRANSLATION 324 | 325 | Translation is considered a kind of modification, so you may 326 | distribute translations of the Document under the terms of section 4. 327 | Replacing Invariant Sections with translations requires special 328 | permission from their copyright holders, but you may include 329 | translations of some or all Invariant Sections in addition to the 330 | original versions of these Invariant Sections. You may include a 331 | translation of this License, and all the license notices in the 332 | Document, and any Warranty Disclaimers, provided that you also include 333 | the original English version of this License and the original versions 334 | of those notices and disclaimers. In case of a disagreement between 335 | the translation and the original version of this License or a notice 336 | or disclaimer, the original version will prevail. 337 | 338 | If a section in the Document is Entitled "Acknowledgements", 339 | "Dedications", or "History", the requirement (section 4) to Preserve 340 | its Title (section 1) will typically require changing the actual 341 | title. 342 | 343 | #### 9. TERMINATION 344 | 345 | You may not copy, modify, sublicense, or distribute the Document 346 | except as expressly provided under this License. Any attempt otherwise 347 | to copy, modify, sublicense, or distribute it is void, and will 348 | automatically terminate your rights under this License. 349 | 350 | However, if you cease all violation of this License, then your license 351 | from a particular copyright holder is reinstated (a) provisionally, 352 | unless and until the copyright holder explicitly and finally 353 | terminates your license, and (b) permanently, if the copyright holder 354 | fails to notify you of the violation by some reasonable means prior to 355 | 60 days after the cessation. 356 | 357 | Moreover, your license from a particular copyright holder is 358 | reinstated permanently if the copyright holder notifies you of the 359 | violation by some reasonable means, this is the first time you have 360 | received notice of violation of this License (for any work) from that 361 | copyright holder, and you cure the violation prior to 30 days after 362 | your receipt of the notice. 363 | 364 | Termination of your rights under this section does not terminate the 365 | licenses of parties who have received copies or rights from you under 366 | this License. If your rights have been terminated and not permanently 367 | reinstated, receipt of a copy of some or all of the same material does 368 | not give you any rights to use it. 369 | 370 | #### 10. FUTURE REVISIONS OF THIS LICENSE 371 | 372 | The Free Software Foundation may publish new, revised versions of the 373 | GNU Free Documentation License from time to time. Such new versions 374 | will be similar in spirit to the present version, but may differ in 375 | detail to address new problems or concerns. See 376 | . 377 | 378 | Each version of the License is given a distinguishing version number. 379 | If the Document specifies that a particular numbered version of this 380 | License "or any later version" applies to it, you have the option of 381 | following the terms and conditions either of that specified version or 382 | of any later version that has been published (not as a draft) by the 383 | Free Software Foundation. If the Document does not specify a version 384 | number of this License, you may choose any version ever published (not 385 | as a draft) by the Free Software Foundation. If the Document specifies 386 | that a proxy can decide which future versions of this License can be 387 | used, that proxy's public statement of acceptance of a version 388 | permanently authorizes you to choose that version for the Document. 389 | 390 | #### 11. RELICENSING 391 | 392 | "Massive Multiauthor Collaboration Site" (or "MMC Site") means any 393 | World Wide Web server that publishes copyrightable works and also 394 | provides prominent facilities for anybody to edit those works. A 395 | public wiki that anybody can edit is an example of such a server. A 396 | "Massive Multiauthor Collaboration" (or "MMC") contained in the site 397 | means any set of copyrightable works thus published on the MMC site. 398 | 399 | "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 400 | license published by Creative Commons Corporation, a not-for-profit 401 | corporation with a principal place of business in San Francisco, 402 | California, as well as future copyleft versions of that license 403 | published by that same organization. 404 | 405 | "Incorporate" means to publish or republish a Document, in whole or in 406 | part, as part of another Document. 407 | 408 | An MMC is "eligible for relicensing" if it is licensed under this 409 | License, and if all works that were first published under this License 410 | somewhere other than this MMC, and subsequently incorporated in whole 411 | or in part into the MMC, (1) had no cover texts or invariant sections, 412 | and (2) were thus incorporated prior to November 1, 2008. 413 | 414 | The operator of an MMC Site may republish an MMC contained in the site 415 | under CC-BY-SA on the same site at any time before August 1, 2009, 416 | provided the MMC is eligible for relicensing. 417 | 418 | ### ADDENDUM: How to use this License for your documents 419 | 420 | To use this License in a document you have written, include a copy of 421 | the License in the document and put the following copyright and 422 | license notices just after the title page: 423 | 424 | Copyright (C) YEAR YOUR NAME. 425 | Permission is granted to copy, distribute and/or modify this document 426 | under the terms of the GNU Free Documentation License, Version 1.3 427 | or any later version published by the Free Software Foundation; 428 | with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 429 | A copy of the license is included in the section entitled "GNU 430 | Free Documentation License". 431 | 432 | If you have Invariant Sections, Front-Cover Texts and Back-Cover 433 | Texts, replace the "with … Texts." line with this: 434 | 435 | with the Invariant Sections being LIST THEIR TITLES, with the 436 | Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. 437 | 438 | If you have Invariant Sections without Cover Texts, or some other 439 | combination of the three, merge those two alternatives to suit the 440 | situation. 441 | 442 | If your document contains nontrivial examples of program code, we 443 | recommend releasing these examples in parallel under your choice of 444 | free software license, such as the GNU General Public License, to 445 | permit their use in free software. -------------------------------------------------------------------------------- /firmwares/ploopyco_knob_fast.uf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/firmwares/ploopyco_knob_fast.uf2 -------------------------------------------------------------------------------- /firmwares/ploopyco_knob_slow.uf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/firmwares/ploopyco_knob_slow.uf2 -------------------------------------------------------------------------------- /firmwares/ploopyco_knob_volume.uf2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/firmwares/ploopyco_knob_volume.uf2 -------------------------------------------------------------------------------- /hardware/electronics/Knob-R1_001.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/Knob-R1_001.pdf -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/Connectors.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/Connectors.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/HapticFeedback.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/HapticFeedback.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/History/ScrollWheel.~(1).PcbDoc.Zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/History/ScrollWheel.~(1).PcbDoc.Zip -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/MCU.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/MCU.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/Mechanical.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/Mechanical.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/Regulators.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/Regulators.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/RotationSensor.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/RotationSensor.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/ScrollWheel.Annotation: -------------------------------------------------------------------------------- 1 | [DesignatorManager] 2 | LogicalDesignator0=FB1 3 | LogicalPartID0=1 4 | DocumentName0=Connectors.SchDoc 5 | ChannelName0=USB 6 | UniqueID0=\BUHOUAJX\ADTZCRYT 7 | PhysicalDesignator0=USB.FB.1 8 | PhysicalDesignatorLocked0=0 9 | LogicalDesignator1=Ra1 10 | LogicalPartID1=2 11 | DocumentName1=Connectors.SchDoc 12 | ChannelName1=USB 13 | UniqueID1=\BUHOUAJX\GSLOCGAT 14 | PhysicalDesignator1=USB.Ra.1 15 | PhysicalDesignatorLocked1=0 16 | LogicalDesignator2=Ra1 17 | LogicalPartID2=1 18 | DocumentName2=Connectors.SchDoc 19 | ChannelName2=USB 20 | UniqueID2=\BUHOUAJX\IHXDIXVB 21 | PhysicalDesignator2=USB.Ra.1 22 | PhysicalDesignatorLocked2=0 23 | LogicalDesignator3=J3 24 | LogicalPartID3=1 25 | DocumentName3=Connectors.SchDoc 26 | ChannelName3=USB 27 | UniqueID3=\BUHOUAJX\IQXFZBUZ 28 | PhysicalDesignator3=USB.J.3 29 | PhysicalDesignatorLocked3=0 30 | LogicalDesignator4=FB3 31 | LogicalPartID4=1 32 | DocumentName4=Connectors.SchDoc 33 | ChannelName4=USB 34 | UniqueID4=\BUHOUAJX\JYVRHTWL 35 | PhysicalDesignator4=USB.FB.3 36 | PhysicalDesignatorLocked4=0 37 | LogicalDesignator5=Z1 38 | LogicalPartID5=1 39 | DocumentName5=Connectors.SchDoc 40 | ChannelName5=USB 41 | UniqueID5=\BUHOUAJX\MHNMVSHF 42 | PhysicalDesignator5=USB.Z.1 43 | PhysicalDesignatorLocked5=0 44 | LogicalDesignator6=Ra1 45 | LogicalPartID6=3 46 | DocumentName6=Connectors.SchDoc 47 | ChannelName6=USB 48 | UniqueID6=\BUHOUAJX\RFRPBPAZ 49 | PhysicalDesignator6=USB.Ra.1 50 | PhysicalDesignatorLocked6=0 51 | LogicalDesignator7=R7 52 | LogicalPartID7=1 53 | DocumentName7=Connectors.SchDoc 54 | ChannelName7=USB 55 | UniqueID7=\BUHOUAJX\RPZKDCHQ 56 | PhysicalDesignator7=USB.R.7 57 | PhysicalDesignatorLocked7=0 58 | LogicalDesignator8=R6 59 | LogicalPartID8=1 60 | DocumentName8=Connectors.SchDoc 61 | ChannelName8=USB 62 | UniqueID8=\BUHOUAJX\STHGMNKH 63 | PhysicalDesignator8=USB.R.6 64 | PhysicalDesignatorLocked8=0 65 | LogicalDesignator9=FB2 66 | LogicalPartID9=1 67 | DocumentName9=Connectors.SchDoc 68 | ChannelName9=USB 69 | UniqueID9=\BUHOUAJX\UBEFDYPN 70 | PhysicalDesignator9=USB.FB.2 71 | PhysicalDesignatorLocked9=0 72 | LogicalDesignator10=Ra1 73 | LogicalPartID10=4 74 | DocumentName10=Connectors.SchDoc 75 | ChannelName10=USB 76 | UniqueID10=\BUHOUAJX\UXJTFOAB 77 | PhysicalDesignator10=USB.Ra.1 78 | PhysicalDesignatorLocked10=0 79 | LogicalDesignator11=R3 80 | LogicalPartID11=1 81 | DocumentName11=MCU.SchDoc 82 | ChannelName11=MCU 83 | UniqueID11=\KPFJTNEE\AWRLNTPS 84 | PhysicalDesignator11=MCU.R.3 85 | PhysicalDesignatorLocked11=0 86 | LogicalDesignator12=C1 87 | LogicalPartID12=1 88 | DocumentName12=MCU.SchDoc 89 | ChannelName12=MCU 90 | UniqueID12=\KPFJTNEE\BQLYKTKQ 91 | PhysicalDesignator12=MCU.C.1 92 | PhysicalDesignatorLocked12=0 93 | LogicalDesignator13=C21 94 | LogicalPartID13=1 95 | DocumentName13=MCU.SchDoc 96 | ChannelName13=MCU 97 | UniqueID13=\KPFJTNEE\DSNXEWES 98 | PhysicalDesignator13=MCU.C.21 99 | PhysicalDesignatorLocked13=0 100 | LogicalDesignator14=R11 101 | LogicalPartID14=1 102 | DocumentName14=MCU.SchDoc 103 | ChannelName14=MCU 104 | UniqueID14=\KPFJTNEE\FMUTJRNM 105 | PhysicalDesignator14=MCU.R.11 106 | PhysicalDesignatorLocked14=0 107 | LogicalDesignator15=C5 108 | LogicalPartID15=1 109 | DocumentName15=MCU.SchDoc 110 | ChannelName15=MCU 111 | UniqueID15=\KPFJTNEE\HJDGCWIY 112 | PhysicalDesignator15=MCU.C.5 113 | PhysicalDesignatorLocked15=0 114 | LogicalDesignator16=C8 115 | LogicalPartID16=1 116 | DocumentName16=MCU.SchDoc 117 | ChannelName16=MCU 118 | UniqueID16=\KPFJTNEE\HYSKPSWL 119 | PhysicalDesignator16=MCU.C.8 120 | PhysicalDesignatorLocked16=0 121 | LogicalDesignator17=J1 122 | LogicalPartID17=1 123 | DocumentName17=MCU.SchDoc 124 | ChannelName17=MCU 125 | UniqueID17=\KPFJTNEE\IKRJHFZQ 126 | PhysicalDesignator17=MCU.J.1 127 | PhysicalDesignatorLocked17=0 128 | LogicalDesignator18=U5 129 | LogicalPartID18=1 130 | DocumentName18=MCU.SchDoc 131 | ChannelName18=MCU 132 | UniqueID18=\KPFJTNEE\IXGDNEEA 133 | PhysicalDesignator18=MCU.U.5 134 | PhysicalDesignatorLocked18=0 135 | LogicalDesignator19=C7 136 | LogicalPartID19=1 137 | DocumentName19=MCU.SchDoc 138 | ChannelName19=MCU 139 | UniqueID19=\KPFJTNEE\JTFWEYKN 140 | PhysicalDesignator19=MCU.C.7 141 | PhysicalDesignatorLocked19=0 142 | LogicalDesignator20=Y1 143 | LogicalPartID20=1 144 | DocumentName20=MCU.SchDoc 145 | ChannelName20=MCU 146 | UniqueID20=\KPFJTNEE\MRZZVTEO 147 | PhysicalDesignator20=MCU.Y.1 148 | PhysicalDesignatorLocked20=0 149 | LogicalDesignator21=C2 150 | LogicalPartID21=1 151 | DocumentName21=MCU.SchDoc 152 | ChannelName21=MCU 153 | UniqueID21=\KPFJTNEE\NPAOELVK 154 | PhysicalDesignator21=MCU.C.2 155 | PhysicalDesignatorLocked21=0 156 | LogicalDesignator22=C22 157 | LogicalPartID22=1 158 | DocumentName22=MCU.SchDoc 159 | ChannelName22=MCU 160 | UniqueID22=\KPFJTNEE\NVYGHVLB 161 | PhysicalDesignator22=MCU.C.22 162 | PhysicalDesignatorLocked22=0 163 | LogicalDesignator23=R2 164 | LogicalPartID23=1 165 | DocumentName23=MCU.SchDoc 166 | ChannelName23=MCU 167 | UniqueID23=\KPFJTNEE\TTSXWHZY 168 | PhysicalDesignator23=MCU.R.2 169 | PhysicalDesignatorLocked23=0 170 | LogicalDesignator24=U1 171 | LogicalPartID24=1 172 | DocumentName24=MCU.SchDoc 173 | ChannelName24=MCU 174 | UniqueID24=\KPFJTNEE\WXJVFHAO 175 | PhysicalDesignator24=MCU.U.1 176 | PhysicalDesignatorLocked24=0 177 | LogicalDesignator25=C24 178 | LogicalPartID25=1 179 | DocumentName25=MCU.SchDoc 180 | ChannelName25=MCU 181 | UniqueID25=\KPFJTNEE\XAOUNXDB 182 | PhysicalDesignator25=MCU.C.24 183 | PhysicalDesignatorLocked25=0 184 | LogicalDesignator26=C3 185 | LogicalPartID26=1 186 | DocumentName26=MCU.SchDoc 187 | ChannelName26=MCU 188 | UniqueID26=\KPFJTNEE\YHQVGJJM 189 | PhysicalDesignator26=MCU.C.3 190 | PhysicalDesignatorLocked26=0 191 | LogicalDesignator27=C6 192 | LogicalPartID27=1 193 | DocumentName27=MCU.SchDoc 194 | ChannelName27=MCU 195 | UniqueID27=\KPFJTNEE\YTAVCWNE 196 | PhysicalDesignator27=MCU.C.6 197 | PhysicalDesignatorLocked27=0 198 | LogicalDesignator28=C4 199 | LogicalPartID28=1 200 | DocumentName28=MCU.SchDoc 201 | ChannelName28=MCU 202 | UniqueID28=\KPFJTNEE\ZGBYJFYI 203 | PhysicalDesignator28=MCU.C.4 204 | PhysicalDesignatorLocked28=0 205 | LogicalDesignator29=R1 206 | LogicalPartID29=1 207 | DocumentName29=MCU.SchDoc 208 | ChannelName29=MCU 209 | UniqueID29=\KPFJTNEE\ZJTBYXEA 210 | PhysicalDesignator29=MCU.R.1 211 | PhysicalDesignatorLocked29=0 212 | LogicalDesignator30=FID4 213 | LogicalPartID30=1 214 | DocumentName30=Mechanical.SchDoc 215 | ChannelName30=MCH 216 | UniqueID30=\NDZGVAIK\AWFOKXRB 217 | PhysicalDesignator30=MCH.FID.4 218 | PhysicalDesignatorLocked30=0 219 | LogicalDesignator31=FID6 220 | LogicalPartID31=1 221 | DocumentName31=Mechanical.SchDoc 222 | ChannelName31=MCH 223 | UniqueID31=\NDZGVAIK\CWBUJCYC 224 | PhysicalDesignator31=MCH.FID.6 225 | PhysicalDesignatorLocked31=0 226 | LogicalDesignator32=LOGO2 227 | LogicalPartID32=1 228 | DocumentName32=Mechanical.SchDoc 229 | ChannelName32=MCH 230 | UniqueID32=\NDZGVAIK\ENPBNFOP 231 | PhysicalDesignator32=MCH.LOGO.2 232 | PhysicalDesignatorLocked32=0 233 | LogicalDesignator33=SP6 234 | LogicalPartID33=1 235 | DocumentName33=Mechanical.SchDoc 236 | ChannelName33=MCH 237 | UniqueID33=\NDZGVAIK\IFGOPBUK 238 | PhysicalDesignator33=MCH.SP.6 239 | PhysicalDesignatorLocked33=0 240 | LogicalDesignator34=FID5 241 | LogicalPartID34=1 242 | DocumentName34=Mechanical.SchDoc 243 | ChannelName34=MCH 244 | UniqueID34=\NDZGVAIK\IOVYPBAG 245 | PhysicalDesignator34=MCH.FID.5 246 | PhysicalDesignatorLocked34=0 247 | LogicalDesignator35=FID2 248 | LogicalPartID35=1 249 | DocumentName35=Mechanical.SchDoc 250 | ChannelName35=MCH 251 | UniqueID35=\NDZGVAIK\KSLNYSAO 252 | PhysicalDesignator35=MCH.FID.2 253 | PhysicalDesignatorLocked35=0 254 | LogicalDesignator36=SP3 255 | LogicalPartID36=1 256 | DocumentName36=Mechanical.SchDoc 257 | ChannelName36=MCH 258 | UniqueID36=\NDZGVAIK\LIUKLTIK 259 | PhysicalDesignator36=MCH.SP.3 260 | PhysicalDesignatorLocked36=0 261 | LogicalDesignator37=FID3 262 | LogicalPartID37=1 263 | DocumentName37=Mechanical.SchDoc 264 | ChannelName37=MCH 265 | UniqueID37=\NDZGVAIK\LUPWYFJI 266 | PhysicalDesignator37=MCH.FID.3 267 | PhysicalDesignatorLocked37=0 268 | LogicalDesignator38=SP17 269 | LogicalPartID38=1 270 | DocumentName38=Mechanical.SchDoc 271 | ChannelName38=MCH 272 | UniqueID38=\NDZGVAIK\SBSFUFPD 273 | PhysicalDesignator38=MCH.SP.17 274 | PhysicalDesignatorLocked38=0 275 | LogicalDesignator39=SP7 276 | LogicalPartID39=1 277 | DocumentName39=Mechanical.SchDoc 278 | ChannelName39=MCH 279 | UniqueID39=\NDZGVAIK\SDHBQBAQ 280 | PhysicalDesignator39=MCH.SP.7 281 | PhysicalDesignatorLocked39=0 282 | LogicalDesignator40=SP9 283 | LogicalPartID40=1 284 | DocumentName40=Mechanical.SchDoc 285 | ChannelName40=MCH 286 | UniqueID40=\NDZGVAIK\TMPFZNKR 287 | PhysicalDesignator40=MCH.SP.9 288 | PhysicalDesignatorLocked40=0 289 | LogicalDesignator41=SP2 290 | LogicalPartID41=1 291 | DocumentName41=Mechanical.SchDoc 292 | ChannelName41=MCH 293 | UniqueID41=\NDZGVAIK\TTJIHRXT 294 | PhysicalDesignator41=MCH.SP.2 295 | PhysicalDesignatorLocked41=0 296 | LogicalDesignator42=SP4 297 | LogicalPartID42=1 298 | DocumentName42=Mechanical.SchDoc 299 | ChannelName42=MCH 300 | UniqueID42=\NDZGVAIK\VEBBLAEB 301 | PhysicalDesignator42=MCH.SP.4 302 | PhysicalDesignatorLocked42=0 303 | LogicalDesignator43=SP11 304 | LogicalPartID43=1 305 | DocumentName43=Mechanical.SchDoc 306 | ChannelName43=MCH 307 | UniqueID43=\NDZGVAIK\WYKRGGND 308 | PhysicalDesignator43=MCH.SP.11 309 | PhysicalDesignatorLocked43=0 310 | LogicalDesignator44=FID1 311 | LogicalPartID44=1 312 | DocumentName44=Mechanical.SchDoc 313 | ChannelName44=MCH 314 | UniqueID44=\NDZGVAIK\XWPAMOLE 315 | PhysicalDesignator44=MCH.FID.1 316 | PhysicalDesignatorLocked44=0 317 | LogicalDesignator45=LOGO1 318 | LogicalPartID45=1 319 | DocumentName45=Mechanical.SchDoc 320 | ChannelName45=MCH 321 | UniqueID45=\NDZGVAIK\YOYYDCWU 322 | PhysicalDesignator45=MCH.LOGO.1 323 | PhysicalDesignatorLocked45=0 324 | LogicalDesignator46=SP13 325 | LogicalPartID46=1 326 | DocumentName46=Mechanical.SchDoc 327 | ChannelName46=MCH 328 | UniqueID46=\NDZGVAIK\ZBGPGWHO 329 | PhysicalDesignator46=MCH.SP.13 330 | PhysicalDesignatorLocked46=0 331 | LogicalDesignator47=SP5 332 | LogicalPartID47=1 333 | DocumentName47=Mechanical.SchDoc 334 | ChannelName47=MCH 335 | UniqueID47=\NDZGVAIK\ZKSNHGPW 336 | PhysicalDesignator47=MCH.SP.5 337 | PhysicalDesignatorLocked47=0 338 | LogicalDesignator48=SP12 339 | LogicalPartID48=1 340 | DocumentName48=Mechanical.SchDoc 341 | ChannelName48=MCH 342 | UniqueID48=\NDZGVAIK\ZMSRZENN 343 | PhysicalDesignator48=MCH.SP.12 344 | PhysicalDesignatorLocked48=0 345 | LogicalDesignator49=C22 346 | LogicalPartID49=1 347 | DocumentName49=RotationSensor.SchDoc 348 | ChannelName49=RTS 349 | UniqueID49=\ROEMJLXA\CINIGZXI 350 | PhysicalDesignator49=RTS.C.22 351 | PhysicalDesignatorLocked49=0 352 | LogicalDesignator50=Ra8 353 | LogicalPartID50=2 354 | DocumentName50=RotationSensor.SchDoc 355 | ChannelName50=RTS 356 | UniqueID50=\ROEMJLXA\IEHFSTYK 357 | PhysicalDesignator50=RTS.Ra.8 358 | PhysicalDesignatorLocked50=0 359 | LogicalDesignator51=Ra8 360 | LogicalPartID51=3 361 | DocumentName51=RotationSensor.SchDoc 362 | ChannelName51=RTS 363 | UniqueID51=\ROEMJLXA\JKRCOAKQ 364 | PhysicalDesignator51=RTS.Ra.8 365 | PhysicalDesignatorLocked51=0 366 | LogicalDesignator52=Ra8 367 | LogicalPartID52=4 368 | DocumentName52=RotationSensor.SchDoc 369 | ChannelName52=RTS 370 | UniqueID52=\ROEMJLXA\KZDMWSDR 371 | PhysicalDesignator52=RTS.Ra.8 372 | PhysicalDesignatorLocked52=0 373 | LogicalDesignator53=U7 374 | LogicalPartID53=1 375 | DocumentName53=RotationSensor.SchDoc 376 | ChannelName53=RTS 377 | UniqueID53=\ROEMJLXA\MUHIOORU 378 | PhysicalDesignator53=RTS.U.7 379 | PhysicalDesignatorLocked53=0 380 | LogicalDesignator54=Ra8 381 | LogicalPartID54=1 382 | DocumentName54=RotationSensor.SchDoc 383 | ChannelName54=RTS 384 | UniqueID54=\ROEMJLXA\UTRKYPDD 385 | PhysicalDesignator54=RTS.Ra.8 386 | PhysicalDesignatorLocked54=0 387 | LogicalDesignator55=C23 388 | LogicalPartID55=1 389 | DocumentName55=RotationSensor.SchDoc 390 | ChannelName55=RTS 391 | UniqueID55=\ROEMJLXA\VROZXRIG 392 | PhysicalDesignator55=RTS.C.23 393 | PhysicalDesignatorLocked55=0 394 | LogicalDesignator56=U3 395 | LogicalPartID56=1 396 | DocumentName56=Regulators.SchDoc 397 | ChannelName56=REG 398 | UniqueID56=\RXDORYXU\CBXRONVV 399 | PhysicalDesignator56=REG.U.3 400 | PhysicalDesignatorLocked56=0 401 | LogicalDesignator57=C12 402 | LogicalPartID57=1 403 | DocumentName57=Regulators.SchDoc 404 | ChannelName57=REG 405 | UniqueID57=\RXDORYXU\KKMFXSHM 406 | PhysicalDesignator57=REG.C.12 407 | PhysicalDesignatorLocked57=0 408 | LogicalDesignator58=C14 409 | LogicalPartID58=1 410 | DocumentName58=Regulators.SchDoc 411 | ChannelName58=REG 412 | UniqueID58=\RXDORYXU\WJOPFPMV 413 | PhysicalDesignator58=REG.C.14 414 | PhysicalDesignatorLocked58=0 415 | LogicalDesignator59=C13 416 | LogicalPartID59=1 417 | DocumentName59=Regulators.SchDoc 418 | ChannelName59=REG 419 | UniqueID59=\RXDORYXU\YVQQFEPF 420 | PhysicalDesignator59=REG.C.13 421 | PhysicalDesignatorLocked59=0 422 | LogicalDesignator60=Ra6 423 | LogicalPartID60=1 424 | DocumentName60=HapticFeedback.SchDoc 425 | ChannelName60=HFB 426 | UniqueID60=\TZTSNUYN\AICKNAPY 427 | PhysicalDesignator60=HFB.Ra.6 428 | PhysicalDesignatorLocked60=0 429 | LogicalDesignator61=U6 430 | LogicalPartID61=1 431 | DocumentName61=HapticFeedback.SchDoc 432 | ChannelName61=HFB 433 | UniqueID61=\TZTSNUYN\HPBJOYQM 434 | PhysicalDesignator61=HFB.U.6 435 | PhysicalDesignatorLocked61=0 436 | LogicalDesignator62=Ra6 437 | LogicalPartID62=3 438 | DocumentName62=HapticFeedback.SchDoc 439 | ChannelName62=HFB 440 | UniqueID62=\TZTSNUYN\HPKVNNVB 441 | PhysicalDesignator62=HFB.Ra.6 442 | PhysicalDesignatorLocked62=0 443 | LogicalDesignator63=Q1 444 | LogicalPartID63=1 445 | DocumentName63=HapticFeedback.SchDoc 446 | ChannelName63=HFB 447 | UniqueID63=\TZTSNUYN\IAMWBTWV 448 | PhysicalDesignator63=HFB.Q.1 449 | PhysicalDesignatorLocked63=0 450 | LogicalDesignator64=Ra6 451 | LogicalPartID64=2 452 | DocumentName64=HapticFeedback.SchDoc 453 | ChannelName64=HFB 454 | UniqueID64=\TZTSNUYN\INSTMWJK 455 | PhysicalDesignator64=HFB.Ra.6 456 | PhysicalDesignatorLocked64=0 457 | LogicalDesignator65=Ra6 458 | LogicalPartID65=4 459 | DocumentName65=HapticFeedback.SchDoc 460 | ChannelName65=HFB 461 | UniqueID65=\TZTSNUYN\YOEXYZOR 462 | PhysicalDesignator65=HFB.Ra.6 463 | PhysicalDesignatorLocked65=0 464 | 465 | [SheetNumberManager] 466 | SheetNumberOrder=Sheets Hierarchical Structure - Depth First 467 | SheetNumberMethod=Increasing 468 | DocumentName0=Connectors.SchDoc 469 | UniqueIDPath0=\BUHOUAJX 470 | SheetNumber0=7 471 | DocumentName1=HapticFeedback.SchDoc 472 | UniqueIDPath1=\TZTSNUYN 473 | SheetNumber1=2 474 | DocumentName2=MCU.SchDoc 475 | UniqueIDPath2=\KPFJTNEE 476 | SheetNumber2=4 477 | DocumentName3=Mechanical.SchDoc 478 | UniqueIDPath3=\NDZGVAIK 479 | SheetNumber3=3 480 | DocumentName4=Regulators.SchDoc 481 | UniqueIDPath4=\RXDORYXU 482 | SheetNumber4=5 483 | DocumentName5=RotationSensor.SchDoc 484 | UniqueIDPath5=\ROEMJLXA 485 | SheetNumber5=6 486 | DocumentName6=ScrollWheel.SchDoc 487 | UniqueIDPath6= 488 | SheetNumber6=1 489 | 490 | 491 | -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/ScrollWheel.PcbDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/ScrollWheel.PcbDoc -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/ScrollWheel.PrjPCBStructure: -------------------------------------------------------------------------------- 1 | Record=TopLevelDocument|FileName=ScrollWheel.SchDoc|SheetNumber=1 2 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=HFB|SchDesignator=HFB|FileName=HapticFeedback.SchDoc|SheetNumber=3|SymbolType=Normal|RawFileName=HapticFeedback.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 3 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=MCH|SchDesignator=MCH|FileName=Mechanical.SchDoc|SheetNumber=5|SymbolType=Normal|RawFileName=Mechanical.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 4 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=MCU|SchDesignator=MCU|FileName=MCU.SchDoc|SheetNumber=4|SymbolType=Normal|RawFileName=MCU.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 5 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=REG|SchDesignator=REG|FileName=Regulators.SchDoc|SheetNumber=6|SymbolType=Normal|RawFileName=Regulators.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 6 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=RTS|SchDesignator=RTS|FileName=RotationSensor.SchDoc|SheetNumber=7|SymbolType=Normal|RawFileName=RotationSensor.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 7 | Record=SheetSymbol|SourceDocument=ScrollWheel.SchDoc|Designator=USB|SchDesignator=USB|FileName=Connectors.SchDoc|SheetNumber=2|SymbolType=Normal|RawFileName=Connectors.SchDoc|DesignItemId= |SourceLibraryName= |ObjectKind=Sheet Symbol|RevisionGUID= |ItemGUID= |VaultGUID= 8 | -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/ScrollWheel.PrjPCBVariants: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/ScrollWheel.PrjPCBVariants -------------------------------------------------------------------------------- /hardware/electronics/PCBs/ScrollWheel/ScrollWheel.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PCBs/ScrollWheel/ScrollWheel.SchDoc -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Chip_Passives.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Chip_Passives.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Chip_Passives.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Chip_Passives.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Connectors.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Connectors.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Connectors.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Connectors.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Crystals.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Crystals.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Crystals.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Crystals.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Diodes.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Diodes.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Diodes.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Diodes.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/FETs.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/FETs.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/FETs.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/FETs.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Graphics.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Graphics.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Graphics.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Graphics.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/History/Graphics.~(1).PcbLib.Zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/History/Graphics.~(1).PcbLib.Zip -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/History/Graphics.~(1).SchLib.Zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/History/Graphics.~(1).SchLib.Zip -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/LEDs.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/LEDs.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/LEDs.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/LEDs.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/MCUs.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/MCUs.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/MCUs.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/MCUs.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Mechanical.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Mechanical.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Mechanical.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Mechanical.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Memory.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Memory.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Memory.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Memory.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/MotorControl.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/MotorControl.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/MotorControl.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/MotorControl.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Motors.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Motors.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Motors.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Motors.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/OptoElectronics.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/OptoElectronics.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/OptoElectronics.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/OptoElectronics.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/PCBFeatures.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/PCBFeatures.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/PCBFeatures.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/PCBFeatures.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/PowerSupply.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/PowerSupply.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/PowerSupply.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/PowerSupply.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Sensors.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Sensors.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Sensors.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Sensors.SchLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Switches.PcbLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Switches.PcbLib -------------------------------------------------------------------------------- /hardware/electronics/PartLibraries/Switches.SchLib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/electronics/PartLibraries/Switches.SchLib -------------------------------------------------------------------------------- /hardware/mechanicals/README.md: -------------------------------------------------------------------------------- 1 | ## Only one file? Where are the parts? 2 | 3 | The STEP/STL files contain all of the plastic parts in one file. Doing it this way preserves the assembly information, showing how the parts are supposed to fit together, as well as the expected clearances between parts. It also bundles all of the parts for a given revision together, so there's no accidental mixing of parts from different revisions. 4 | 5 | ## How do I print this? 6 | 7 | You'll need to split the parts in the file up before you can print them. Most slicers can do this; if you have a compatible printer we recommend PrusaSlic3r, since that's the one we use in-house and have checked. 8 | 9 | Note that submitting this file to some 3rd party print services will cause confusion, as they are expecting one body instead of many. To do this, you can use PrusaSlic3r to split the parts and then export each separately as an STL. 10 | 11 | ## How can I use the included .3mf file? 12 | 13 | The .3mf file was generated using PrusaSlicer v2.9. The job was generated for Prusa i3 MK2S/MK3S/MK3S+ printers. It assumes the use of PLA that is printable at 200-230C. If you have that PrusaSlicer version, such a printer, and such filament, then you're in a lot of luck! We use a .3mf job that is very similar to this one to print these parts on our printing farm. 14 | 15 | If you do not, then using the included .3mf file is likely going to cause you a lot of headaches. If this is the case, the included .3mf file should be considered **as a reference only**. If you use it at all, it is recommended that you look at it to see what kinds of print settings we use (gyroid infill, 0.3mm layer height, part orientation, etc.). However, you should use your own slicing software to generate the .gcode files for your printer. 16 | 17 | ## Why don't you include a .gcode file? 18 | 19 | For your safety. Uploading a .gcode file onto a printer can be extremely hazardous if that .gcode file wasn't specifically generated for that printer. We don't want to come anywhere near that sort of scenario, so we are not going to upload a .gcode file. -------------------------------------------------------------------------------- /hardware/mechanicals/knob.3mf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/mechanicals/knob.3mf -------------------------------------------------------------------------------- /hardware/mechanicals/knob.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/hardware/mechanicals/knob.STL -------------------------------------------------------------------------------- /knob.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ploopyco/knob/2e33bbfdaceac82f71b583383abee41a46cb4f1b/knob.jpg -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Ploopy Knob 2 | site_url: https://ploopyco.github.io/knob 3 | theme: material 4 | markdown_extensions: 5 | - footnotes 6 | nav: 7 | - 'index.md' 8 | - 'assembly-instructions.md' 9 | - Appendices: 10 | - 'appendices/pcbs.md' 11 | - 'appendices/3d-printing.md' 12 | - 'appendices/hardware.md' 13 | - 'appendices/programming.md' 14 | - 'appendices/macos.md' 15 | - 'appendices/volume.md' 16 | - 'license.md' --------------------------------------------------------------------------------