├── Arduino Code └── Clone_Hero_Controller │ └── Clone_Hero_Controller.ino ├── DIYCloneHeroController - Full Assembly.STEP ├── LICENSE ├── PCB Gerbers ├── Clone Hero Controller Strum Bar_2023-01-31.zip └── Clone Hero Neck PCB_2023-01-30.zip ├── README.md ├── STL's ├── Fret Button.STL ├── Les Paul Body Printed 1.STL ├── Les Paul Body Printed 2.STL ├── Les Paul Body Printed 3.STL ├── Les Paul Printed Kneck - Base.STL ├── Les Paul Printed Kneck - Headstock.STL ├── Les Paul Printed Kneck - Mid.STL ├── Les Paul Printed Kneck - PCB Cover.STL ├── Potentiometer Mount.STL ├── Strum Bar Mount Printed.STL ├── Strum Bar.STL ├── Whammy Bar Knob.STL ├── Whammy Bar Pivot.STL └── Whammy Mount Plate.STL ├── Title.png └── Wiring.png /Arduino Code/Clone_Hero_Controller/Clone_Hero_Controller.ino: -------------------------------------------------------------------------------- 1 | #include //https://github.com/MHeironimus/ArduinoJoystickLibrary 2 | #define baudrate 19200 //Baudrate for serial. 3 | #include 4 | 5 | //Define button pins 6 | byte buttonCount = 9; //Number of buttons in use. Change length of buttonPins, lastButtonState and currentButtonState to match. 7 | byte buttonPins[9] = {0,1,2,3,4,5,6,15,14}; //Array to store digital pins used for buttons. Length must be the same as buttonCount. 8 | 9 | //Button state arrays 10 | byte lastButtonState[9]; //Empty State array for buttons last sent state. Must be same length as buttonPins 11 | byte currentButtonState[9]; //Empty State array for buttons. MMust be same length as buttonPins 12 | 13 | //Whammy bar config 14 | const int whammyBar = A0; 15 | const int deadBand = 25; 16 | const int whammyMin = 140; //Adjust for Minimum whammy bar endpoint 17 | const int whammyMax = 250; //Adjust for Max whammy bar endpoint 18 | 19 | //Main Joystick setup 20 | Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_GAMEPAD, 21 | buttonCount, 0, // Button Count, Hat Switch Count 22 | false, false, true, // X Y Z 23 | false, false, false, // Rx, Ry, Rz 24 | false, false, // Rudder, Throttle 25 | false, false, false); // Accelerator, Brake, Steering 26 | 27 | //LED Settings 28 | #define LED_PIN 16 29 | #define NUM_LEDS 5 30 | CRGB leds[NUM_LEDS]; 31 | 32 | void setup() { 33 | FastLED.addLeds(leds, NUM_LEDS); 34 | Joystick.setZAxisRange(0, 254); 35 | Joystick.begin(false); //Initialise joystick mode with auto sendState disabled. 36 | for(int i = 0; i < buttonCount; i++){ //Set all button pins as input pullup. Change to INPUT if using external resistors. 37 | pinMode(buttonPins[i], INPUT_PULLUP); 38 | } 39 | leds[0] = CRGB::Orange; 40 | leds[1] = CRGB::Blue; 41 | leds[2] = CRGB::Yellow; 42 | leds[3] = CRGB::Red; 43 | leds[4] = CRGB::Green; 44 | FastLED.show(); 45 | } 46 | 47 | void loop() { 48 | buttonRead(); 49 | joypadButtons(); 50 | int temp = analogRead(whammyBar); 51 | if(temp > whammyMin + deadBand){ 52 | temp = map(temp, whammyMin, whammyMax, 0, 254); 53 | Joystick.setZAxis(temp); 54 | } else { 55 | Joystick.setZAxis(0); 56 | } 57 | Joystick.sendState(); 58 | } 59 | 60 | void buttonRead(){ //Read button inputs and set state arrays. 61 | for (int i = 0; i < buttonCount; i++){ 62 | int input = !digitalRead(buttonPins[i]); 63 | if (input != lastButtonState[i]){ 64 | lastButtonState[i] = input; 65 | } 66 | } 67 | } 68 | void joypadButtons(){ //Set joystick buttons for USB output 69 | for(int i = 0; i < buttonCount; i++){ 70 | if(lastButtonState[i] != currentButtonState[i]){ 71 | Joystick.setButton(i, lastButtonState[i]); 72 | currentButtonState[i] = lastButtonState[i]; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /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 hardware 7 | designers and to provide a legal tool which supports the freedom to use, 8 | study, modify, share and distribute hardware designs and products based on 9 | those designs. Version 2 of the CERN Open Hardware Licence comes in three 10 | variants: CERN-OHL-P (permissive); and two reciprocal licences: CERN-OHL-W 11 | (weakly reciprocal) and this licence, CERN-OHL-S (strongly reciprocal). 12 | 13 | The CERN-OHL-S is copyright CERN 2020. Anyone is welcome to use it, in 14 | unmodified form only. 15 | 16 | Use of this Licence does not imply any endorsement by CERN of any Licensor or 17 | their designs nor does it imply any involvement by CERN in their development. 18 | 19 | 20 | 1 Definitions 21 | 22 | 1.1 'Licence' means this CERN-OHL-S. 23 | 24 | 1.2 'Compatible Licence' means 25 | 26 | a) any earlier version of the CERN Open Hardware licence, or 27 | 28 | b) any version of the CERN-OHL-S, or 29 | 30 | c) any licence which permits You to treat the Source to which it 31 | applies as licensed under CERN-OHL-S provided that on Conveyance of 32 | any such Source, or any associated Product You treat the Source in 33 | question as being licensed under CERN-OHL-S. 34 | 35 | 1.3 'Source' means information such as design materials or digital code 36 | which can be applied to Make or test a Product or to prepare a Product 37 | for use, Conveyance or sale, regardless of its medium or how it is 38 | expressed. It may include Notices. 39 | 40 | 1.4 'Covered Source' means Source that is explicitly made available under 41 | this Licence. 42 | 43 | 1.5 'Product' means any device, component, work or physical object, whether 44 | in finished or intermediate form, arising from the use, application or 45 | processing of Covered Source. 46 | 47 | 1.6 'Make' means to create or configure something, whether by manufacture, 48 | assembly, compiling, loading or applying Covered Source or another 49 | Product or otherwise. 50 | 51 | 1.7 'Available Component' means any part, sub-assembly, library or code 52 | which: 53 | 54 | a) is licensed to You as Complete Source under a Compatible Licence; or 55 | 56 | b) is available, at the time a Product or the Source containing it is 57 | first Conveyed, to You and any other prospective licensees 58 | 59 | i) as a physical part with sufficient rights and information 60 | (including any configuration and programming files and 61 | information about its characteristics and interfaces) to enable 62 | it either to be Made itself, or to be sourced and used to Make 63 | the Product; or 64 | ii) as part of the normal distribution of a tool used to design or 65 | Make the Product. 66 | 67 | 1.8 'Complete Source' means the set of all Source necessary to Make a 68 | Product, in the preferred form for making modifications, including 69 | necessary installation and interfacing information both for the Product, 70 | and for any included Available Components. If the format is 71 | proprietary, it must also be made available in a format (if the 72 | proprietary tool can create it) which is viewable with a tool available 73 | to potential licensees and licensed under a licence approved by the Free 74 | Software Foundation or the Open Source Initiative. Complete Source need 75 | not include the Source of any Available Component, provided that You 76 | include in the Complete Source sufficient information to enable a 77 | recipient to Make or source and use the Available Component to Make the 78 | Product. 79 | 80 | 1.9 'Source Location' means a location where a Licensor has placed Covered 81 | Source, and which that Licensor reasonably believes will remain easily 82 | accessible for at least three years for anyone to obtain a digital copy. 83 | 84 | 1.10 'Notice' means copyright, acknowledgement and trademark notices, Source 85 | Location references, modification notices (subsection 3.3(b)) and all 86 | notices that refer to this Licence and to the disclaimer of warranties 87 | that are included in the Covered Source. 88 | 89 | 1.11 'Licensee' or 'You' means any person exercising rights under this 90 | Licence. 91 | 92 | 1.12 'Licensor' means a natural or legal person who creates or modifies 93 | Covered Source. A person may be a Licensee and a Licensor at the same 94 | time. 95 | 96 | 1.13 'Convey' means to communicate to the public or distribute. 97 | 98 | 99 | 2 Applicability 100 | 101 | 2.1 This Licence governs the use, copying, modification, Conveying of 102 | Covered Source and Products, and the Making of Products. By exercising 103 | any right granted under this Licence, You irrevocably accept these terms 104 | and conditions. 105 | 106 | 2.2 This Licence is granted by the Licensor directly to You, and shall apply 107 | worldwide and without limitation in time. 108 | 109 | 2.3 You shall not attempt to restrict by contract or otherwise the rights 110 | granted under this Licence to other Licensees. 111 | 112 | 2.4 This Licence is not intended to restrict fair use, fair dealing, or any 113 | other similar right. 114 | 115 | 116 | 3 Copying, Modifying and Conveying Covered Source 117 | 118 | 3.1 You may copy and Convey verbatim copies of Covered Source, in any 119 | medium, provided You retain all Notices. 120 | 121 | 3.2 You may modify Covered Source, other than Notices, provided that You 122 | irrevocably undertake to make that modified Covered Source available 123 | from a Source Location should You Convey a Product in circumstances 124 | where the recipient does not otherwise receive a copy of the modified 125 | Covered Source. In each case subsection 3.3 shall apply. 126 | 127 | You may only delete Notices if they are no longer applicable to the 128 | corresponding Covered Source as modified by You and You may add 129 | additional Notices applicable to Your modifications. Including Covered 130 | Source in a larger work is modifying the Covered Source, and the larger 131 | work becomes modified Covered Source. 132 | 133 | 3.3 You may Convey modified Covered Source (with the effect that You shall 134 | also become a Licensor) provided that You: 135 | 136 | a) retain Notices as required in subsection 3.2; 137 | 138 | b) add a Notice to the modified Covered Source stating that You have 139 | modified it, with the date and brief description of how You have 140 | modified it; 141 | 142 | c) add a Source Location Notice for the modified Covered Source if You 143 | Convey in circumstances where the recipient does not otherwise 144 | receive a copy of the modified Covered Source; and 145 | 146 | d) license the modified Covered Source under the terms and conditions 147 | of this Licence (or, as set out in subsection 8.3, a later version, 148 | if permitted by the licence of the original Covered Source). Such 149 | modified Covered Source must be licensed as a whole, but excluding 150 | Available Components contained in it, which remain licensed under 151 | their own applicable licences. 152 | 153 | 154 | 4 Making and Conveying Products 155 | 156 | You may Make Products, and/or Convey them, provided that You either provide 157 | each recipient with a copy of the Complete Source or ensure that each 158 | recipient is notified of the Source Location of the Complete Source. That 159 | Complete Source is Covered Source, and You must accordingly satisfy Your 160 | obligations set out in subsection 3.3. If specified in a Notice, the Product 161 | must visibly and securely display the Source Location on it or its packaging 162 | or documentation in the manner specified in that Notice. 163 | 164 | 165 | 5 Research and Development 166 | 167 | You may Convey Covered Source, modified Covered Source or Products to a legal 168 | entity carrying out development, testing or quality assurance work on Your 169 | behalf provided that the work is performed on terms which prevent the entity 170 | from both using the Source or Products for its own internal purposes and 171 | Conveying the Source or Products or any modifications to them to any person 172 | other than You. Any modifications made by the entity shall be deemed to be 173 | made by You pursuant to subsection 3.2. 174 | 175 | 176 | 6 DISCLAIMER AND LIABILITY 177 | 178 | 6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products are 179 | provided 'as is' and any express or implied warranties, including, but 180 | not limited to, implied warranties of merchantability, of satisfactory 181 | quality, non-infringement of third party rights, and fitness for a 182 | particular purpose or use are disclaimed in respect of any Source or 183 | Product to the maximum extent permitted by law. The Licensor makes no 184 | representation that any Source or Product does not or will not infringe 185 | any patent, copyright, trade secret or other proprietary right. The 186 | entire risk as to the use, quality, and performance of any Source or 187 | Product shall be with You and not the Licensor. This disclaimer of 188 | warranty is an essential part of this Licence and a condition for the 189 | grant of any rights granted under this Licence. 190 | 191 | 6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to the 192 | maximum extent permitted by law, have no liability for direct, indirect, 193 | special, incidental, consequential, exemplary, punitive or other damages 194 | of any character including, without limitation, procurement of 195 | substitute goods or services, loss of use, data or profits, or business 196 | interruption, however caused and on any theory of contract, warranty, 197 | tort (including negligence), product liability or otherwise, arising in 198 | any way in relation to the Covered Source, modified Covered Source 199 | and/or the Making or Conveyance of a Product, even if advised of the 200 | possibility of such damages, and You shall hold the Licensor(s) free and 201 | harmless from any liability, costs, damages, fees and expenses, 202 | including claims by third parties, in relation to such use. 203 | 204 | 205 | 7 Patents 206 | 207 | 7.1 Subject to the terms and conditions of this Licence, each Licensor 208 | hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, 209 | royalty-free, irrevocable (except as stated in subsections 7.2 and 8.4) 210 | patent licence to Make, have Made, use, offer to sell, sell, import, and 211 | otherwise transfer the Covered Source and Products, where such licence 212 | applies only to those patent claims licensable by such Licensor that are 213 | necessarily infringed by exercising rights under the Covered Source as 214 | Conveyed by that Licensor. 215 | 216 | 7.2 If You institute patent litigation against any entity (including a 217 | cross-claim or counterclaim in a lawsuit) alleging that the Covered 218 | Source or a Product constitutes direct or contributory patent 219 | infringement, or You seek any declaration that a patent licensed to You 220 | under this Licence is invalid or unenforceable then any rights granted 221 | to You under this Licence shall terminate as of the date such process is 222 | initiated. 223 | 224 | 225 | 8 General 226 | 227 | 8.1 If any provisions of this Licence are or subsequently become invalid or 228 | unenforceable for any reason, the remaining provisions shall remain 229 | effective. 230 | 231 | 8.2 You shall not use any of the name (including acronyms and 232 | abbreviations), image, or logo by which the Licensor or CERN is known, 233 | except where needed to comply with section 3, or where the use is 234 | otherwise allowed by law. Any such permitted use shall be factual and 235 | shall not be made so as to suggest any kind of endorsement or 236 | implication of involvement by the Licensor or its personnel. 237 | 238 | 8.3 CERN may publish updated versions and variants of this Licence which it 239 | considers to be in the spirit of this version, but may differ in detail 240 | to address new problems or concerns. New versions will be published with 241 | a unique version number and a variant identifier specifying the variant. 242 | If the Licensor has specified that a given variant applies to the 243 | Covered Source without specifying a version, You may treat that Covered 244 | Source as being released under any version of the CERN-OHL with that 245 | variant. If no variant is specified, the Covered Source shall be treated 246 | as being released under CERN-OHL-S. The Licensor may also specify that 247 | the Covered Source is subject to a specific version of the CERN-OHL or 248 | any later version in which case You may apply this or any later version 249 | of CERN-OHL with the same variant identifier published by CERN. 250 | 251 | 8.4 This Licence shall terminate with immediate effect if You fail to comply 252 | with any of its terms and conditions. 253 | 254 | 8.5 However, if You cease all breaches of this Licence, then Your Licence 255 | from any Licensor is reinstated unless such Licensor has terminated this 256 | Licence by giving You, while You remain in breach, a notice specifying 257 | the breach and requiring You to cure it within 30 days, and You have 258 | failed to come into compliance in all material respects by the end of 259 | the 30 day period. Should You repeat the breach after receipt of a cure 260 | notice and subsequent reinstatement, this Licence will terminate 261 | immediately and permanently. Section 6 shall continue to apply after any 262 | termination. 263 | 264 | 8.6 This Licence shall not be enforceable except by a Licensor acting as 265 | such, and third party beneficiary rights are specifically excluded. 266 | -------------------------------------------------------------------------------- /PCB Gerbers/Clone Hero Controller Strum Bar_2023-01-31.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/PCB Gerbers/Clone Hero Controller Strum Bar_2023-01-31.zip -------------------------------------------------------------------------------- /PCB Gerbers/Clone Hero Neck PCB_2023-01-30.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/PCB Gerbers/Clone Hero Neck PCB_2023-01-30.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Alt text](Title.png "DIY Clone Hero Controller") 2 | 3 | # DIYCloneHeroController 4 | 5 | Here's the printed version of my clone hero controller! 6 | 7 | #### Assembly 8 | The original Youtube video should provide enough information for assembly, here's a link: 9 | 10 | [The ULTIMATE DIY Clone Hero Controller](https://youtu.be/poKoy9RzIDI) 11 | 12 | I've included 3mm holes between all of the printed body and kneck parts to help with alignment and strength when glueing them together for assembly. 13 | 14 | #### Software 15 | The Arduino code is pretty bare-bones, but its enough to get the controller functioning properly, it just doesn't have any fancy effects for the RGB lights, its just set up for a solid colour per button. There are other more feature rich softwares out there for diy guitar controllers so feel free to use one of those instead if you'd prefer. You may have to refer to their wiring diagram's for everything to work correctly though! 16 | 17 | #### Wiring 18 | Wiring for buttons is shown below on a Pro Micro Clone. You should be able to use the same pinout on any 32u4 based arduino. VCC and GND need to also be connected both to the Strum bar pcb and the 19 | whammy bar potentiometer. The Strum bar PCB passes VCC and GND through to the neck PCB. 20 | I used a 10k potentiometer for my whammy bar. The order that the buttons are connected in doesn't actually matter, as you'll configure them in clone hero anyway but if you stick to the pins I've specified you won't have to change the code. The LED signal is connected to pin 16. 21 | 22 | ![Alt text](Wiring.png "Wiring") 23 | 24 | #### PCB's 25 | The neck and strum PCB's are designed to use a full sized mechanical keyboard switch. Any should work, but I used Gateron Blue's on mine since they were cheap and readily available to me. 26 | 27 | If you're planning to use the RGB LED's you will also need: 28 | - 10x 33ohm 0603 Resistors 29 | - 5x WS2811 IC's 30 | - 5x 0.1uf 0603 Capacitors 31 | - 5x 100ohm 0603 Resistors 32 | - 5x RGB LED's [Link](https://www.aliexpress.com/item/1005003719602946.html) 33 | 34 | Please note on the neck PCB silk screen, one resistor on the orange fret is incorrectly labelled as a 0.1uf capacitor when it should be a 33ohm resistor. The components are in the same order on all 5 frets so just refer to the other fret buttons for the correct order. -------------------------------------------------------------------------------- /STL's/Potentiometer Mount.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/STL's/Potentiometer Mount.STL -------------------------------------------------------------------------------- /STL's/Whammy Bar Pivot.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/STL's/Whammy Bar Pivot.STL -------------------------------------------------------------------------------- /Title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/Title.png -------------------------------------------------------------------------------- /Wiring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dmcke5/DIYCloneHeroController/74e6bc6c0b51eb1a8d7df107ac4413b8865ec121/Wiring.png --------------------------------------------------------------------------------