Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: Metal Tempest spinner knob?  (Read 3194 times)

0 Members and 1 Guest are viewing this topic.

stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 983
  • Last login:March 21, 2025, 06:36:05 am
  • It seemed like a good idea at the time....
    • Mago Arcade
Metal Tempest spinner knob?
« on: March 16, 2025, 07:04:21 am »
I see Oscar controls used to sell these but now defunct? Anyone know if there's anywhere to get these? Could 3d print one, but prefer metal. Anodised black preferably.

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9664
  • Last login:Today at 11:21:45 am
  • Designated spam hunter
Re: Metal Tempest spinner knob?
« Reply #1 on: March 16, 2025, 04:49:12 pm »
I see Oscar controls used to sell these but now defunct? Anyone know if there's anywhere to get these? Could 3d print one, but prefer metal. Anodised black preferably.
Not sure if anyone still sells the Oscar-style metal repros.

GGG sells several styles of metal knobs with the TT2.  Randy might let you special order one separately.
https://groovygamegear.com/webstore/index.php?main_page=product_info&cPath=86&products_id=268

Ultimarc sells several metal knob styles for the SpinTrak, but keep in mind that those are 6mm I.D.
https://www.ultimarc.com/trackballs-and-spinners/spinner-accessories/

Arcadeadventures sells plastic repros.
https://www.arcadeadventures.com/spinner-knob-for-atari-games-new/

NOS Atari 73-834 Tempest/Warlords knobs are getting rather expensive.
https://arcadefixit.com/product/atari-parts-1970s-1980s-early-1990s/tempest/73-834-nos-tempest-or-warlords-spinner-knob/

There are several metal potentiometer knobs on Amazon, but most are too small either on the I.D. (6mm vs 6.35mm) or O.D. (half the size of the ~1.95" skirt, ~1.33" knob, ~1" tall originals)

6mm I.D. -
https://www.amazon.com/Szliyands-Aluminum-Potentiometer-Electric-Diameter/dp/B09GYP92YC/?th=1
https://www.amazon.com/Szliyands-Aluminum-Electronic-Potentiometer-Knobs%EF%BC%8CSwitch/dp/B099DHHGGQ/

half-size O.D. -
https://www.amazon.com/KAISH-Aluminium-Potentiometer-Universal-Indicator/dp/B0B376HH1X/?th=1

If you go with a 3d printed version, maybe you can use some embedded nuts for extra weight . . .



. . . or you might be able to use stacked and nested shaft collars (two 1/4" I.D shaft collars inside two 1/2" I.D. shaft collars), you just need a setscrew that solidly engages the printed knob without sticking out.  A shaft collar worked great on my LS-30 style rotary joystick handle replacement.
- 1/4" I.D. x 1/2" O.D. shaft collars - https://www.amazon.com/dp/B0D1KBNWNB/
- 1/2" I.D. x 0.83" O.D. shaft collars - https://www.amazon.com/MECCANIXITY-Collar-Carbon-Clamping-Collars/dp/B0CRL3C5H5/?th=1

Several Tempest knob models that you might be able to modify:
https://www.thingiverse.com/thing:3626107 - Flat bottom so no supports needed.
https://www.printables.com/model/205319-atari-tempest-spinner-knob/remixes


Scott

stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 983
  • Last login:March 21, 2025, 06:36:05 am
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: Metal Tempest spinner knob?
« Reply #2 on: March 16, 2025, 04:54:48 pm »
Thanks for the full answer, Scott. But dammit... looks like I'm buying myself a mini-lathe next given can't get the original shape in metal. ffs. I've just finished getting started with my CNC. I think I'm going down a shop rabbit hole. Gonna have to buy a bigger shed.

aka 3D Print it is. Might just do limited infill to give it some heft.


PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9664
  • Last login:Today at 11:21:45 am
  • Designated spam hunter
Re: Metal Tempest spinner knob?
« Reply #3 on: March 16, 2025, 05:18:03 pm »
3D Print it is. Might just do limited infill to give it some heft.
If you want to add some more heft, add voids inside the model that are slightly taller than the weights you want to embed.  There are slicer plugins that allow you to pause the print at a specific layer so you can insert the weights then tell the printer to continue.

I used one of those plugins to do a filament change for some multicolor prints on a single-extruder printer.   ;D


Scott

stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 983
  • Last login:March 21, 2025, 06:36:05 am
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: Metal Tempest spinner knob?
« Reply #4 on: March 16, 2025, 06:40:45 pm »
That's a good idea. Might look into lead shot. Cheers dude.  :applaud:

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9664
  • Last login:Today at 11:21:45 am
  • Designated spam hunter
Re: Metal Tempest spinner knob?
« Reply #5 on: March 16, 2025, 07:28:12 pm »
That's a good idea. Might look into lead shot. Cheers dude.  :applaud:
Glad to assist.   :cheers:

How about wheel weights?
https://www.amazon.com/JiiinMiiin-Upgraded-Wheel-Weights-0-25oz/dp/B0DHXMQSNT/?th=1

Even better -- tungsten weights.
Quote
tungsten is 1.7 times more dense than lead
https://www.amazon.com/Tungsten-Incremental-Cylinders-Compatible-Pinewood/dp/B0BPGM3ZNN/




Scott
« Last Edit: March 16, 2025, 08:53:49 pm by PL1 »

leapinlew

  • Some questionable things going on in this room with cheetos
  • Trade Count: (+4)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 7919
  • Last login:June 22, 2025, 05:13:59 pm
Re: Metal Tempest spinner knob?
« Reply #6 on: March 18, 2025, 09:31:48 pm »
This is the one I bought for my Tempest Arcade1up. I used the GGG spinner and it was a good fit. It might be plastic, but it's real nice. No complaints from me.

https://www.arcadeadventures.com/spinner-knob-for-atari-games-new/




stigzler

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 983
  • Last login:March 21, 2025, 06:36:05 am
  • It seemed like a good idea at the time....
    • Mago Arcade
Re: Metal Tempest spinner knob?
« Reply #7 on: March 21, 2025, 06:17:28 am »
Thanks all. Lots of options...

whynotpizza

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 148
  • Last login:March 23, 2025, 10:01:28 am
  • I'm a llama!
Re: Metal Tempest spinner knob?
« Reply #8 on: March 23, 2025, 09:57:25 am »
here you go, have all 4 colors still in stock.

https://www.ebay.com/usr/crunchypops

RandyT

  • Trade Count: (+14)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 7013
  • Last login:June 20, 2025, 02:19:52 pm
  • Friends don't let friends hack keyboards.
    • GroovyGameGear.com
Re: Metal Tempest spinner knob?
« Reply #9 on: March 25, 2025, 03:02:26 pm »
here you go, have all 4 colors still in stock.


Those are Discs of TRON-ish "push-pull" knobs.  I think OP was asking about Tempest knobs.

OP, if you want an OG Tempest knob (they were plastic), I have a few which aren't reproductions.  I.e. the same part Atari used.  But they aren't cheap due to their rarity, as they haven't been produced for decades.

Santoro

  • Purveyor of Shiny Arcade Goodness
  • Santoro
  • Trade Count: (+32)
  • Full Member
  • *
  • Offline Offline
  • Posts: 3054
  • Last login:June 05, 2025, 04:10:38 pm
  • Boycott Quarters!!!
    • ArcadeReplay!
Re: Metal Tempest spinner knob?
« Reply #10 on: April 12, 2025, 08:41:10 pm »

PL1

  • Global Moderator
  • Trade Count: (+1)
  • Full Member
  • *****
  • Offline Offline
  • Posts: 9664
  • Last login:Today at 11:21:45 am
  • Designated spam hunter
Re: Metal Tempest spinner knob?
« Reply #11 on: April 13, 2025, 01:32:31 am »
If anyone wants to print a weighted Tempest repro knob, here is some WIP OpenSCAD code for two test prints and a knob.
    Flange Shaft Collar - https://www.amazon.com/dp/B07Q39WZ5K (these are the good ones for a 5 weight setup -- see below)
    M3-0.5 x 10mm set screw - https://www.amazon.com/dp/B0DDPPSZM9?th=1
    Tungsten weights - https://www.amazon.com/dp/B0838Y7CQZ

The linked set of weights will work for a knob with either 4 or 5 of the 1/2 ounce (0.44" high) weights.
- The current variable settings are for a 4 weight setup (3 of the 0.44" weights and 2 of the 0.22") with the weights held in by a flange shaft collar.
- It's a tight fit, but you can use a 5 weight setup if your flange shaft collar set screw is not several degrees off-square like some other ones were.   :banghead:   Change WeightNbr (line 79) to 5 and change FlangeShaftCollarSetscrewAngle (line 70) to 180.

An un-weighted knob weighs about 10g.
A knob with 4 weights  (2 oz) weighs about 75g.
A knob with 5 weights  (2.5 oz) weighs about 88g.

The prints came out fine on one printer, but the knob failed with my older printer.
- If this happens to you, you may need to add 0.8 or 1.6 to variable MainGripDia (line 29) so there is enough room for 1 or 2 more extruder passes between the weight chambers and the side if the knob.
- The weights can rattle just a bit, but some paper shims or a drop of hot glue should fix that.

To assemble the knob:
1. Fully thread the 10mm M3 setscrew into the flange shaft collar until it touches the other side.
2. Insert the weights into the knob.
3. Align the setscrew with the setscrew notch/hole and insert the flange collar into the knob.
4. Insert an allen wrench through the setscrew hole and turn the setscrew CCW to cut threads into the plastic until the setscrew is far enough out to clear the spinner shaft.
5. Check for rattle and fix as desired.

Flange shaft collar test print - print as oriented to test supports.
Code: [Select]
// Test - Flange Shaft Collar - Tempest knob.
// - Use this model to test variable values for customizing the Tempest Knob model.
// - When confirmed good, copy these variable values to lines 45 and 65 - 72 of the Tempest Knob model.

// NOTE: Inner diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder


/////////////////////////////
//  Define the variables
/////////////////////////////

SpinnerShaftDia = 6.6;   // Spinner shaft diameter


FlangeDiameter = 22.5;               // Flange outer diameter
FlangeHeight = 2.1;                  // Flange height
FlangeShaftCollarOuterDia = 10.4;    // Flange shaft collar outer diameter
FlangeShaftCollarHeight = 12.1;      // Flange shaft collar total height
FlangeShaftCollarVertOffset = 8.0;   // Vertical distance from the bottom of the knob to center of setscrew in flange shaft collar
FlangeShaftCollarSetscrewAngle = 180;// Setscrew angle for this option
FlangeShaftCollarSetscrewDia = 3.2;  // Shaft collar setscrew diameter
FlangeShaftCollarSetscrewNotchDepth = 2.2;// Shaft collar setscrew notch depth


// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.


/////////////////////////////
//  Make the part
/////////////////////////////

difference(){ // Test cylinder minus flange shaft collar holes and spinner shaft hole

    translate([0, 0, 0.5 + FlangeShaftCollarHeight/2])
    cylinder(FlangeShaftCollarHeight + 1, d=FlangeDiameter + 4, center=true); // Test cylinder


    color("blue")
    translate([0, 0, FlangeHeight/2])
    cylinder(FlangeHeight + 0.01, d=FlangeDiameter, center=true); // Flange shaft collar base

    color("purple")
    translate([0, 0, FlangeShaftCollarHeight/2])
    cylinder(FlangeShaftCollarHeight + 0.01, d=FlangeShaftCollarOuterDia, center=true); // Flange shaft collar body

    color("red")
    rotate([0,0,FlangeShaftCollarSetscrewAngle])
    translate([0, 1 + FlangeDiameter/2, FlangeShaftCollarVertOffset])
    rotate([-90,0,0])
    cylinder(2 + FlangeDiameter, d=FlangeShaftCollarSetscrewDia, center=true);// Setscrew hole

    color("white")
    rotate([0,0,FlangeShaftCollarSetscrewAngle])
    translate([0, FlangeShaftCollarOuterDia/2, FlangeShaftCollarHeight/2])
    cube ([FlangeShaftCollarSetscrewDia + 0.4, FlangeShaftCollarSetscrewNotchDepth * 2, FlangeShaftCollarHeight], center=true);// Setscrew notch

    // Spinner shaft
    translate([0, 0, 1 + FlangeShaftCollarHeight/2])
    cylinder(FlangeShaftCollarHeight + 2.01, d=SpinnerShaftDia, center=true); // Spinner shaft hole

} // End test cylinder minus flange shaft collar holes and spinner shaft hole
//

Test print for weights
Code: [Select]
// Test - Weights - Tempest knob.
// - Use this model to test variable values for weights the Tempest Knob model.
// - When confirmed good, copy these variable values to lines 79 and 80 of the Tempest Knob model.
// - If you plan on using the "embedded weights" option for your knob, add several print layer thicknesses to WeightHeight so you have some vertical wiggle room between the weights and the print nozzle when using a "pause at Z" plugin.

// NOTE: Inner diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder

/////////////////////////////
//  Define the variables
/////////////////////////////


WeightHeight = 12.4;    // Height of weights
WeightDia = 10.3;       // Diameter of weights


// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.


/////////////////////////////
//  Make the part
/////////////////////////////

difference(){ // Test cylinder minus weight hole

    translate([0, 0, 0.6 + WeightHeight/2])
    cylinder(WeightHeight + 1.2, d=WeightDia + 4, center=true); // Test cylinder

    translate([0, 0, 1.2 + WeightHeight/2])
    cylinder(WeightHeight + 0.01, d=WeightDia, center=true); // Weight hole

} // End test cylinder minus weight hole
//


Tempest knob (FlangeShaftCollar and FlangeShaftCollarWeight options enabled) - print with supports touching build plate
Code: [Select]
// Tempest knob. (customizable)

/*
This model is parametric so you can adjust variables to customize the knob -- almost no programming skills needed.

You can enable/disable these five options by setting these variables to "1" (enabled) or "0" (disabled)

  1. SetScrewOnly (line 50) - Use for a simple knob with a setscrew **or** use with the Weight option and a "Pause at Z" slicer plugin to insert weights while the print is paused.  Ensure SetScrewOnlyAngle variable is set to avoid the weights.

  2. ShaftCollar (line 56) - Use for a knob with a shaft collar and setscrew.  The shaft collar allows you to apply more tension to the setscrew without stripping out the plastic hole.  To keep the knob and shaft collar together, use a 3/8" or 5/16" long setscrew that engages the knob without sticking out.

  3. FlangeShaftCollar (line 64) - Use with or without option #4.  Print with supports.  Ensure FlangeShaftCollarSetscrewAngle variable is set to avoid the weights.

  4. FlangeShaftCollarWeight (line 76) - Use 2-5 round 3/8" x 0.44" tungsten pinewood derby weights to increase the mass of the knob.  Use with option FlangeShaftCollar to bottom load the weights after printing.  Print with supports.  Ensure FlangeShaftCollarSetscrewAngle variable is set to avoid the weights.

  5. EmbeddedWeight (line 77) - Use 2-5 round 3/8" x 0.44" tungsten pinewood derby weights to increase the mass of the knob.  Use with option SetScrewOnly and a "Pause at Z" slicer plugin to insert weights while the print is paused.  There isn't enough room in a standard size Tempest knob for weights with the ShaftCollar option.

NOTE: Inner diameter values may need to be *very slightly* larger to account for the 180-sided polygon used to render circles -- see "undersized holes" at https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids#cylinder

*/

/////////////////////////////
//  Define the variables
/////////////////////////////

TopBevelDia = 30.6;      // Top bevel diameter
TopBevelHeight = 1.4;    // Top bevel height

MainGripDia = 32.0;     // Main grip diameter
MainGripHeight = 13.7;   // Main grip height

UpperSkirtDia = 43.8;    // Upper skirt bottom diameter
UpperSkirtHeight = 2.8;  // Upper skirt height

LowerSkirtDia = 44.6;    // Lower skirt bottom diameter
LowerSkirtHeight = 0.8;  // Lower skirt height

TopIndentDia = 28;       // Top indent diameter
TopIndentDepth = 1.25;   // Top indent depth

GrooveNbr = 40;          // Number of grip grooves
GrooveDia = 1.5;         // Grip groove diameter
GrooveOffset = 0.65;     // Grip groove offset distance from outer edge of knob

SpinnerShaftDia = 6.6;   // Spinner shaft diameter
SpinnerShaftLength = 15; // Spinner shaft length


//////// Setscrew only option variables ////////
SetScrewOnly = 0;        // If set to 1, the OnlySetscrew module will make the necessary hole for just the setscrew.  If set to 0, it will not make that hole.
SetScrewOnlyAngle = 180; // Setscrew angle for this option
SetScrewOnlyDia = 4;     //** Setscrew diameter for this option


//////// Shaft collar option variables ////////
ShaftCollar = 0;            // If set to 1, the shaft collar module will make the necessary holes to use a shaft collar.  If set to 0, it will not make those holes.
ShaftCollarOuterDia = 12.9; // Shaft collar outer diameter
ShaftCollarHeight = 8;      // Shaft collar height
ShaftCollarSetscrewDia = 4; //** Shaft collar setscrew diameter
ShaftCollarVertOffset = 8;  // Vertical distance from the bottom of the knob to center of setscrew in shaft collar


////// Flange shaft collar option variables //////
FlangeShaftCollar = 1;               // If set to 1, the flange shaft collar module will make the necessary holes to use a flange shaft collar.  If set to 0, it will not make those holes.
FlangeDiameter = 22.5;               // Flange outer diameter
FlangeHeight = 2.1;                  // Flange height
FlangeShaftCollarOuterDia = 10.4;    // Flange shaft collar outer diameter
FlangeShaftCollarHeight = 12.1;      // Flange shaft collar total height
FlangeShaftCollarVertOffset = 8.0;   // Vertical distance from the bottom of the knob to center of setscrew in flange shaft collar
FlangeShaftCollarSetscrewAngle = 45; // Setscrew angle for this option
FlangeShaftCollarSetscrewDia = 3.2;  // Shaft collar setscrew diameter
FlangeShaftCollarSetscrewNotchDepth = 2.2;// Shaft collar setscrew notch depth
FlangeShaftCollarSetscrewNotchWidth = 3.3;// Shaft collar setscrew notch depth


////// Weight option variables //////
FlangeShaftCollarWeight = 1;// If set to 1, the FlangeShaftCollarWeights module will make the necessary holes to use weights with a flange shaft collar.  If set to 0, it will not make those holes.
EmbeddedWeight = 0;   // If set to 1, the EmbeddedWeights module will make the necessary holes for embedded weights.  If set to 0, it will not make those holes.
WeightNbr = 4;        // Number of weights
WeightHeight = 11.9;  // Height of weights
WeightDia = 10.3;     // Diameter of weights
WeightHOffset = 10.00; // Weight horizontal offset distance from center of spinner
WeightVOffset = 7;    // Weight vertical offset distance from bottom of spinner


// Number of fragments (polygon sides) used to render a full circle.
    $fn = 180; // Default = 180  Typical range = 6 - 360
    // 6 will render a circular hole as a hexagon, 8 will render a circular hole as an octagon.
    // Lower the number for faster rendering, raise the number for smoother rendering.

/////////////////////////////
// Define the modules
/////////////////////////////

module OnlySetscrew(){
    rotate([0,0,SetScrewOnlyAngle])

    translate([0, MainGripDia/2, LowerSkirtHeight + UpperSkirtHeight + MainGripHeight/2])

    rotate([-90,0,0])

    cylinder(MainGripDia, d=SetScrewOnlyDia, center=true);

} // End OnlySetscrew module
  //

module ShaftCollars(){
    translate([0, 0, (ShaftCollarVertOffset +ShaftCollarHeight/2)/2])
    cylinder(ShaftCollarVertOffset + ShaftCollarHeight/2 + 0.01, d=ShaftCollarOuterDia, center=true); // Shaft collar hole

    translate([0, MainGripDia/2, ShaftCollarVertOffset])
    rotate([-90,0,0])
    cylinder(MainGripDia, d=ShaftCollarSetscrewDia, center=true);// Setscrew hole

    translate([0, ShaftCollarOuterDia/2, (ShaftCollarVertOffset + ShaftCollarHeight/2)/2])
    cube ([ShaftCollarSetscrewDia + 0.4, 1, ShaftCollarVertOffset + ShaftCollarHeight/2 + 0.01], center=true);// Setscrew notch

} // End ShaftCollars module
  //

module FlangeShaftCollars(){
    color("blue")
    translate([0, 0, FlangeHeight/2])
    cylinder(FlangeHeight + 0.01, d=FlangeDiameter, center=true); // Flange shaft collar base

    color("purple")
    translate([0, 0, FlangeShaftCollarHeight/2])
    cylinder(FlangeShaftCollarHeight + 0.01, d=FlangeShaftCollarOuterDia, center=true); // Flange shaft collar body

    color("red")
    rotate([0,0,FlangeShaftCollarSetscrewAngle])
    translate([0, MainGripDia/2, FlangeShaftCollarVertOffset])
    rotate([-90,0,0])
    cylinder(MainGripDia, d=FlangeShaftCollarSetscrewDia, center=true);// Setscrew hole

    color("white")
    rotate([0,0,FlangeShaftCollarSetscrewAngle])
    translate([0, FlangeShaftCollarOuterDia/2, FlangeShaftCollarHeight/2])
    cube ([FlangeShaftCollarSetscrewNotchWidth, FlangeShaftCollarSetscrewNotchDepth * 2, FlangeShaftCollarHeight], center=true);// Setscrew notch

} // End FlangeShaftCollars module
  //

module FlangeShaftCollarWeights(){ // Weight holes for bottom-loading 3/8" tungsten weights with a flange shaft collar
    for(Y = [0:WeightNbr]){ // Weight loop

    rotate([0, 0, Y*(360/WeightNbr)])

    translate([0, WeightHOffset, (FlangeHeight + WeightHeight)/2])

    cylinder(FlangeHeight + WeightHeight + 0.1, d=WeightDia, center=true); // Weight hole

    } // End weight loop
    //
    // End weight holes

} // End EmbeddedWeights module
  //


module EmbeddedWeights(){ // Weight holes for embedded 3/8" tungsten weights
    for(Y = [0:WeightNbr]){ // Weight loop

    rotate([0, 0, Y*(360/WeightNbr)])

    translate([0, WeightHOffset, WeightVOffset])

    cylinder(WeightHeight, d=WeightDia, center=true); // Weight hole

    } // End weight loop
    //
    // End weight holes

} // End EmbeddedWeights module
  //


/////////////////////////////
//  Make the part
/////////////////////////////

difference(){ // Knob body minus top indent, grip grooves, spinner shaft, set screw hole, weight holes and shaft collar holes

    union(){ // Knob body

        translate([0, 0, LowerSkirtHeight + UpperSkirtHeight + MainGripHeight + TopBevelHeight/2])
        cylinder(TopBevelHeight, d1=MainGripDia, d2=TopBevelDia, center=true); // Top bevel

        translate([0, 0, LowerSkirtHeight + UpperSkirtHeight + MainGripHeight/2])
        cylinder(MainGripHeight, d=MainGripDia, center=true); // Main grip

        translate([0, 0, LowerSkirtHeight + UpperSkirtHeight/2])
        cylinder(UpperSkirtHeight, d1=UpperSkirtDia, d2=MainGripDia, center=true); // Upper skirt

        translate([0, 0, LowerSkirtHeight/2])
        cylinder(LowerSkirtHeight, d1=LowerSkirtDia, d2=UpperSkirtDia, center=true); // Lower skirt

    }// End knob body
    //

    // Top indent
    translate([0, 0, LowerSkirtHeight + UpperSkirtHeight + MainGripHeight + TopBevelHeight - TopIndentDepth/2])
        cylinder(TopIndentDepth + 0.01, d=TopIndentDia, , center=true);

    // Grip grooves
    for(X = [0:GrooveNbr]){ // Grip grooves loop
    rotate([0, 0, X*(360/GrooveNbr)])
    translate([0, MainGripDia/2 + GrooveOffset, LowerSkirtHeight + UpperSkirtHeight + MainGripHeight/2])
    cylinder(MainGripHeight, d=GrooveDia, center=true); // Grip groove
    } // End grip grooves loop
    //

    // Spinner shaft
    translate([0, 0, SpinnerShaftLength/2])
    cylinder(SpinnerShaftLength + 0.01, d=SpinnerShaftDia, center=true); // Spinner shaft hole
    translate([0, 0, 0.5])
    cylinder(1 + 0.01, d1=SpinnerShaftDia + 2, d2=SpinnerShaftDia, center=true); // Spinner shaft flare at base for easier insertion

    // Only setscrew option
    if (SetScrewOnly == 1){ // Make setscrew hole if SetScrewOnly variable value = 1
        OnlySetscrew(); // OnlySetScrew module call
    } //
    //

    // Shaft collar option
    if (ShaftCollar == 1){ // Make ShaftCollar holes if ShaftCollar variable value = 1
        ShaftCollars(); // Shaft collar module call
    } //
    //

    // Flange shaft collar option
    if (FlangeShaftCollar == 1){ // Make flange shaft collar holes if ShaftCollar variable value = 1
        FlangeShaftCollars(); // Flange shaft collar module call
    } //
    //

    // FlangeShaftCollarWeights option
    if (FlangeShaftCollarWeight == 1){ // Make weight holes if Weight variable value = 1
        FlangeShaftCollarWeights(); // FlangeShaftCollarWeights module call
    } //
    //

    // EmbeddedWeights option
    if (EmbeddedWeight == 1){ // Make weight holes if Weight variable value = 1
        EmbeddedWeights(); // EmbeddedWeights module call
    } //
    //

} // End knob body minus top indent, grip grooves, set screw hole, weight holes and shaft collar holes
//


Scott
EDIT: Added a .zip file containing the three .scad files and an .stl file.
« Last Edit: April 13, 2025, 02:27:04 am by PL1 »