Banco del banco! ¿Cómo construir una torreta láser con un arduino

Vídeo: Arduino: Puntero laser (KY-008 37in1 kit) | TechKrowd

¿Estas aburrido? Bien podría construir una torreta láser. Ya sabes - que va banco del banco, dispara un rayo rojo en un montón de diferentes direcciones, y tal vez incluso tirar en una máquina de humo? Sí, uno de ellos.

Que necesitarás

  • Arduino
  • 2 servos
  • módulo de láser, tal como uno de este kit sensor
  • zumbador piezoeléctrico u otro dispositivo de salida pequeña
  • ataduras de alambre de metal y cables para la fijación
  • cables de ayuda regulares cables de ayuda de sexo masculino, además, largo femenino-gt

Opcionalmente, se necesita una máquina de humo - el láser es bastante baja potencia, por lo que no será capaz de ver la viga sin humo, incluso en una habitación oscura.

componentes

construir plan

La idea básica de la torreta es poner el módulo de láser en la parte superior de un servo para proporcionar rotación- horizontal luego montar ese paquete a otro servo colocada en un ángulo de 90 grados para proporcionar el movimiento vertical. Tenemos un piezoeléctrico para proporcionar la banco del banco Efectos de sonido, y yo estoy tirando en una máquina de humo para una buena medida.

Las pruebas servo

Dependiendo de su servo, los cables pueden ser de color diferente, pero en general:

  • El rojo es el cable positivo, y en mis dos servos que era el centro de tres - para ser conectada al ferrocarril + 5v.
  • Marrón o negro es el negativo, para ser conectado a GND en el Arduino.
  • Blanco o naranja es el cable de señal, para ser conectado a un pin PWM capaz digitales I / O (9 y 10 en la demostración a continuación).

Una vez que haya cableado sus dos servos, subir el siguiente código de ejemplo. He nombrado un servo “hori” para controlar el movimiento horizontal, y el otro “vert”. Cada uno debe realizar una gama completa de movimiento de barrido (unos 60 grados, en mi caso).

#incluir vert servo,Hori- // crear objeto servo para controlar un servo// un máximo de ocho objetos servo se puede crear int POS = 0- // variable para almacenar la posición del servovacío preparar(){Hori.adjuntar(9)-vert.adjuntar(10)- // concede el servo en el pin 9,10 a los objetos servovert.escribir(0)-Hori.escribir(0)-}vacío lazo(){para(POS = 0- POS lt; 180- POS += 10) // va de 0 grados a 180 grados { // en pasos de 10 grados vert.escribir(POS)-Hori.escribir(POS)- // indicar servo para ir a la posición en `POS` variable retrasar(100)- // espera 100ms para el servo para alcanzar la posición }para(POS = 180- POSgt; =1- POS-=10) // se remonta desde 180 grados a 0 grados{vert.escribir(POS)- // indicar servo para ir a la posición en `POS` variableHori.escribir(POS)-retrasar(100)- // espera 100ms para el servo para alcanzar la posición}}

¿Todo bien? Pasar a continuación.

Probando el láser y banco del banco Sonar

El módulo láser es como un LED, pero tiene una resistencia integrada en el módulo para que podamos conectarlo directamente a una E / S digital - muy simple. Si está utilizando el mismo módulo láser como yo, el “-" va a GND, el S va al pin 12. Modificar el código de ejemplo de arriba para hacer pasador 12 una salida:

int láser = 12-pinMode(láser,SALIDA)-

Entonces parpadeará el pasador de encendido y apagado de cada una mediante estándar bucle digitalWrite () método.

Sólo usaremos PWM para conducir el zumbador piezo a un nivel de sonido cómodo - usted podría experimentar con el uso de la biblioteca de tono si quería, pero un ruido simple es todo lo que necesito. Conectar el cable negro a tierra y el cable rojo al pin 11. definir su zumbador en el pin correspondiente, establecido en el modo de salida, y active el uso analogWrite (zumbador, 100) (O cualquier número que desee hasta 254) - y analogWrite (zumbador, 0) apagar.

El código de ejemplo completo modificado para barrer dos servo, activar un láser, y reproducir el sonido molesto, se puede encontrar aquí.

Todos los componentes deben estar trabajando - ahora hay que mantenerlo todo junto.

La creación de la Torre

El uso de las ataduras de cables, conectar un servo al otro: en realidad no importa qué, basta con que uno se mueva en el eje horizontal y el otro se moverá la vertical. Puede salirse de la pala del rotor y re-asiento durante las pruebas si el ángulo no es correcto.

servos

Use un poco de alambre tieso modelado para fijar el módulo de láser a la pala del otro servo, así:

Vídeo: Medidor de distancias por ultrasonido y puntero laser

alambre-para-laser-módulo

Por último, les adjunto todo el asunto a una pata del escritorio con aún más los lazos de cable-y un poco de madera de desecho.

attach-torreta-a-tabla

Programación de la torreta

No sé ustedes, pero mi idea de una torreta láser proviene de un número incontable de películas de ciencia ficción y los episodios de Star Trek. Invariablemente, alguien va a volar más allá de una torreta y poca banco-banco disparos vendrán volando en un patrón de barrido, siempre milisegundos demasiado lento por lo que nuestro protagonista en realidad no recibe un golpe. Eso es lo que estoy tratando de replicar, aunque no dude en modificar la rutina principal para adaptarse a su idea de lo que debe hacer una torreta.

Vídeo: Torreta Artesanal

Aquí está el código de pseudo Terminé usando para el bucle principal:

  • Selección aleatoria de tiempo entre ráfagas, y el tiempo entre cada toma individual.
  • Selección aleatoria de la posición de inicio y finalización de cada servo, vert y Hori.
  • Aleatorizar el número de disparos a tomar.
  • Calcula el número de grados de cambio después de cada disparo como la diferencia entre las posiciones de inicio y final dividido por el número de disparos.
  • Mover los servos a las posiciones de partida y esperar un poco para que consigan allí (100ms)
  • Bucle hasta que se han tomado todas las tomas, cada vez que mover los servos un poco como anteriormente calculated- mover y disparar, mover y disparar.
  • Repetir.

También he añadido un separada fuego() método para estructurar el código un poco mejor. Ajuste los rangos de todos aleatorio() funciones para acelerar o ralentizar cada PARAMETRIZACIÓN o aumentar el número de disparos de un club de baile ambiente más. Desplazarse hacia abajo para ver un video del código en acción!

#incluir vert servo,Hori- // crear objeto servo para controlar un servoint POS = 0- // variable para almacenar la posición del servoint láser = 12-int zumbador = 11-vacío preparar(){Hori.adjuntar(9)-vert.adjuntar(10)- // une el servo en el pin 9 al objeto servopinMode(láser,SALIDA)-pinMode(zumbador,SALIDA)-}vacío lazo(){int timeBetweenBursts = aleatorio(200,1000)-int timeBetweenShots = aleatorio(50,200)-int vertStart = aleatorio(1,180)-int vertEnd = aleatorio(1,180)-int horiStart = aleatorio(1,180)-int horiEnd = aleatorio(1,180)-int numShots = aleatorio(5,20)-int vertChange = (vertEnd - vertStart) / numShots- // la cantidad a mover el eje vertical por cada disparoint horiChange = (horiEnd - horiStart) / numShots-vert.escribir(vertStart)-// permitan que se quede a la posición inicial en primer lugar, esperar un pocoHori.escribir(horiStart)-retrasar(100)-para(int Disparo = 0- Disparolt;numShots- Disparo++){vert.escribir(vertStart)-Hori.escribir(horiStart)-vertStart += vertChange-// incrementar el valor vert para la próxima vezhoriStart += horiChange-fuego()-retrasar(timeBetweenShots)- // añadir un poco de variedad a la velocidad de disparos}retrasar(timeBetweenBursts)-}vacío fuego(){digitalWrite(láser,ALTO)-analogWrite(zumbador,100)-retrasar(20)-// ajustar esto para cambiar la longitud de tiro de la torretadigitalWrite(láser,BAJO)-analogWrite(zumbador, 0)-}

En acción

Creo que no hay un uso práctico para este pequeño juguete, pero es un montón de diversión y hay una gran cantidad de variables que se pueden manipular para obtener el efecto deseado. Tal vez va a venir muy bien para una película de LEGO hecho en casa?

Artículos Relacionados