Pan pan! Comment construire une tourelle laser avec un arduino

Vous ennuyez-vous? Pourrait aussi bien construire une tourelle laser. Vous savez - celui qui va pan Pan, tire un faisceau rouge dans beaucoup de directions différentes, et peut-être même jeter dans une machine à fumée? Oui, l`un d`eux.

Ce dont tu auras besoin

  • Arduino
  • 2 servos
  • Module laser, tels que celui de ce kit de capteur (Disclaimer:. Qui est ma boutique Vous pouvez aussi apprendre comment construire votre propre boutique en ligne avec notre dernier guide gratuit)
  • buzzer Piezo ou tout autre petit appareil de sortie
  • liens de fil de métal et de câble pour la fixation
  • Longue Female-> câbles de saut mâles, plus les câbles réguliers de saut

En option, une machine à fumée est nécessaire - le laser est assez faible puissance, de sorte que vous ne serez pas en mesure de voir le faisceau sans fumée, même dans une pièce sombre.

Composants

Construire plan

L`idée de base de la tourelle est de mettre le module laser au-dessus d`un servo pour fournir rotation- horizontal puis monter ce package sur un autre servo placé à un angle de 90 degrés pour assurer un mouvement vertical. Nous avons un piezo pour fournir la pan Pan effets sonores, et je jette dans une machine à fumée pour faire bonne mesure.

Test Servo

En fonction de votre servo, les fils peuvent être colorés différemment, mais en général:

  • Le rouge est le fil positif, et sur mes deux servos, il était le centre de trois - pour être connecté à + 5v rail.
  • Brown ou noir est le négatif, pour être connecté à GND sur le Arduino.
  • Blanc ou orange est le fil de signalisation, pour être relié à une broche PWM numérique capable d`E / S (9 et 10 dans la démonstration ci-dessous).

Une fois que vous avez câblé vos deux servos, télécharger le code d`exemple suivant. J`ai nommé un servo "hori" pour contrôler le mouvement horizontal, et l`autre "vert". Chacun doit effectuer une gamme complète de balayage de mouvement (environ 60 degrés, dans mon cas).

#comprendre Servo vert, hori- // créer l`objet d`asservissement pour contrôler un servo // un maximum de huit objets d`asservissement peut être createdint pos = 0 - // variable pour stocker la configuration servo positionvoid () {hori.attach (9) -Vert. joindre (10) - // attache le servo sur la broche 9,10 à objectsvert.write servo (0) -hori.write (0) -} void loop () {for (pos = 0- pos < 180- pos += 10) // goes from 0 degrees to 180 degrees{ // in steps of 10 degreesvert.write(pos)-hori.write(pos)-// tell servo to go to position in variable `pos`delay(100)- // waits 100ms for the servo to reach the position}for(pos = 180- pos>= 1- pos- = 10) // remonte de 180 degrés à 0 degrés {vert.write (pos) - // dire servo pour aller à la position dans `pos`hori.write variable (pos) -delay (100) - // attend 100ms pour le servo pour atteindre la position}}

Tout bon? Passant ensuite.

Test du laser et pan Pan Sonner

Le module laser est comme une LED, mais il a une résistance intégrée dans le module afin que nous puissions le brancher directement à une E / S numérique - très simple. Si vous utilisez le même module laser que moi, le "-"Va à GND, la S va à la broche 12. Modifier l`exemple de code ci-dessus pour faire la broche 12 une sortie:

int laser = 12-pinMode (laser, OUTPUT) -

Puis clignoter la broche sur et hors chacun utilisant la norme de boucle digitalWrite () méthode.

Nous allons simplement utiliser PWM pour conduire le buzzer piézo à un niveau sonore confortable - vous pourriez expérimenter avec l`aide de la bibliothèque de tonalité si vous voulez, mais un bruit simple est tout ce qu`il faut. Connectez le fil noir à la masse et le fil rouge à la broche 11. Définir votre avertisseur sonore sur l`axe concerné, réglé sur le mode de sortie, et activez l`aide analogWrite (buzzer, 100) (Ou tout autre numéro que vous voulez jusqu`à 254) - et analogWrite (buzzer, 0) éteindre.

L`exemple de code complet modifié pour balayer deux servo, activer un laser, et de jouer le son ennuyeux, peuvent être trouvés ici.

Tous vos composants devraient travailler - nous devons maintenant nous attacher tous ensemble.

Création de la Tourelle

L`utilisation d`attaches de câbles, fixez un servo à l`autre- il n`a pas vraiment question qui, fait pas simplement que l`un se déplacera sur l`horizontale et l`autre se déplace à la verticale. Vous pouvez retirer la pale de rotor et le siège-re pendant le test si l`angle est pas juste.

servos

Utilisez un fil de modélisation rigide pour fixer le module laser à la lame de l`autre servo, comme ceci:

wire-for-laser-module

Enfin, je joint le tout à une jambe de bureau avec encore plus téléphériques liens et un peu de bois de rebut.

attachez-tourelle à la table

Programmation de la Tourelle

Je ne sais pas pour vous, mais mon idée d`une tourelle laser provient d`un nombre incalculable de films de science-fiction et des épisodes de star trek. Invariablement quelqu`un va survoler une tourelle et peu pan Pan coups viendront voler dans un modèle de balayage, millisecondes toujours trop lent, notre protagoniste ne fait pas se faire frapper. Voilà ce que je suis en train de répliquer, mais se sentir libre de modifier la routine principale pour convenir à votre idée de ce que une tourelle doit faire.

Voici le code de pseudo-je fini par utiliser pour la boucle principale:

  • Randomize temps entre les rafales, et le temps entre chaque prise.
  • Randomize la position de début et de fin pour chaque servo, vert et hori.
  • Randomize le nombre de coups à prendre.
  • Les travaux sur le nombre de degrés de changement après chaque tir comme la différence entre les positions de début et de fin divisé par le nombre de coups de feu.
  • Déplacez les servos aux positions de départ, et attendre un peu pour eux d`y arriver (100ms)
  • Boucle jusqu`à ce que tous les plans ont été prises, chaque fois que le déplacement des servos un peu comme précédemment calculated- déplacer et tirer, déplacer et tirer.
  • Répéter.

J`ai également ajouté une distincte Feu() méthode pour structurer le code un peu mieux. Ajustez les plages de tous random () fonctions pour accélérer ou ralentir chaque paramètre- ou augmenter le nombre de coups de feu pour un club plus ambiance de danse. Faites défiler vers le bas pour une vidéo du code en action!

#comprendre Servo vert, hori- // créer l`objet d`asservissement pour commander une pos servoint = 0 - // variable pour stocker le buzzer = configuration 11-vide servo positionint laser = 12 int () {hori.attach (9) -vert.attach (10) - // attache le servo sur la broche 9 du objectpinMode servo (laser, OUTPUT) -pinMode (buzzer, SORTIE) -} void loop () {int timeBetweenBursts = random (200,1000) -int timeBetweenShots = random ( 50,200) -int vertStart = aléatoires (1180) -int vertEnd = aléatoires (1180) -int horiStart = aléatoires (1180) -int horiEnd = aléatoires (1180) numShots -INT = aléatoire (5,20) -int vertChange = (vertEnd - vertStart) / numShots- // combien de déplacer l`axe vertical par chaque shotint horiChange = (horiEnd - horiStart) / numShots-vert.write (vertStart) - // laisser arriver à la position de départ d`abord, attendez un littlehori.write ( horiStart) -delay (100) -pour (int tir = 0- tir

En action

Je ne pense pas qu`il y ait une utilisation pratique pour ce petit jouet, mais il y a énormément de plaisir et il y a beaucoup de variables que vous pouvez modifier pour obtenir l`effet désiré. Peut-être que ça va venir dans maniable pour un film de LEGO maison?

» » Pan pan! Comment construire une tourelle laser avec un arduino