You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					99 lines
				
				2.6 KiB
			
		
		
			
		
	
	
					99 lines
				
				2.6 KiB
			|   
											8 years ago
										 | /*
 | ||
|  | Open freecad, select Workbench OpenSCAD | ||
|  | import file, select group, save as freecad file, | ||
|  | close, open freecad file and export to VRML 2.0 (wrl file) | ||
|  | https://www.freecadweb.org/wiki/Import_OpenSCAD_code
 | ||
|  | */ | ||
|  | 
 | ||
|  | n_pins=7; // number of pins
 | ||
|  | pin_pitch=2.54; // pin pitch
 | ||
|  | pin_thick=0.7; | ||
|  | 
 | ||
|  | // 0.96" COLOR OLED SSD1331
 | ||
|  | body=[27.2,30.7,2]; // PCB dimensions of the display
 | ||
|  | height=6; // body above z axis
 | ||
|  | hole_d=2.5; // hole diameter
 | ||
|  | hole_edge=2; // hole center to body edge
 | ||
|  | color_body=[0.03,0.03,0.15]; | ||
|  | color_rgbw=[[1,0,0],[0,1,0],[0,0,1],[1,1,1]]; | ||
|  | 
 | ||
|  | // pin protrusions
 | ||
|  | pin_above=1; // above the display
 | ||
|  | pin_below=2; // below the height
 | ||
|  | color_pin="white"; | ||
|  | 
 | ||
|  | 
 | ||
|  | font = "Liberation Sans"; | ||
|  | letter_size = pitch/2; | ||
|  | letter_height = pitch/16; | ||
|  | color_letter="white"; | ||
|  | enable_letter=0; // letters don't work after exporting to VRML
 | ||
|  | 
 | ||
|  | module letter(l,scale=1) | ||
|  | { | ||
|  |   // Use linear_extrude() to make the letters 3D objects as they
 | ||
|  |   // are only 2D shapes when only using text()
 | ||
|  |   linear_extrude(height = letter_height*scale) | ||
|  |   { | ||
|  | 	text(l, size = letter_size*scale, font = font, halign = "center", | ||
|  |      valign = "center", $fn = 16); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | module inscription(scale=1) | ||
|  | { | ||
|  |   translate([ | ||
|  |     (0-n_switches/2+0.5)*pitch, | ||
|  |     body[1]/2-letter_size, | ||
|  |     body[2]/2-letter_height*scale]) | ||
|  |       letter("ON"); | ||
|  |   for(i = [0:n_switches-1]) | ||
|  |   { | ||
|  |     translate([ | ||
|  |     (i-n_switches/2+0.5)*pitch, | ||
|  |       -body[1]/2+letter_size, | ||
|  |       body[2]/2-letter_height*scale]) | ||
|  |       letter(chr(48+(i+1)%10)); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module oled() | ||
|  | { | ||
|  |       translate([0,(body[1]/2-pin_pitch*0.75),-body[2]/2+height]) | ||
|  |           difference() | ||
|  |           { | ||
|  |             color(color_body) | ||
|  |               cube(body, center=true); | ||
|  |             union() | ||
|  |             { | ||
|  |             // color stripes display simulation
 | ||
|  |             for(i=[0:len(color_rgbw)-1]) | ||
|  |             translate([0,-body[1]/8*(i-len(color_rgbw)/2+0.5),body[2]/2]) | ||
|  |               color(color_rgbw[i]) | ||
|  |                 cube([body[0]*0.9,body[1]/8,0.1],center=true); | ||
|  |             // holes
 | ||
|  |               for(i=[-1:2:1]) | ||
|  |                 for(j=[-1:2:1]) | ||
|  |                   translate( | ||
|  |                   [ | ||
|  |                     i*(body[0]/2-hole_edge), | ||
|  |                     j*(body[1]/2-hole_edge), | ||
|  |                     0 | ||
|  |                   ]) | ||
|  |                     cylinder(d=hole_d,h=body[2]+0.1,$fn=24,center=true); | ||
|  |             } | ||
|  |           } | ||
|  |       // the pins
 | ||
|  |       for(i = [0:n_pins-1]) | ||
|  |       { | ||
|  |         // pins
 | ||
|  |           translate([(i-n_pins/2+0.5)*pin_pitch,0,-body[2]/2*0+(height+pin_above+pin_below)/2-pin_below]) | ||
|  |             color(color_pin) | ||
|  |               cube([pin_thick,pin_thick,height+pin_above+pin_below],center=true); | ||
|  |       } | ||
|  | } | ||
|  | 
 | ||
|  | // scale(1/2.54) // required scale for KiCAD VRML file dipswitch_smd.wrl
 | ||
|  | oled(); |