mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-08-01 21:20:11 +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>
|
||||
</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>
|
||||
## 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/axials.scad>
|
||||
include <../vitamins/smds.scad>
|
||||
include <../vitamins/7_segments.scad>
|
||||
include <../vitamins/potentiometers.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
|
||||
3, // Corner radius
|
||||
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, 240, 0, "potentiometer"],
|
||||
[ 75, 240, 0, "potentiometer", 7, 8],
|
||||
[ 30, 85, -90, "7seg", WT5011BSR, 2],
|
||||
],
|
||||
// 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 <smds.scad>
|
||||
include <green_terminals.scad>
|
||||
include <7_segments.scad>
|
||||
include <potentiometers.scad>
|
||||
|
||||
//
|
||||
// l w t r h l c b h
|
||||
|
Reference in New Issue
Block a user