Hacking el Spy Video Trakr con maldita ' rayos láser... Y misiles! (9 / 9 paso)

Paso 9:

Los elementos principales de la aplicación son:
-Exploración de las teclas del control remoto
-Encendiendo y apagando GPIOs
-Entrada lectura de GPIOs
-Visualización de gráficos de la pantalla que representan los Estados claves

Esta aplicación funcionará bien sin el hardware conectado, para que puedas ver la pantalla las respuestas. Ten en cuenta, que sin la tarjeta de circuitos conectada, GPC7 flota en algún lugar entre 0v y 2.5v, y obtendrá un mensaje de ocasionales "de misiles"

Código de lenguaje C de Trakr lanzamisiles:

/ * Esta aplicación fue escrita y probada con el lanzador de misil de espuma 'Striker II'.
Esta Torreta lanza tres misiles de espuma y tiene un láser apuntado.

Tablero original del interfaz del USB de la torreta se sustituye por un conductor del tablero que
conectado a líneas GPIO de Trakr.  Esta aplicación debería funcionar con cualquier
similar escritorio lanzamisiles.
GPC0 = inclinación hacia arriba
GPC1 = inclinación hacia abajo
GPC2 = pan izquierda
GPC3 = pan derecha
GPC4 = fuego láser
GPC5 = misil de fuego
GPC6 = misil (una leva en el mecanismo de disparo activa un microinterruptor después
cada misil es disparado.  Esto evita que el software que se hace referencia a la posición de
el hardware del lanzamiento
GPC7 = reload (fuera de la munición)

El botón GO sirve de tecla de 'shift la función' (gracias por la idea, RorschachUK!).
Cuando se mantiene el botón ir, funciones de las teclas del control remoto se cambian de puesto a 'control de misiles' como sigue:
Lforward = inclinación hacia arriba
Lback = inclinación hacia abajo
Rforward = bandeja izquierda
RVolver = pan derecha
B (entrada2) = fuego láser
C (menú) = misil de fuego

Tenga en cuenta que todas las funciones de control de misiles son momentáneas, excepto 'misil de fuego',
que inicia una secuencia completa para disparar un solo misil.

Agradecimiento especial a RorschachUK para explicar las rutinas de manipulación de mapa de bits.
Terminé usando mapas de bits exclusivamente, pero los comandos de DrawText para la izquierda
efectos de demostración

Esta aplicación también podría modificarse fácilmente para controlar un brazo robot * /

#include "svt.h"
#include "JAPI.h"

#define GPC0 (1 << 0) //bitmask PIN GPC0 = 00000001
#define GPC1 (1 << 1) //bitmask PIN GPC1 = 00000010
#define GPC2 (1 << 2) //bitmask PIN GPC2 = 00000100
#define GPC3 (1 << 3) //bitmask PIN GPC3 = 00001000
#define GPC4 (1 << 4) //bitmask PIN GPC4 = 00010000
#define GPC5 (1 << 5) //bitmask PIN GPC5 = 00100000
#define GPC6 (1 << 6) //bitmask PIN GPC6 = 01000000
#define GPC7 (1 << 7) //bitmask PIN GPC7 = 10000000

/ * Los nombres de estas variables son generados por el compilador y se basan en
el nombre del archivo de la imagen se compila.  Se utilizan para calcular la longitud
de las imágenes .bmp son convertidos a datos matrices * /
extern char _binary_Images_bkgndimg_bmp_end [];
extern char _binary_Images_bkgndimg_bmp_start [];
extern char _binary_Images_up_bmp_end [];
extern char _binary_Images_up_bmp_start [];
extern char _binary_Images_down_bmp_end [];
extern char _binary_Images_down_bmp_start [];
extern char _binary_Images_left_bmp_end [];
extern char _binary_Images_left_bmp_start [];
extern char _binary_Images_right_bmp_end [];
extern char _binary_Images_right_bmp_start [];
extern char _binary_Images_firemissile_bmp_end [];
extern char _binary_Images_firemissile_bmp_start [];
extern char _binary_Images_firelaser_bmp_end [];
extern char _binary_Images_firelaser_bmp_start [];
extern char _binary_Images_missile_bmp_end [];
extern char _binary_Images_missile_bmp_start [];
extern char _binary_Images_fins_bmp_end [];
extern char _binary_Images_fins_bmp_start [];
extern char _binary_Images_on_bmp_end [];
extern char _binary_Images_on_bmp_start [];
extern char _binary_Images_standby_bmp_end [];
extern char _binary_Images_standby_bmp_start [];

pernos de unsigned char;  definir la variable 'pins' para leer entradas GPIO

Color blanco, verde, rojo, azul, negro, gris, amarillo; colores a utilizar para el texto;

maneja el registro de imagen
int bkgndimg;
int
int
int izquierda;
int derecha;
int firemissile;
int firelaser;
misil del int;
aletas int;
int a;
int espera;

bool bgstate;  variable de estado de repintado de fondo

RGBColor - devuelve una estructura de color
Color {RGBColor (unsigned char R G de unsigned char, unsigned char B, unsigned char T)
Color ret;
Ret. R = R;
Ret. G = G;
Ret. B = B;
Ret. Transparente = T;
Return ret;
}

anular //defines Splash() una rutina de pantalla splash
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
SetTextColor(white);
DrawText (1, 30, "Misil Control v1.3");
SetTextColor(yellow);
DrawText (15, 60, "por CPT_Hans");
Show();
Sleep(3000);
ClearScreen();
SetTextColor(green);
DrawText (20,15, "Pulse y mantenga pulsado");
DrawText (20.30, "la clave de ir a");
DrawText (20,45, "activar misiles");
DrawText(20,60,"controls");
Show();
Sleep(3000);
ClearScreen();
SetTextColor(green);
DrawText (35,15, "joystick L =");
DrawText(35,30,"up/down");
DrawText (35,55, "joystick R =");
DrawText(35,70,"left/right");
Show();
Sleep(4000);
ClearScreen();
SetTextColor(green);
DrawText (35,15, "clave de B =");
DrawText (35,30, laser del fuego del"");
DrawText (35,55, "tecla C =");
DrawText (35,70, misil de fuego del"");
Show();
Sleep(3000);
}

void Start()
{
JAPI_SetIoOutputMode(GPC0+GPC1+GPC2+GPC3+GPC4+GPC5); Establece modo de salida para pernos de GPC0 a través del GPC5

JAPI_SetIoInputMode(GPC6+GPC7); Modo de ajuste de única entrado para clavijas GPC6 y GPC7

bgstate = 1; establecido para dibujar fondo inicial

Registro de las imágenes - toma una dirección de inicio y un tamaño, que se calcula teniendo en cuenta el extremo dirección menos la dirección de inicio
OpenImageRegister();
bkgndimg = RegisterImage (_binary_Images_bkgndimg_bmp_start, _binary_Images_bkgndimg_bmp_end - _binary_Images_bkgndimg_bmp_start);
arriba = RegisterImage (_binary_Images_up_bmp_start, _binary_Images_up_bmp_end - _binary_Images_up_bmp_start);
abajo = RegisterImage (_binary_Images_down_bmp_start, _binary_Images_down_bmp_end - _binary_Images_down_bmp_start);
izquierda = RegisterImage (_binary_Images_left_bmp_start, _binary_Images_left_bmp_end - _binary_Images_left_bmp_start);
derecha = RegisterImage (_binary_Images_right_bmp_start, _binary_Images_right_bmp_end - _binary_Images_right_bmp_start);
firemissile = RegisterImage (_binary_Images_firemissile_bmp_start, _binary_Images_firemissile_bmp_end - _binary_Images_firemissile_bmp_start);
firelaser = RegisterImage (_binary_Images_firelaser_bmp_start, _binary_Images_firelaser_bmp_end - _binary_Images_firelaser_bmp_start);
misiles = RegisterImage (_binary_Images_missile_bmp_start, _binary_Images_missile_bmp_end - _binary_Images_missile_bmp_start);
las aletas = RegisterImage (_binary_Images_fins_bmp_start, _binary_Images_fins_bmp_end - _binary_Images_fins_bmp_start);
on = RegisterImage (_binary_Images_on_bmp_start, _binary_Images_on_bmp_end - _binary_Images_on_bmp_start);
espera = RegisterImage (_binary_Images_standby_bmp_start, _binary_Images_standby_bmp_end - _binary_Images_standby_bmp_start);
CloseImageRegister();

Definir colores para texto en pantalla
White=RGBColor(255,255,255,0);
Green=RGBColor(0,255,0,0);
red=RGBColor(255,0,0,0);
Blue=RGBColor(0,0,255,0);
Black=RGBColor(0,0,0,0);
Grey=RGBColor(128,128,128,0);
Yellow=RGBColor(255,255,0,0);

Llamada pantalla de bienvenida en el arranque inicial
Splash();
Dormir (2000);
ClearScreen();
Show();
CloseGraphics(); control de Release de pantalla
}

bool Run()
/ * El arreglo de anidado if/else bucles abajo puede parecer extraño, pero
asegura la correcta secuencia operacional del hardware asociado.
Cambios en esta estructura pueden ser necesarios al usar hardware diferente. */
{
Si (GetRemoteKeyStatus (KEY_HOME)) //Check programa salida
devuelven el valor false;
Analizar el estado de la tecla GO para entrar subloop de control de misiles
Si (GetRemoteKeyStatus(KEY_RUN)==1)
{
bgstate = 1; establecido para volver a dibujar la pantalla de fondo al salir del bucle
OpenMotors(); Esto mantiene los motores todavía mientras que pan y tilt del lanzador de misiles
OpenGraphics(); Tomar el control de pantalla
ClearScreen(); Borrar pantalla
SetTextColor(red);
DrawText (20, 20, "misiles CTL en"); Notifique que han cambiado las funciones de botón del control remoto
DrawImage(bkgndimg,0,0,black); Dibujar imagen de bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(on,30,20,black);
Show();
CloseGraphics(); control de Release de pantalla
pernos = JAPI_GetIoInput(); representación bit a bit de los 8 terminales
Si (pins & GPC6)
{
JAPI_SetIoLow(GPC5);
}
Si (pins & GPC7)
{
OpenGraphics(); Tomar el control de pantalla
DrawImage(bkgndimg,0,0,black); Dibujar imagen de bkgndimg
SetTextColor(blue);
DrawText (20,80 "De misiles!");
Show();
CloseGraphics(); control de Release de pantalla
}
Si (GetRemoteKeyStatus(KEY_INPUT2)) //Fire láser de secuencia de comandos
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(firelaser,110,85,black); Sorteo láser splash
DrawImage(on,30,20,black);
SetTextColor(red);
DrawText (5, 20, "Disparo láser!");
Show();
CloseGraphics(); control de Release de pantalla
JAPI_SetIoHigh(GPC4);   Configurar pin de GPC4 alta (3,3 v)
}
otra cosa
{
JAPI_SetIoLow(GPC4);   Configurar pin de GPC4 bajo (0v)
}
Si (GetRemoteKeyStatus(KEY_LEFT_FORWARD)) //Elevate torreta comando secuencia
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(up,75,70,black); Elaboración de flecha
DrawImage(on,30,20,black);
SetTextColor(white);
DrawText (5, 35, "Misiles de elevar");
Show();
CloseGraphics(); control de Release de pantalla
JAPI_SetIoHigh(GPC0);   Configurar pin de GPC0 alta (3,3 v)
}
otra cosa
{
JAPI_SetIoLow(GPC0);   Configurar pin de GPC0 bajo (0v)
}
Si (GetRemoteKeyStatus(KEY_LEFT_BACK)) //Depress torreta comando secuencia
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(down,75,100,black); Llamar la flecha hacia abajo
DrawImage(on,30,20,black);
SetTextColor(white);
DrawText (5, 35, "Reducción de misiles");
Show();
CloseGraphics(); Tomar el control de pantalla
JAPI_SetIoHigh(GPC1);   Configurar pin de GPC1 alta (3,3 v)
}
otra cosa
{
JAPI_SetIoLow(GPC1);   Configurar pin de GPC1 bajo (0v)
}
Si (GetRemoteKeyStatus(KEY_RIGHT_FORWARD)) //Traverse torreta izquierda secuencia de comandos
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(left,60,85,black); Dibujar la flecha izquierda
DrawImage(on,30,20,black);
SetTextColor(white);
DrawText (5, 50, "Rotación izquierda");
Show();
CloseGraphics(); control de Release de pantalla
JAPI_SetIoHigh(GPC2);   Configurar pin GPC2 alta (3,3 v)
}
otra cosa
{
JAPI_SetIoLow(GPC2);   Configurar pin GPC2 bajo (0v)
}
Si (GetRemoteKeyStatus(KEY_RIGHT_BACK)) //Traverse torreta derecha de secuencia de comandos
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(right,90,85,black); Dibujar la flecha derecha
DrawImage(on,30,20,black);
SetTextColor(white);
DrawText (5, 50, "Girar derecha");
Show();
CloseGraphics(); control de Release de pantalla
JAPI_SetIoHigh(GPC3);   Configurar pin de GPC3 alta (3,3 v)
}
otra cosa
{
JAPI_SetIoLow(GPC3);   Configurar pin de GPC3 bajo (0v)
}
Si (GetRemoteKeyStatus(KEY_MENU)) //Missile secuencia de la leña
{
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
DrawImage(bkgndimg,0,0,black); Sorteo bkgndimg
DrawImage(missile,70,80,black); Dibujar cuerpo de misil blanco
DrawImage(fins,72,89,black); Dibujar las aletas rojas
DrawImage(firemissile,60,96,black); Sorteo misil escape
DrawImage(on,30,20,black);
SetTextColor(red);
DrawText (5, 65, "Disparar misiles!");
Show();
CloseGraphics(); control de Release de pantalla
JAPI_SetIoHigh(GPC5);   Configurar pin GPC5 alta (3,3 v)

/ * Es necesario hacer una pausa aquí, dejar que el árbol de levas del lanzador
Gire el microinterruptor; una limitación mecánica
del hardware * /
Sleep(1500);
}
}
otra cosa
{
pernos = JAPI_GetIoInput(); representación bit a bit de los 8 terminales
Si (pins & GPC6) //Check para puesto de camsshaft
{
JAPI_SetIoLow(GPC5);  Desactivar señal de motor de misil de fuego
}
Si (bgstate == 1) //check para ver si es necesaria la renegociación de fondo
{
CloseMotors();
OpenGraphics(); Tomar el control de pantalla
ClearScreen();
SetTextColor(green);
DrawText (20, 20, "misiles CTL apagado"); Notificar que las funciones de los botones del control remoto son normales
DrawImage(bkgndimg,0,0,black); Dibujar imagen de bkgndimg
DrawImage(standby,25,20,black);
Show();
CloseGraphics(); control de Release de pantalla
bgstate = 0; restablecer la bandera para que el fondo no es necesario volver a dibujar
}
}
{
Sleep(200); / / esperar a 200ms
}
verdaderas;
}

End() vacío
{
CloseMotors()
CloseGraphics()
}

Aquí están algunos recursos adicionales que puede encontrar útiles cuando el Spy Video Trakr de hacking:

Spy Video Trakr Wiki

http://www.trakrhakr.com/wiki/index.php?title=Main_Page

Foros oficiales de Spy Video Trakr:

http://www.spygear.net/Forum/viewforum.php?f=18

Diversión con circuitos rápidos Hacks:

http://funwithsnapcircuits.wordpress.com/2011/03/17/and-Now-for-Something-Completely-different/

Tigre desobediente hacks:

http://disobedienttiger.blogspot.com/search/label/Spy%20Trakr

Hack un Hack de primer día:

http://HackADay.com/2010/09/02/Spy-video-trakr-Software-and-First-hack/

REFERENCIA DE LA FCC (ESQUEMAS, CUADROS EXTERNOS, CUADROS INTERNOS):

Referencia de la FCC para Trakr remoto:

HTTPS://FJALLFOSS.FCC.GOV/OETCF/EAS/REPORTS/VIEWEXHIBITREPORT.CFM?MODE=EXHIBITS&REQUESTTIMEOUT=500&CALLEDFROMFRAME=N&APPLICATION_ID=545152&FCC_ID= 'N3ESPYVIDEOTRAKR1'

Referencia de la FCC para Trakr:

HTTPS://FJALLFOSS.FCC.GOV/OETCF/EAS/REPORTS/VIEWEXHIBITREPORT.CFM?MODE=EXHIBITS&REQUESTTIMEOUT=500&CALLEDFROMFRAME=N&APPLICATION_ID=884190&FCC_ID= 'N3ESPYVIDEOTRAKR2'

OTRO MATERIAL DE REFERENCIA:

Guía de diseño de W55VA91:

http://docs.Google.com/Viewer?URL=http%3A%2F%2Fdl.Dropbox.com%2Fu%2F4295670%2FW55VA91_DesignGuide%2528fullset%2529%2520-%2520A4.pdf

nRF24L01 (viruta del transmisor-receptor de Radio):

http://www.nordicsemi.com/eng/products/2.4GHz-RF/nRF24L01

Manual de referencia técnica de ARM926EJ-S:

http://Infocenter.ARM.com/help/index.jsp?topic=/com.ARM.doc.ddi0198e/index.html

W9864G6IH 8 MB SDRAM:

http://www.Winbond.com/HQ/ENU/ProductAndSales/ProductLines/SpecialtyDRAM/SDRAM/W9864G6IH.htm

ESPECIFICACIONES DE HARDWARE:

Dos procesadores ARM 9 (Nuvoton W55VA91: base ARM926EJ ejecuta @ 192 MHz y asistida por hardware JPEG codec)
8 MB de RAM a bordo – para aplicaciones sofisticadas, memoria-intensiva, generado por el usuario (programado en C).
Ranura para tarjeta SD, almacenamiento extraíble de alta capacidad de programa, video, audio e imagen.
Acceso puerto host USB, para conexión de dispositivos USB.
Puerto de dispositivo USB-para conectar a un ordenador y comunicación.
Cámara VGA de visión Omni – potencial velocidad de 30 fotogramas por segundo (el TRAKR es configurada para fps 15). (Permite programación para procesamiento de imágenes en tiempo real.)
Nordic 2.4 GHz radio – para la comunicación inalámbrica de baja potencia.
Dual, de alto corriente (2A) H-puentes con los sensores de corriente – permite control avanzado de motor.
QVGA pantalla y altavoz mando a distancia con 5 botones y palancas de 2 mando – potencial para ser reasignados para diferentes tareas.
Bloque de audio con sintetizador polifónico – incluye soporte para síntesis de voz.
Operación sistema: Lunix OS
IR LED se ilumina por la conmutación de un transistor SS8050.
SPI/FLASH/USB de arranque

BORDE DE SANGRÍA TRAKR HACKING:

http://www.trakrhakr.com/wiki/index.php?title=bootstrapping

http://www.trakrhakr.com/wiki/index.php?title=I2C_library

Artículos Relacionados

Hacking el Spy Video Trakr II

Hacking el Spy Video Trakr II

en el Instructable anterior, "Hacking the Spy Video Trakr" ( aprendió a abrir el Trakr e instalar masculinos encabezados en las conexiones de GPIO en el circuito. También aprendió a escribir, compilar e instalar un programa corto en el Trakr a p
Hacking el Spy Video Trakr III: hacer un Bot Grabber de Legos, circuitos de Snap y el Spy Video Trakr

Hacking el Spy Video Trakr III: hacer un Bot Grabber de Legos, circuitos de Snap y el Spy Video Trakr

en este instructable demostrará cómo utilizar Legos, los circuitos de Snap y el Spy Video Trakr para crear un bot de capturador control remoto. Mostrará cómo descargar e instalar el compilador de lenguaje C para el Trakr. A continuación voy a explica
Hacking el Spy Video Trakr

Hacking el Spy Video Trakr

el Trakr es un robot control remoto equipado con una cámara de video color y micrófono, speaker, un cerca LED de infrarrojos para visión nocturna, una ranura para tarjeta memoria SD para grabación de audio y vídeo y 8MB de a bordo de memoria para alm
Hackear tus circuitos rápidos con maldita ' rayos láser! Construir un Tripwire láser y alarma

Hackear tus circuitos rápidos con maldita ' rayos láser! Construir un Tripwire láser y alarma

aprender a construir un tripwire láser y alarma de presión circuitos. Se construirán dos circuitos: el circuito de tripwire láser y el circuito de alarma. La alarma es un oscilador muy simple de dos transistores que se conecta el relé en el circuito
Spy Video Trakr: Añadir un accesorio de garra de Lego

Spy Video Trakr: Añadir un accesorio de garra de Lego

en honor de la semana nacional de robótica y el reto de Robot de Instructables presento unos diseños de robot. Este diseño (para las edades 13-18) aprovecha Spy Video Trakr de Wild Planet, que es fácilmente programable y diseñado por sus desarrollado
Spy Video Trakr: Añadir un lanzador de misiles

Spy Video Trakr: Añadir un lanzador de misiles

en honor de la semana nacional de robótica y el reto de Robot de Instructables presento unos diseños de robot. Este diseño (para las edades 13-18) aprovecha Spy Video Trakr de Wild Planet, que es fácilmente programable y diseñado por sus desarrollado
Tiburones con maldita ' Laser vigas atado a la cabeza!

Tiburones con maldita ' Laser vigas atado a la cabeza!

"Sabes, tengo una petición simple. Y es que los tiburones con maldita ' laser vigas atados a la cabeza! " -Dr. EvilTodos amamos a ese impresionante villano Mike Meyers. Sus posiciones de las manos pegajosas, el juego fresco. gato sin pelo... (ne
Google Earth Spy Video efecto cómo Tutorial

Google Earth Spy Video efecto cómo Tutorial

Google Earth Spy Video efecto cómo Tutorial - los mejores bloopers son un clic de distancia , este video está diseñado para demostrar cómo hacer un espía satélite falso video con Google Earth. no desnudos fueron perjudicados en la realización de este
BRICOLAJE casero Spy cámara con infrarrojos LED CCTV Webcam

BRICOLAJE casero Spy cámara con infrarrojos LED CCTV Webcam

BRICOLAJE casero Spy cámara con CCTV cámara web y visor en Color negro blanco tomar de viejo Handcam Sony de cámaras, papel, batería 18650, vieja Webcam infrarroja LED CCTV y fin de semana algunas veces...
Trabajo ligero Kinetic con módulos láser servo-controlado

Trabajo ligero Kinetic con módulos láser servo-controlado

Describe cómo construí el Ventilador de láser, una obra de arte cinética interactiva mediante servos y láseres. Esta fue mi primera pieza terminada mi residencia muelle 9 y estoy muy contento con cómo resultó! Los elementos activos del Ventilador lás
Enviar música a través de un rayo láser

Enviar música a través de un rayo láser

ADVERTENCIA: este proyecto consiste en el uso y modificación de dispositivos láser. Mientras que los láseres que sugerir el uso de (indicadores de rojo comprados) son relativamente seguros manejar, nunca mirar directamente en un rayo láser, cuidado d
Hacer un tambor de registro con un cortador láser

Hacer un tambor de registro con un cortador láser

Un tambor de registro consiste en una caja resonante con una llamativa superficie con dos fichas diferentes de tamaño. Las dos lengüetas producen dos notas diferentes cuando se golpea. Este tambor de registro fue diseñado como un conjunto de placas q
SOPORTE de acrílico COOKBOOK - ahora con más láseres

SOPORTE de acrílico COOKBOOK - ahora con más láseres

en este instructable, te voy a mostrar cómo hice un bonito stand Cookbook acrílico usando un cortador láser y una dobladora de tira calor.Cuando haya terminado, usted tendrá un accesorio de cocina atractiva, de aspecto moderno que puede contener un l
Crear tablas de Cribbage 3D personalizado con un cortador láser!

Crear tablas de Cribbage 3D personalizado con un cortador láser!

Hey hay gente!Hoy voy a probar y le mostrará cómo hacer un tablero de cribbage usando un cortador láser!En le punto menos en la dirección correcta para empezar.* Sólo recientemente comenzó a fabricar tablas de cribbage para amigos y familiares este a