Having a few TCRT5000 proximity sensors lying around, I used one for the Color Mixer so folks could just wave a finger to flip the LED colors, rather than pound relentlessly on the top plate:

The stem fits into a slot made with a 3/8 inch end mill:

You move the cutter by the length of the sensor (10.0 mm will work) to make the slot. In practical terms, drill a hole at the midpoint, insert the cutter, then move ±5.0 mm from the center:

A bead of epoxy around the stem on the bottom of the panel should hold it in place forevermore.
The rectangular inner hole came out a tight push fit for the TCRT5000 sensor, so I didn’t bother gluing it in place and, surprisingly, it survived the day unscathed!
The OpenSCAD source code as a GitHub Gist:
// TCRT5000 Proximity switch sensor mount | |
// Ed Nisley KE4ZNU - October 2016 | |
Layout = "Build"; // Show Build | |
//- Extrusion parameters must match reality! | |
ThreadThick = 0.25; | |
ThreadWidth = 0.40; | |
HoleWindage = 0.2; | |
Protrusion = 0.1; // make holes end cleanly | |
inch = 25.4; | |
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
//---------------------- | |
// Dimensions | |
Sensor = [5.9,10.0,7.0]; | |
SensorHoleCutter = 3/8 * inch; | |
echo(str("Cutter dia: ",SensorHoleCutter," mm")); | |
echo(str("Cutter motion: ",Sensor[1]," mm")); | |
PanelThick = 5.0; | |
StemLength = PanelThick + 6*ThreadThick; | |
FlangeThick = 3 * ThreadThick; | |
//---------------------- | |
// Flange model | |
module ProxFlange() { | |
difference() { | |
union() { | |
linear_extrude(height=FlangeThick) | |
hull() | |
for (i=[-1,1], j=[-1,1]) | |
translate([i*Sensor[0],j*Sensor[1]]) | |
circle(r=Sensor[0]/2,$fn=8*4); | |
translate([0,0,-StemLength]) | |
linear_extrude(height=StemLength) | |
hull() | |
for (j=[-1,1]) | |
translate([0,j*Sensor[1]/2]) | |
circle(d=SensorHoleCutter,$fn=8*4); | |
} | |
translate([0,0,-Protrusion]) | |
cube(Sensor + [HoleWindage,HoleWindage,2*(PanelThick + Protrusion)],center=true); | |
} | |
} | |
//---------------------- | |
// Build it | |
if (Layout == "Show") | |
ProxFlange(); | |
if (Layout == "Build") | |
translate([0,0,FlangeThick]) | |
rotate([180,0,0]) | |
ProxFlange(); | |