seg_digit

Esta es una librería que he desarrollado sobre OpenSCAD para agregar a cualquier diseño al que se desee imprimir un rótulo del tipo «Made in» o un número de serie.
La idea básica es la de replicar la geometría de los displays de 7 y 16 segmentos para facilitar la generación de los números y letras.

La librería se compone actualmente de los siguientes módulos:

seg_digit.scad
Módulo base que define los displays de 7 y 16 segmentos
digit7.scad
Funciones de alto nivel para gestión de información numérica

Cada módulo contiene una prueba unitaria que se activa si se abre el módulo directamente con openscad. Pero su uso principal es mediante la inclusión en un diseño propio a través de la directiva use.

Repositorio

La librería puede descargarse del repositorio Git ubicado en http://crossforests.com/git/3dmodels/seg_digit.git como se muestra en el ejemplo siguiente:

$ git clone http://crossforests.com/git/3dmodels/seg_digit.git

Documentación

 

seg_digit.scad

displays de 7 y 16 segmentos
Disposición de segmentos en displays

En electrónica es muy común utilizar displays divididos en 7 segmentos, como los que se muestran a la izquierda de esta imagen  que permiten generar los símbolos numéricos del 0 al 9 así como otros de 16 segmentos que se muestran a la derecha de la imagen y que permitengenerar de una manera simplificada la mayoría de los caracteres ASCII.
Basándose en esta idea, este módulo genera un relieve en 3D con la misma disposición de los segmentos de este tipo de displays. Así, para generar el símbolo correspondiente al número 2 se deberían encender (o en este caso imprimir) los segmentos A, B, G, E y D mientras que, para obtener el símbolo correspondiente a la letra M se deberían encender los segmentos E, F, H, J, B y C.

El módulo seg_digit.scad cuenta con las funciones que se enumeran a continuación para imprimir cada uno de estos segmentos. Cada función contiene 2 parámetros:

size
Este parámetro será un valor entero que representa el alto del display en pixels. Como nota adicional, todos los displays poseen un ancho que es igual a la mitad del alto.
on
Parámetro booleano adicional cuyo valor por defecto es verdadero.
En caso de ser verdadero significa que el segmento será impreso en relieve, mientras que si se especifica un valor falso, el segmento será impreso en bajo relieve (grabado dentro de la pieza donde se imprime).

Funciones

segment_a(size, on=true)
Imprime el segmento superior de un display de 7 segmentos.
segment_b(size, on=true)
Imprime el segmento vertical en la esquina superior derecha para ambos tipos de display.
segment_c(size, on=true)
Imprime el segmento vertical en la esquina inferior derecha para ambos tipos de display.
segment_d(size, on=true)
Imprime el segmento inferior de un display de 7 segmentos.
segment_e(size, on=true)
Imprime el segmento vertical en la esquina inferior izquierda para ambos tipos de display.
segment_f(size, on=true)
Imprime el segmento vertical en la esquina superior izquierda para ambos tipos de display.
segment_g(size, on=true)
Imprime el segmento medio horizontal de un display de 7 segmentos.
segment_a1(size, on=true)
Imprime la mitad izquierda del segmento superior de un display de 16 segmentos.
segment_a2(size, on=true)
Imprime la mitad derecha del segmento superior de un display de 16 segmentos.
segment_d1(size, on=true)
Imprime la mitad izquierda del segmento inferior de un display de 16 segmentos.
segment_d2(size, on=true)
Imprime la mitad derecha del segmento inferior de un display de 16 segmentos.
segment_g1(size, on=true)
Imprime la mitad izquierda del segmento horizontal medio de un display de 16 segmentos.
segment_g2(size, on=true)
Imprime la mitad derecha del segmento horizontal medio de un display de 16 segmentos.
segment_h(size, on=true)
Imprime el segmento diagonal del cuadrante superior izquierdo de un display de 16 segmentos.
segment_i(size, on=true)
Imprime el segmento superior central de un display de 16 segmentos.
segment_j(size, on=true)
Imprime el segmento diagonal del cuadrante superior derecho de un display de 16 segmentos.
segment_k(size, on=true)
Imprime el segmento diagonal del cuadrante inferior derecho de un display de 16 segmentos.
segment_l(size, on=true)
Imprime el segmento inferior central de un display de 16 segmentos.
segment_m(size, on=true)
Imprime el segmento diagonal del cuadrante inferior izquierdo de un display de 16 segmentos.
segment_dp(size, on=true)
Imprime un punto decimal o de fin de línea a continuación del display.
digit_spacing(size)
Función que, recibiendo un valor entero igual a la altura en pixels del display, devuelve un valor igual al espacio que se debe avanzar en horizontal para imprimir un siguiente display de forma agradable a la vista.

digit7.scad

Este módulo utiliza se basa seg_digit.scad para incluir una serie de funciones de conveniencia para imprimir valores numéricos utilizando displays de 7 segmentos. La imagen al comienzo de esta página es la salida del test unitario de este módulo.

Funciones

digit7_str(s, h, on)
Imprime un valor hexadecimal especificado en una cadena de caracteres.
Parámetros:

s
Cadena compuesta exclusivamente por una secuencia de los caracteres ‘0’..’9′, ‘A’..’F’, ‘a’..’f’ a ser grabada en la pieza.
h
Altura de los displays a imprimir
on
Parámetro booleano que de ser verdadero significa que el segmento será impreso en relieve, mientras que si se especifica un valor falso, el segmento será impreso en bajo relieve.
digit7_int(h, v, on)
Imprime un valor entero como un conjunto de displays de 7 segmentos.
Parámetros:

v
Valor entero a ser grabada en la pieza.
h
Altura de los displays a imprimir
on
Parámetro booleano que de ser verdadero significa que el segmento será impreso en relieve, mientras que si se especifica un valor falso, el segmento será impreso en bajo relieve.
digit7_float(h, v, on)
Imprime un valor en coma flotante como un conjunto de displays de 7 segmentos.
Parámetros:

v
Valor en coma flotante a ser grabada en la pieza.
h
Altura de los displays a imprimir
on
Parámetro booleano que de ser verdadero significa que el segmento será impreso en relieve, mientras que si se especifica un valor falso, el segmento será impreso en bajo relieve.
José Administrator
Sorry! The Author has not filled his profile.
follow me