Case: mount the display the right way up

The glass is 4.4 mm off-centre on the display PCB. Turning the display
180 degrees so the text reads correctly moved the glass partly behind the
window edge. New disp_rotated option (default on) moves the bezel bosses
to match. Only the bezel changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-11-01 13:03:53 +01:00
1 parent 0cf5df9b6e
commit 4a533af37a
3 files changed
+17 -5

No files matched your search

+6
View File
@@ -61,6 +61,12 @@ check these against yours and change the values at the top of
- `usb_pos`: where the micro-USB port is along the D1's back edge (38 mm from - `usb_pos`: where the micro-USB port is along the D1's back edge (38 mm from
the jack side is a guess based on the UNO layout). Also check `jack_pos`. the jack side is a guess based on the UNO layout). Also check `jack_pos`.
- `disp_rotated`: the glass is off-centre on the display's PCB, so the bezel
depends on which way up the display is mounted. `true` (the default) is the
orientation the display reads correctly in: turned 180° from the
datasheet's front view, with the jumper header on the left seen from the
front.
If only the display is off, it's enough to reprint the bezel. If only the display is off, it's enough to reprint the bezel.
## Changing the design ## Changing the design
Binary file not shown.
+11 -5
View File
@@ -35,8 +35,8 @@ top_margin = 4; // bezel above the display's top edge (along the panel)
disp_w = 190; disp_w = 190;
disp_h = 64; disp_h = 64;
disp_hole_inset = 4; // hole centres from the PCB edges (182 x 56 spacing) disp_hole_inset = 4; // hole centres from the PCB edges (182 x 56 spacing)
glass_x0 = 3.0; // glass left edge from PCB left edge (front view) glass_x0 = 3.0; // glass left edge from PCB left edge (datasheet front view)
glass_y0 = 7.85; // glass bottom edge from PCB bottom edge glass_y0 = 7.85; // glass bottom edge from PCB bottom edge (datasheet front view)
glass_w = 175.2; glass_w = 175.2;
glass_h = 48.3; glass_h = 48.3;
glass_depth = 12.0; // glass front face to PCB front face glass_depth = 12.0; // glass front face to PCB front face
@@ -44,6 +44,9 @@ glass_gap = 0.5; // air gap between bezel and glass (datasheet asks for o
pcb_t = 1.6; pcb_t = 1.6;
disp_back = 11; // components behind the display PCB disp_back = 11; // components behind the display PCB
disp_raise = 14; // PCB bottom edge, measured along the panel from the bottom disp_raise = 14; // PCB bottom edge, measured along the panel from the bottom
disp_rotated = true; // display turned 180 deg from the datasheet's front view
// (jumper header on the left seen from the front); the
// glass is off-centre, so this moves the bosses 8.8 mm
/* [Window] */ /* [Window] */
win_w = 156; win_w = 156;
@@ -76,7 +79,10 @@ board_comp_h = 10; // tallest part on the board (dummy for the collision ch
$fn = 48; $fn = 48;
// ---------- derived ---------- // ---------- derived ----------
gx_c = glass_x0 + glass_w / 2; // glass centre from PCB left // glass position from the PCB's bottom-left corner as mounted (front view)
gl_x = disp_rotated ? disp_w - glass_x0 - glass_w : glass_x0;
gl_y = disp_rotated ? disp_h - glass_y0 - glass_h : glass_y0;
gx_c = gl_x + glass_w / 2; // glass centre from PCB left
inner_w = 2 * (max(gx_c, disp_w - gx_c) + 1.5); // window centred, 1.5 mm side clearance inner_w = 2 * (max(gx_c, disp_w - gx_c) + 1.5); // window centred, 1.5 mm side clearance
outer_w = inner_w + 2 * wall; outer_w = inner_w + 2 * wall;
disp_x0 = inner_w / 2 - gx_c; // PCB left edge, x disp_x0 = inner_w / 2 - gx_c; // PCB left edge, x
@@ -85,7 +91,7 @@ height = z_top_in + wall;
n_bezel_in = lip + bezel_t; // bezel inner face (local N) n_bezel_in = lip + bezel_t; // bezel inner face (local N)
n_glass = n_bezel_in + glass_gap; n_glass = n_bezel_in + glass_gap;
n_pcb = n_glass + glass_depth; n_pcb = n_glass + glass_depth;
win_s = disp_raise + glass_y0 + glass_h / 2; // window centre along the panel win_s = disp_raise + gl_y + glass_h / 2; // window centre along the panel
board_x0 = inner_w / 2 - board_w / 2; board_x0 = inner_w / 2 - board_w / 2;
board_conn_y = depth - wall - board_gap; // y of the board's connector edge board_conn_y = depth - wall - board_gap; // y of the board's connector edge
pcb_top_z = standoff_h + pcb_t; pcb_top_z = standoff_h + pcb_t;
@@ -231,7 +237,7 @@ module tie_anchor() {
// ---------- dummies for the preview and the collision checks ---------- // ---------- dummies for the preview and the collision checks ----------
module display_dummy() { module display_dummy() {
panel() { panel() {
translate([disp_x0 + glass_x0, disp_raise + glass_y0, n_glass + 0.01]) translate([disp_x0 + gl_x, disp_raise + gl_y, n_glass + 0.01])
cube([glass_w, glass_h, glass_depth - 0.02]); cube([glass_w, glass_h, glass_depth - 0.02]);
translate([disp_x0, disp_raise, n_pcb + 0.01]) difference() { translate([disp_x0, disp_raise, n_pcb + 0.01]) difference() {
cube([disp_w, disp_h, pcb_t + disp_back]); cube([disp_w, disp_h, pcb_t + disp_back]);