Pan pan! Comment construire une tourelle laser avec un arduino

Video: Tutoriel 14 : Détecteur de mouvement Arduino

Vous ennuyez-vous? Autant construire une tourelle laser. Vous savez - 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`entre eux.

Ce dont tu auras besoin

  • Arduino
  • 2 servos
  • Module laser, tel que l`un de ce kit de capteur
  • buzzer piézo-électrique ou un autre petit dispositif de sortie
  • les liens en fil métallique et de câble pour la fixation
  • femelle gt long, câbles mâles saut, ainsi que des 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

plan de construction

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

Test servo

En fonction de votre servo, les fils peuvent être de couleur différente, mais en général:

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

Une fois que vous avez câblé vos deux servos, téléchargez le code 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).

Video: Projet : Mini CNC pour fabriquer des PCB (WIP)!

#comprendre servo vert,Hori- // créer l`objet d`asservissement pour commander un servo// un maximum de huit objets servo peut être créé int pos = 0- // variable pour stocker la position d`asservissementvide installer(){Hori.attacher(9)-vert.attacher(dix)- // attache le servo sur la broche 9,10 pour les objets d`asservissementvert.écrire(0)-Hori.écrire(0)-}vide boucle(){pour(pos = 0- pos lt; 180- pos += dix) // va de 0 à 180 degrés { // pas de 10 degrés vert.écrire(pos)-Hori.écrire(pos)- // dire servo pour aller à la position dans la variable « pos » retard(100)- // attend 100 ms pour le servo pour atteindre la position }pour(pos = 180- posgt; =1- pos-=dix) // retourne de 180 degrés à 0 degrés{vert.écrire(pos)- // dire servo pour aller à la position dans la variable « pos »Hori.écrire(pos)-retard(100)- // attend 100 ms pour le servo pour atteindre la position}}

Tout bon? Passant ensuite.

Test du laser et pan Pan Du son

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 à un E / S numérique - très simple. Si vous utilisez comme moi le même module laser, le «-» Va à GND, la S va à la broche 12. Modifier le code exemple ci-dessus pour faire la broche 12 une sortie:

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

Puis clignoter la broche et hors chaque boucle en utilisant la norme digitalWrite () méthode.

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

Le code de l`échantillon complet modifié pour balayer deux servo, activer un laser, et jouer le son ennuyeux, se trouve ici.

Video: Tourelle manuel avec le laser pointer - Garry's Mod [FR]

Tous vos composants devraient travailler - maintenant, nous devons lier ensemble.

Création du Tourelle

L`utilisation d`attaches de câble, attachez un servo à l`autre- il n`a pas vraiment d`importance, assurez-vous juste un se déplacera sur l`horizontale et l`autre se déplace à la verticale. Vous pouvez retirer la pale de rotor et re-siège pendant le test si l`angle est pas juste.

Video: essais du module fumée + tourelles contrôlées par servo et arduino + aperçu du bismarck

servos

Utilisation du fil de modélisation rigide pour fixer le module de laser à la lame de l`autre servo, comme suit:

Fil-à-module laser

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

attach-tourelle à 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 voler devant une tourelle et peu pan Pan coups de feu viennent voler dans un modèle de balayage, millisecondes toujours trop lent pour que notre protagoniste ne soit pas réellement touché. Voilà ce que je suis en train de répliquer, mais ne hésitez pas à modifier la routine principale pour convenir à votre idée de ce qu`est une tourelle doit faire.

Voici le code pseudo je me suis retrouvé à l`aide de la boucle principale:

  • Randomisez temps entre les rafales, et le temps entre chaque prise.
  • Randomiser la position de début et de fin pour chaque servo, vert et hori.
  • Randomisez le nombre de coups à prendre.
  • Les travaux sur le nombre de degrés de changement après chaque tir que la différence entre les positions de début et de fin divisé par le nombre de coups de feu.
  • Déplacer les servos aux positions de départ et attendre un peu pour eux pour y arriver (100ms)
  • Boucle jusqu`à ce que tous les coups 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 aussi ajouté un séparé Feu() méthode pour structurer le code un peu mieux. Ajuster les plages de tous au hasard() fonctions pour accélérer ou ralentir chaque paramètre- ou augmenter le nombre de coups de feu pour une ambiance plus club de danse. Faites défiler la liste pour une vidéo du code en action!

#comprendre servo vert,Hori- // créer l`objet d`asservissement pour commander un servoint pos = 0- // variable pour stocker la position d`asservissementint laser = 12-int avertisseur sonore = 11-vide installer(){Hori.attacher(9)-vert.attacher(dix)- // attache le servo sur la broche 9 de l`objet asservipinMode(laser,SORTIE)-pinMode(avertisseur sonore,SORTIE)-}vide boucle(){int timeBetweenBursts = au hasard(200,1000)-int timeBetweenShots = au hasard(50,200)-int vertStart = au hasard(1,180)-int vertEnd = au hasard(1,180)-int horiStart = au hasard(1,180)-int horiEnd = au hasard(1,180)-int numShots = au hasard(5,20)-int vertChange = (vertEnd - vertStart) / numShots- // combien de déplacer l`axe vertical par chaque tirint horiChange = (horiEnd - horiStart) / numShots-vert.écrire(vertStart)-// laisser arriver à commencer première position, attendre un peuHori.écrire(horiStart)-retard(100)-pour(int coup = 0- couplt;numShots- coup++){vert.écrire(vertStart)-Hori.écrire(horiStart)-vertStart += vertChange-// incrémenter la valeur vert pour la prochaine foishoriStart += horiChange-Feu()-retard(timeBetweenShots)- // ajouter un peu de variété à la vitesse des coups de feu}retard(timeBetweenBursts)-}vide Feu(){digitalWrite(laser,HAUTE)-analogWrite(avertisseur sonore,100)-retard(20)-// régler cette option pour modifier la longueur du tir de la tourelledigitalWrite(laser,FAIBLE)-analogWrite(avertisseur sonore, 0)-}

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 être pratique pour un film maison LEGO?

Articles connexes