added kitt matrix
parent
d4258527b8
commit
edefeee886
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
Case for LED-Matrix of the KITT-Voice-Assistant
|
||||
by zeus - 2024-08-17 - CC-BY-SA-NC-4.0
|
||||
https://git.kostianix.de/zeus/3d-stuff/src/branch/main/openscad/own/kitt-matrix
|
||||
*/
|
||||
|
||||
// ##########################################
|
||||
// VARS:
|
||||
$fn=25; // overall render quality
|
||||
q=0.01; // only used to get rid of visual glitches. can be set to 0 for productive exports.
|
||||
mt=9; // material thickness, NOT overall thickness in case of a rim!
|
||||
pt=3; // panel thickness
|
||||
mt_inner=2; // constrained wall thickness for inside-walls between LEDs
|
||||
panel_w=67; // overall width of led panel
|
||||
panel_h=66; // same for height
|
||||
panel_t_pcb=1.5; // height of PCB
|
||||
panel_t_led=1.5; // height of the soldered LED modules
|
||||
panel_t=(panel_t_pcb+panel_t_led); // overall thickness of the PCB+LEDs (~50:50)
|
||||
led_spacing_x=8.5; // center-to-center spacing from LED to next LED, in width/x-axis-direction
|
||||
led_spacing_y=8; // same for height/Y-axis
|
||||
led_w=4.5+1.5;
|
||||
led_h=5+1;
|
||||
led_num_x=8;
|
||||
led_num_y=8;
|
||||
offset_left=((panel_w-((led_num_x*led_w)+((led_num_x-1)*(led_spacing_x-led_w))))/2); // offset on one side (effectively "panel_w-e2e_x/2", but properly calculated)
|
||||
offset_top= ((panel_h-((led_num_y*led_h)+((led_num_y-1)*(led_spacing_y-led_h))))/2); // offset on one side (effectively "panel_h-e2e_y/2", but properly calculated)
|
||||
|
||||
e2e_x=64; // width/x-axis edge-to-edge-distance from beginning of first to end of last LED (LED-Case, not soldering-points). for reference only
|
||||
e2e_y=61.75; // same for height/Y-axis
|
||||
|
||||
conhole_d=4; // connection hole between frame parts
|
||||
conhole_taper_h=2; // is this needed?
|
||||
conhole_i_d=2.75; // should fit M3
|
||||
conhole_offset=3.5; //offset from outer perimeter
|
||||
cutout_w=10;
|
||||
//echo("offset left is ",offset_left);
|
||||
//echo("offset top is ",offset_top);
|
||||
|
||||
|
||||
// ##########################################
|
||||
|
||||
// MODULES:
|
||||
|
||||
module panel(){
|
||||
// PCB:
|
||||
cube([panel_w,panel_h,panel_t_pcb+q],center=true);
|
||||
// overcomplicated "for" to determine the exact positions of the LEDs on the board.
|
||||
// The LEDs themselves are not needed for rendering
|
||||
// LEDs:
|
||||
/*
|
||||
for (num_x=[0:led_spacing_x:led_spacing_x*(led_num_x-1)],num_y=[0:led_spacing_y:led_spacing_y*(led_num_y-1)])
|
||||
translate([-(panel_w/2-led_w/2)+offset_left+num_x,-(panel_h/2-led_h/2)+offset_top+num_y,panel_t_led])color( "#ff0000" )cube([led_w,led_h,panel_t_led],center=true);
|
||||
*/
|
||||
// "lightpipes":
|
||||
// left column (span 2 wide each)
|
||||
for (num_x=[0:led_spacing_x:led_spacing_x*(led_num_x-1)],num_y=[0:led_spacing_y])
|
||||
translate([-(panel_w/2-led_w/2)+offset_left+num_x,-(panel_h/2-led_h/2)+offset_top+num_y,panel_t_pcb+panel_t_led*1.5])color( "#00ff00" )cube([led_w,led_h,panel_t_led*4+q],center=true);
|
||||
// center column (span 2 wide each)
|
||||
for (num_x=[0:led_spacing_x:led_spacing_x*(led_num_x-1)],num_y=[led_spacing_y*3:led_spacing_y*4])
|
||||
translate([-(panel_w/2-led_w/2)+offset_left+num_x,-(panel_h/2-led_h/2)+offset_top+num_y,panel_t_pcb+panel_t_led*1.5])color( "#00ff00" )cube([led_w,led_h,panel_t_led*4+q],center=true);
|
||||
// right column (span 2 wide each)
|
||||
for (num_x=[0:led_spacing_x:led_spacing_x*(led_num_x-1)],num_y=[led_spacing_y*6:led_spacing_y*7])
|
||||
translate([-(panel_w/2-led_w/2)+offset_left+num_x,-(panel_h/2-led_h/2)+offset_top+num_y,panel_t_pcb+panel_t_led*1.5])color( "#00ff00" )cube([led_w,led_h,panel_t_led*4+q],center=true);
|
||||
// smaller inbetween columns (span 1 wide each)
|
||||
for (num_x=[0:led_spacing_x:led_spacing_x*(led_num_x-1)],num_y=[led_spacing_y*2,led_spacing_y*5])
|
||||
translate([-(panel_w/2-led_w/2)+offset_left+num_x,-(panel_h/2-led_h/2)+offset_top+num_y,panel_t_pcb+panel_t_led*1.5])color( "#00ff00" )cube([led_w,led_h,panel_t_led*4+q],center=true);
|
||||
|
||||
}
|
||||
module panelholder(){
|
||||
translate([0,0,panel_t_pcb])difference(){
|
||||
cube([panel_w+mt,panel_h+mt,(panel_t+(panel_t_pcb+panel_t_led*2))],center=true);
|
||||
translate([0,0,-(panel_t_pcb+panel_t_led)])
|
||||
panel();
|
||||
//translate([0,0,-panel_t_led*3])cube([panel_w,panel_h,(panel_t+(panel_t_led*3))],center=true);
|
||||
// screwholes for M3
|
||||
for (
|
||||
pos_x=[-(panel_w+mt)/2+conhole_offset,
|
||||
(panel_w+mt)/2-conhole_offset],
|
||||
pos_y=[-(panel_h+mt)/2+conhole_offset,
|
||||
(panel_h+mt)/2-conhole_offset]
|
||||
)
|
||||
translate([pos_x,pos_y,-1])
|
||||
#cylinder(d=conhole_i_d,h=(panel_t+(panel_t_led*3)+q),center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module panelframe(){
|
||||
translate([0,0,panel_t_pcb])difference(){
|
||||
cube([panel_w+mt,panel_h+mt,(panel_t+(panel_t_led*8))],center=true);
|
||||
translate([cutout_w/2,0,pt])cube([panel_w-(offset_left*2)+cutout_w,panel_h-(offset_top*2),(panel_t+(panel_t_led*8))+q],center=true);
|
||||
for (
|
||||
pos_x=[-(panel_w+mt)/2+conhole_offset,
|
||||
(panel_w+mt)/2-conhole_offset],
|
||||
pos_y=[-(panel_h+mt)/2+conhole_offset,
|
||||
(panel_h+mt)/2-conhole_offset])
|
||||
{
|
||||
translate([pos_x,pos_y,0])cylinder(d=conhole_d,h=(panel_t+(panel_t_led*8))+q,center=true);
|
||||
translate([pos_x,pos_y,-(panel_t+(panel_t_led*8))/2+conhole_taper_h/2])cylinder(d2=conhole_d,d1=conhole_d*1.5,h=conhole_taper_h+q,center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
// ##########################################
|
||||
|
||||
// DRAW MODEL:
|
||||
panelholder();
|
||||
translate([0,0,-(panel_t+(panel_t_led*3))-50])panelframe();
|
Binary file not shown.
Loading…
Reference in New Issue