]> www.fi.muni.cz Git - things.git/blob - i3-16x2-lcd-display.scad
switch holder.scad
[things.git] / i3-16x2-lcd-display.scad
1 wall = 1.5;
2 tolerance = 0.5;
3
4 infty = 300;
5 eps = 0.01;
6
7 pcb_w = 80 + 2*tolerance;
8 pcb_h = 36 + 2*tolerance;
9 pcb_thick = 1.6 + tolerance;
10
11 disp_w = 71 + 2*tolerance;
12 disp_h = 24 + 2*tolerance;
13 disp_thick = 7.2 + tolerance;
14 disp_hole_thick = 4 + tolerance;
15
16 disp_yoff = -1;
17
18 window_w = 68;
19 window_h = 18;
20
21 ledside_clip_w = disp_h/2;
22
23 cable_dist = 5;
24
25 trimpot_w = 7.5 + 1.5;
26 trimpot_h = 6.5 + 1.5;
27 trimpot_hole = 4;
28 trimpot_xoff = 11;
29 trimpot_yoff = 3.25;
30
31 frame_thick = 6 + tolerance;
32 support_w = 0.75;
33
34 module box_body() {
35         translate([-pcb_w/2 - wall, -pcb_h/2 - wall, 0])
36                 cube([pcb_w + 2*wall, pcb_h + 2*wall,
37                         cable_dist + pcb_thick + disp_thick + wall]);
38         translate([-pcb_w/2 - wall, , 0])
39                 cube([pcb_w + 2*wall, pcb_h/2 + wall,
40                         frame_thick + 2*cable_dist + pcb_thick + disp_thick + 2*wall]);
41 };
42
43 module box() {
44         difference() {
45                 box_body();
46                 // front hole
47                 hull() {
48                         translate([-window_w/2-wall, disp_yoff-window_h/2-wall, -eps])
49                                 cube([window_w+2*wall, window_h+2*wall, eps]);
50                         translate([-window_w/2, disp_yoff-window_h/2, wall])
51                                 cube([window_w, window_h, eps]);
52                 };
53                 // display hole
54                 translate([-disp_w/2, disp_yoff - disp_h/2, wall])
55                         cube([disp_w, disp_h, frame_thick + 2*cable_dist + pcb_thick + disp_thick]);
56                 // pcb hole
57                 translate([-pcb_w/2, -pcb_h/2, wall + disp_hole_thick])
58                         cube([pcb_w, pcb_h, frame_thick + 2*cable_dist + pcb_thick + disp_thick + wall + eps - disp_hole_thick]);
59                 // trimpot slot
60                 translate([pcb_w/2-trimpot_xoff-trimpot_w/2, pcb_h/2-trimpot_h, wall])
61                         cube([trimpot_w, trimpot_h, disp_thick+eps]);
62                 // trimpot hole
63                 translate([pcb_w/2-trimpot_xoff, pcb_h/2-trimpot_yoff, -eps])
64                         cylinder(r1 = trimpot_hole/2 + wall,
65                                 r2 = trimpot_hole/2, h = wall + 2*eps);
66                 // hole for the frame
67                 translate([-pcb_w/2-wall-eps, support_w, cable_dist + pcb_thick + disp_thick + wall])
68                         cube([pcb_w + 2*wall + 2*eps, pcb_h/4 - support_w, frame_thick]);
69         };
70         // LED-side battery clip
71         hull() {
72                 translate([-pcb_w/2, -ledside_clip_w/2,
73                         wall + pcb_thick + disp_thick])
74                         cube([wall, ledside_clip_w, wall]);
75                 translate([-pcb_w/2, -ledside_clip_w/2,
76                         3*wall + pcb_thick + disp_thick])
77                         cube([eps, ledside_clip_w, eps]);
78         };
79         // LED-side battery clip
80         translate([pcb_w/2-wall, -pcb_h/2-eps, wall + pcb_thick + disp_thick])
81                 cube([wall, pcb_h + 2*eps, wall]);
82         
83 };
84
85 box($fn = 128);
86