OpenSCAD - Carcasa y teclas Spectrum+ (Impresion 3D)

Si por algo se caracteriza el Spectrum es por su gran variedad de periféricos (clásicos y modernos)

Moderador: Sir Cilve Sinclair

Responder
Z80user
Manic Miner
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha
Contactar:

OpenSCAD - Carcasa y teclas Spectrum+ (Impresion 3D)

Mensaje por Z80user » Dom Oct 18, 2015 9:55 pm

Espero que esto le sirva a mas de uno.
NOTA: se requiere una impresora 3D mas grande que las normales para poder imprimirlo, mide 32cm de ancho y las impresoras normales solo permiten 20 (algunas algo mas)
Un modelo en OpenSCAD que estoy haciendo del Spectrum plus

Teclas:
HECHO: parte superior
TO DO: parte inferior
-. La tecla del Enter... acabo de darme cuenta :(
La tecla del espacio la he creado como las demas aunque originalmente esta invertica respecto al resto

carcasa:
HECHO: parte superior
TO DO:
-. parte inferior
-. Letras Sinclair y ZX Spectrum (
-. Hueco del arcoiris
-. Perfil angulado
-. ranuras de ventilacion posterior
-. Corte de la salida de TV
-. Saliente de la entrada de 9V

NOTA: para crear el modelo se utiliza el OpenSCAD http://www.openscad.org/ para los que no lo hayan utilizado al abrirlo copiaste este codigo en la parte izquierda y lo renderizais pulsando F5, con F6 se genera el modelo para imprimir tarda mas y no es necesario.

NOTA: esto no es necesario pero se puede modificar un poco el codigo para ver mas cosas
En "module Tecla" una parte pinta las "setas" en donde van colocadas las teclas (los circulos azules) y la otra funcion crea las teclas en si, si comentais Tecla2 en dicha linea con // y "translate([-Izquierda,-Bajo, 0]) Carcasa();" al inicio del codigo solo se mostraran las teclas, las teclas anchas tienen su propio modulo para generarlas
$fn=80; sirve para que las teclas sean mas dedondas en el interior un valos mas alto mejora el aspecto pero tarda mas en renderizarse y al imprimir no hay apenas cambios (no mejora la impresion)

Código: Seleccionar todo

alto      =  5;
Normal    = 18;
Break     = 28;
Delete    = 27;
Edit      = 23;
Caps      = 41.5;
Espacio   = 84;
Enter     = 32;
Enter_h   = 37;
Bajo      = 12;
Izquierda = 12;
Gap       = Normal+1;
$fn=80;

translate([-Izquierda,-Bajo, 0]) Carcasa();
translate([         0,    0,12]) Semifila1();
translate([         0,Gap*1,12]) Semifila2();
translate([         0,Gap*2,12]) Semifila3();
translate([         0,Gap*3,12]) Semifila4();
translate([         0,Gap*4,12]) Semifila5();

module Carcasa()
{
    Ancho = 320;
    difference()
    {
        cube([Ancho,150,17], center=false);
    color ("red")
        translate([Izquierda     ,Bajo,12])
            cube([256,18*5+6,6], center=false);
        translate([-50,Bajo+Gap*0,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*1,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*2,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*3,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*4,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*5,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*6,16])
            cube([Ancho*2,1,17], center=false);
        translate([-50,Bajo+Gap*7,16])
            cube([Ancho*2,1,17], center=false);
    }
}

module Semifila1()
{
    offset = Normal*5+Espacio+6;
    translate([           0,0,0])  Tecla();
    translate([       Gap*1,0,0])  Tecla();
    translate([       Gap*2,0,0])  Tecla();
    translate([       Gap*3,0,0])  Tecla();
    translate([       Gap*4,0,0])  Tecla();
    translate([       Gap*5,0,0])  Tecla3(Espacio);
    translate([offset+Gap*0,0,0])  Tecla();
    translate([offset+Gap*1,0,0])  Tecla();
    translate([offset+Gap*2,0,0])  Tecla();
    translate([offset+Gap*3,0,0])  Tecla();
    }
module Semifila2()
{
    offset = Caps+1;
    translate([           0,0,0])  Tecla3(Caps);
    translate([offset+Gap*0,0,0])  Tecla();
    translate([offset+Gap*1,0,0])  Tecla();
    translate([offset+Gap*2,0,0])  Tecla();
    translate([offset+Gap*3,0,0])  Tecla();
    translate([offset+Gap*4,0,0])  Tecla();
    translate([offset+Gap*5,0,0])  Tecla();
    translate([offset+Gap*6,0,0])  Tecla();
    translate([offset+Gap*7,0,0])  Tecla();
    translate([offset+Gap*8,0,0])  Tecla();
    translate([offset+Gap*9,0,0])  Tecla3(Caps);
}
module Semifila3()
{
    offset = Delete+Edit+2;
    translate([           0,0,0])  Tecla3(Delete);
    translate([Delete+1    ,0,0])  Tecla3(Edit);
    translate([offset+Gap*0,0,0])  Tecla();
    translate([offset+Gap*1,0,0])  Tecla();
    translate([offset+Gap*2,0,0])  Tecla();
    translate([offset+Gap*3,0,0])  Tecla();
    translate([offset+Gap*4,0,0])  Tecla();
    translate([offset+Gap*5,0,0])  Tecla();
    translate([offset+Gap*6,0,0])  Tecla();
    translate([offset+Gap*7,0,0])  Tecla();
    translate([offset+Gap*8,0,0])  Tecla();
    translate([offset+Gap*9,0,0])  Tecla(Enter);
}

module Semifila4()
{
    offset = Delete+1;
    translate([           0,0,0])  Tecla3(Delete);
    translate([offset+Gap*0,0,0])  Tecla();
    translate([offset+Gap*1,0,0])  Tecla();
    translate([offset+Gap*2,0,0])  Tecla();
    translate([offset+Gap*3,0,0])  Tecla();
    translate([offset+Gap*4,0,0])  Tecla();
    translate([offset+Gap*5,0,0])  Tecla();
    translate([offset+Gap*6,0,0])  Tecla();
    translate([offset+Gap*7,0,0])  Tecla();
    translate([offset+Gap*8,0,0])  Tecla();
    translate([offset+Gap*9,0,0])  Tecla();
    translate([offset+Gap*10,0,0])  Tecla();
    translate([offset+Gap*11,0,0])  Tecla();
}
module Semifila5()
{
    offset = 0;
    translate([offset+Gap*0,0,0])  Tecla();
    translate([offset+Gap*1,0,0])  Tecla();
    translate([offset+Gap*2,0,0])  Tecla();
    translate([offset+Gap*3,0,0])  Tecla();
    translate([offset+Gap*4,0,0])  Tecla();
    translate([offset+Gap*5,0,0])  Tecla();
    translate([offset+Gap*6,0,0])  Tecla();
    translate([offset+Gap*7,0,0])  Tecla();
    translate([offset+Gap*8,0,0])  Tecla();
    translate([offset+Gap*9,0,0])  Tecla();
    translate([offset+Gap*10,0,0])  Tecla();
    translate([offset+Gap*11,0,0])  Tecla();
    translate([offset+Gap*12,0,0])  Tecla3(Delete);
}


module Tecla(Ancho=Normal, Largo=Normal, altura=5)
{
    color("blue")
    Tecla2(Ancho,Largo,altura);
    Tecla1(Ancho,Largo,altura);
}
module Tecla1(Ancho=Normal, Largo=Normal, altura=5)
{
    translate([0,0,10])
{
    cube([Ancho,Largo,altura], center=false);
    translate([Ancho/2,Largo/2-1,0])
    difference()
    {
        cylinder(r=16/2,h=altura+2, center=false);
        translate([Ancho/2*0,0*Largo/2,42])
            sphere(r=36);
        translate([-Ancho/2,5,4])
            cube([Ancho,Largo,altura], center=false);
    }
}}


module Tecla2(Ancho=Normal, Largo=Normal, altura=5)
{
    translate([Ancho/2,Largo/2,0])
    cylinder(r=13/2,h=altura*2, center=false);
}

module Tecla3(Ancho=Normal, Largo=Normal, altura=5)
{
    translate([0,0,10])
{
    cube([Ancho,Largo,altura], center=false);
    translate([Ancho/2,Largo/2-1,0])
    difference()
    {
        hull()
        {
        translate([-Ancho/2+9,0,0])
            cylinder(r=16/2,h=altura+2, center=false);
        translate([+Ancho/2-9,0,0])
            cylinder(r=16/2,h=altura+2, center=false);
        }
        hull()
        {
        translate([-Ancho/2+9,0,42])
            sphere(r=36);
        translate([+Ancho/2-9,0,42])
            sphere(r=36);
        }
        translate([-Ancho/2,5,4])
            cube([Ancho,Largo,altura], center=false);
        
    }
}}
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: OpenSCAD - Carcasa y teclas Spectrum+ (Impresion 3D)

Mensaje por radastan » Lun Oct 19, 2015 2:13 pm

¿Y ponerle teclas profesionales no es mejor? Digo yo, ya que se imprime, que sea una versión mejorada.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Z80user
Manic Miner
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha
Contactar:

Re: OpenSCAD - Carcasa y teclas Spectrum+ (Impresion 3D)

Mensaje por Z80user » Lun Oct 19, 2015 4:22 pm

Yo era por hacerlo tal cual el original, o lo mas parecido posible.
Supongo que te refieres a los Cherry MX, pero no tengo las especificaciones para hacer los huecos para las teclas (no lo he buscado)

si alguien ha usado el OpenSCAD con los "cylinder" tienes el centro de la tecla aun no he pensado bien en como hacerlas, el resto de parametros, el ancho de cada tecla y su colocacion es como en la del Spectrum... aun me falta crear la tecla ENTER que es algo distinta, bueno se admiten sugerencias al diseño

con $fn=20 las teclas tiene un reborde pero no el trasero con esta configuracion se le podria poner un vinilo o algo para la serigrafia facilmente.

http://articulo.mercadolibre.com.mx/MLM ... il-80g-_JM
aqui hay una tecla y algunas especificaciones, pero al tener tantos huecos refuerzos, endiduras y demas con las medidas no se muy bien como tomarlas

Luego con los pulsadores de circuito impreso como este http://www.dx.com/s/touch%2bbutton%2bsw ... =1#sortBar los hay de varias medidas, 4.3, 7, 8, 9, 10, 12, 15 y 17mm por lo que dependiendo de cual se utiliza habri que cambiar la altura del hueco, por esto no esta diseñada esa parte aun.
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 20 invitados