mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-08-03 22:17:25 +02:00
7_segment displays added as PCB component.
This commit is contained in:
30
readme.md
30
readme.md
@@ -48,6 +48,36 @@ A list of changes classified as breaking, additions or fixes is maintained in [C
|
|||||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
---
|
||||||
|
<a name="7_segments"></a>
|
||||||
|
## 7_segments
|
||||||
|
7 Segment displays
|
||||||
|
|
||||||
|
[vitamins/7_segments.scad](vitamins/7_segments.scad) Object definitions.
|
||||||
|
|
||||||
|
[vitamins/7_segment.scad](vitamins/7_segment.scad) Implementation.
|
||||||
|
|
||||||
|
[tests/7_segments.scad](tests/7_segments.scad) Code for this example.
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
| Function | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| `7_segment_digit_size(type)` | Size of the actual digit and segemnt width and angle |
|
||||||
|
| `7_segment_pin_pitch(type)` | x and y pin pitches and pin diameter |
|
||||||
|
| `7_segment_pins(type)` | None |
|
||||||
|
| `7_segment_size(type)` | Size of the body |
|
||||||
|
|
||||||
|
### Modules
|
||||||
|
| Module | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| `7_segment_digit(type, colour = grey(95)` | Draw the specified 7 segment digit |
|
||||||
|
| `7_segment_digits(type, n, colour = grey(70)` | Draw n digits side by side |
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
<a href="#top">Top</a>
|
||||||
|
|
||||||
---
|
---
|
||||||
<a name="Axials"></a>
|
<a name="Axials"></a>
|
||||||
## Axials
|
## Axials
|
||||||
|
29
tests/7_segments.scad
Normal file
29
tests/7_segments.scad
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2021
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
include <../core.scad>
|
||||||
|
use <../utils/layout.scad>
|
||||||
|
|
||||||
|
include <../vitamins/7_segments.scad>
|
||||||
|
|
||||||
|
module 7_segments()
|
||||||
|
layout([for(s = 7_segments) 7_segment_size(s).x * 2], 5) let(s = 7_segments[$i])
|
||||||
|
7_segment_digits(s, 2);
|
||||||
|
|
||||||
|
if($preview)
|
||||||
|
7_segments();
|
@@ -22,6 +22,8 @@ include <../vitamins/d_connectors.scad>
|
|||||||
include <../vitamins/leds.scad>
|
include <../vitamins/leds.scad>
|
||||||
include <../vitamins/axials.scad>
|
include <../vitamins/axials.scad>
|
||||||
include <../vitamins/smds.scad>
|
include <../vitamins/smds.scad>
|
||||||
|
include <../vitamins/7_segments.scad>
|
||||||
|
include <../vitamins/potentiometers.scad>
|
||||||
|
|
||||||
use <../vitamins/pcb.scad>
|
use <../vitamins/pcb.scad>
|
||||||
|
|
||||||
@@ -46,7 +48,7 @@ TMC2130 = ["TMC2130", "TMC2130",
|
|||||||
[]
|
[]
|
||||||
];
|
];
|
||||||
|
|
||||||
test_pcb = ["TestPCB", "Test PCB",
|
test_pcb = ["test_pcb", "Test PCB",
|
||||||
100, 250, 1.6, // length, width, thickness
|
100, 250, 1.6, // length, width, thickness
|
||||||
3, // Corner radius
|
3, // Corner radius
|
||||||
2.75, // Mounting hole diameter
|
2.75, // Mounting hole diameter
|
||||||
@@ -138,6 +140,7 @@ test_pcb = ["TestPCB", "Test PCB",
|
|||||||
[ 50, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
[ 50, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
||||||
[ 50, 240, 0, "potentiometer"],
|
[ 50, 240, 0, "potentiometer"],
|
||||||
[ 75, 240, 0, "potentiometer", 7, 8],
|
[ 75, 240, 0, "potentiometer", 7, 8],
|
||||||
|
[ 30, 85, -90, "7seg", WT5011BSR, 2],
|
||||||
],
|
],
|
||||||
// accessories
|
// accessories
|
||||||
[]
|
[]
|
||||||
|
BIN
tests/png/7_segments.png
Normal file
BIN
tests/png/7_segments.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
107
vitamins/7_segment.scad
Normal file
107
vitamins/7_segment.scad
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2021
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
//! 7 Segment displays
|
||||||
|
//
|
||||||
|
include <../utils/core/core.scad>
|
||||||
|
|
||||||
|
|
||||||
|
function 7_segment_size(type) = type[1]; //! Size of the body
|
||||||
|
function 7_segment_digit_size(type) = type[2]; //! Size of the actual digit and segemnt width and angle
|
||||||
|
function 7_segment_pins(type) = type[3]; //! [x, y] array of pins
|
||||||
|
function 7_segment_pin_pitch(type) = type[4]; //! x and y pin pitches and pin diameter
|
||||||
|
|
||||||
|
module 7_segment_digit(type, colour = grey(95), pin_length = 6.4) { //! Draw the specified 7 segment digit
|
||||||
|
size = 7_segment_size(type);
|
||||||
|
digit = 7_segment_digit_size(type);
|
||||||
|
pins = 7_segment_pins(type);
|
||||||
|
pin_pitch = 7_segment_pin_pitch(type);
|
||||||
|
|
||||||
|
color(grey(95))
|
||||||
|
linear_extrude(size.z)
|
||||||
|
square([size.x - 0.1, size.y], center = true);
|
||||||
|
|
||||||
|
color(grey(15))
|
||||||
|
translate_z(size.z)
|
||||||
|
cube([size.x - 0.1, size.y, eps], center = true);
|
||||||
|
|
||||||
|
color(colour)
|
||||||
|
translate_z(size.z)
|
||||||
|
linear_extrude(2 * eps) {
|
||||||
|
t = digit[2];
|
||||||
|
a = digit[3];
|
||||||
|
sq = [digit.x - 2 * t, (digit.y - 3 * t) / 2];
|
||||||
|
|
||||||
|
multmatrix([ // Skew
|
||||||
|
[1, tan(a), 0, 0],
|
||||||
|
[0, 1, 0, 0],
|
||||||
|
[0, 0, 1, 0],
|
||||||
|
[0, 0, 0, 1]
|
||||||
|
])
|
||||||
|
difference() {
|
||||||
|
square([digit.x, digit.y], center = true);
|
||||||
|
|
||||||
|
for(y = [-1, 1], x = [-1, 1]) {
|
||||||
|
translate([0, y * (t + sq.y) / 2])
|
||||||
|
square(sq, center = true);
|
||||||
|
|
||||||
|
|
||||||
|
translate([x * digit.x / 2, y * digit.y / 2])
|
||||||
|
rotate(-45 * x * y) {
|
||||||
|
square([10, t], center = true);
|
||||||
|
|
||||||
|
square([t / 5, 10], center = true);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([x * (digit.x - t) / 2, 0])
|
||||||
|
rotate(45) {
|
||||||
|
square([t / 5, t * 2], center = true);
|
||||||
|
|
||||||
|
square([t * 2, t / 5], center = true);
|
||||||
|
|
||||||
|
translate([x * t / 2, -x * t / 2])
|
||||||
|
square([t, t], center = true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r = 1.25 * t / 2;
|
||||||
|
translate([digit.x / 2 - r + digit.y / 2 * tan(a), -digit.y / 2 + r])
|
||||||
|
circle(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
color(silver)
|
||||||
|
translate_z(-pin_length)
|
||||||
|
linear_extrude(pin_length)
|
||||||
|
for(x = [0 : 1 : pins.x - 1], y = [0 : 1 : pins.y - 1])
|
||||||
|
translate([(x - (pins.x - 1) / 2) * pin_pitch.x, (y - (pins.y - 1) / 2) * pin_pitch.y])
|
||||||
|
circle(d = pin_pitch[2], $fn = 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
module 7_segment_digits(type, n, colour = grey(70), pin_length = 6.4, cutout = false) { //! Draw n digits side by side
|
||||||
|
size = 7_segment_size(type);
|
||||||
|
|
||||||
|
if(cutout)
|
||||||
|
linear_extrude(100)
|
||||||
|
square([n * size.x, size.y], center = true);
|
||||||
|
else
|
||||||
|
for(i = [0 : 1 : n - 1])
|
||||||
|
translate([(i - (n - 1) / 2) * size.x, 0])
|
||||||
|
7_segment_digit(type, colour, pin_length);
|
||||||
|
}
|
28
vitamins/7_segments.scad
Normal file
28
vitamins/7_segments.scad
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
//
|
||||||
|
// NopSCADlib Copyright Chris Palmer 2021
|
||||||
|
// nop.head@gmail.com
|
||||||
|
// hydraraptor.blogspot.com
|
||||||
|
//
|
||||||
|
// This file is part of NopSCADlib.
|
||||||
|
//
|
||||||
|
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||||
|
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
|
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||||
|
// If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
//! 7 Segment displays
|
||||||
|
//
|
||||||
|
|
||||||
|
WT5011BSR = ["WT5011BSR", [12.7, 19, 8.2], [7.2, 12.7, 1.2, 10], [5, 2], [inch(0.1), inch(0.6), 0.4]];
|
||||||
|
|
||||||
|
7_segments = [ WT5011BSR ];
|
||||||
|
|
||||||
|
use <7_segment.scad>
|
@@ -22,6 +22,8 @@ include <leds.scad>
|
|||||||
include <axials.scad>
|
include <axials.scad>
|
||||||
include <smds.scad>
|
include <smds.scad>
|
||||||
include <green_terminals.scad>
|
include <green_terminals.scad>
|
||||||
|
include <7_segments.scad>
|
||||||
|
include <potentiometers.scad>
|
||||||
|
|
||||||
//
|
//
|
||||||
// l w t r h l c b h
|
// l w t r h l c b h
|
||||||
|
Reference in New Issue
Block a user