Pew Pew! So bauen Sie einen Laser Turret mit einem Arduino
Bist du gelangweilt? Könnte auch einen Laserrevolver bauen. Weißt du - einer, der geht Pew Pew, schießt einen roten Strahl in viele verschiedene Richtungen und wirft vielleicht sogar eine Rauchmaschine hinein? Ja, einer von ihnen.
Was wirst du brauchen
- Arduino
- 2 Servos
- Lasermodul, wie eines aus diesem Sensorkit
- Piezosummer oder anderes kleines Ausgabegerät
- Metalldraht und Kabelbinder zur Befestigung
- Lange weibliche-> männliche Jump-Kabel sowie normale Jump-Kabel
Optional wird eine Rauchmaschine benötigt - der Laser hat eine relativ geringe Wattzahl, so dass Sie den Strahl selbst in dunklen Räumen nicht ohne Rauch sehen können.
Plan erstellen
Die Grundidee des Revolverkopfes besteht darin, das Lasermodul auf eine Servoeinheit zu legen, um eine horizontale Drehung zu gewährleisten. Montieren Sie dieses Paket dann auf einem anderen Servo, der in einem Winkel von 90 Grad angeordnet ist, um eine vertikale Bewegung zu ermöglichen. Wir haben einen Piezo, der das zur Verfügung stellt Pew Pew Soundeffekte, und ich werfe für eine gute Maßnahme eine Rauchmaschine.
Servotest
Abhängig von Ihrem Servo können die Drähte unterschiedlich gefärbt sein, im Allgemeinen jedoch:
- Rot ist das positive Kabel und auf beiden Servos war es das Zentrum von drei - an + 5V-Schiene anzuschließen.
- Braun oder Schwarz ist das Negativ, das am Arduino mit GND verbunden werden soll.
- Weiß oder Orange ist die Signalleitung, die an einen PWM-fähigen digitalen E / A-Pin angeschlossen werden soll (9 und 10 in der Demo unten)..
Laden Sie den folgenden Beispielcode hoch, sobald Sie Ihre beiden Servos angeschlossen haben. Ich habe ein Servo genannt “hori” um die horizontale Bewegung zu steuern, und die andere “vert”. Jeder sollte einen vollen Bewegungsbereich ausführen (in meinem Fall etwa 60 Grad)..
#umfassen Servo vert, hori; // Servoobjekt erstellen, um ein Servo zu steuern // Es können maximal acht Servoobjekte erstellt werden. int pos = 0; // Variable zum Speichern der Servoposition void setup () hori.attach (9); vert.attach (10); // befestigt den Servo an Pin 9,10 an den Servoobjekten vert.write (0); hori.write (0); void loop () für (pos = 0; pos < 180; pos += 10) // goes from 0 degrees to 180 degrees // in steps of 10 degrees vert.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) // geht von 180 Grad auf 0 Grad zurück vert.write (pos); // Servo anweisen, in Position 'Position' zu gehen hori.write (pos); Verzögerung (100); // wartet 100ms, bis der Servo die Position erreicht hat
Alles gut? Dann weiterziehen.
Testen des Lasers und Pew Pew Klingen
Das Lasermodul ist wie eine LED, aber es ist ein Widerstand im Modul eingebaut, so dass wir es direkt an eine digitale E / A anschließen können - sehr einfach. Wenn Sie das gleiche Lasermodul wie ich verwenden, wird das “-” geht zu GND, das S geht zu Pin 12. Modifizieren Sie den obigen Beispielcode, um Pin 12 zu einem Ausgang zu machen:
int laser = 12; PinMode (Laser, OUTPUT);
Dann blinken Sie den Pin mit Standard in jeder Schleife digitalWrite () Methode.
Wir verwenden nur PWM, um den Piezo-Summer mit einem angenehmen Klangpegel zu betreiben - Sie können mit der Klangbibliothek experimentieren, wenn Sie möchten, aber ein einfaches Geräusch ist alles, was ich brauche. Verbinden Sie den schwarzen Draht mit Masse und den roten Draht mit Pin 11. Definieren Sie Ihre Summer Stellen Sie am entsprechenden Pin den Ausgabemodus ein und aktivieren Sie ihn mit analogWrite (Summer, 100) (oder eine beliebige Anzahl bis zu 254); und analogWrite (Summer, 0) ausschalten.
Den vollständigen Beispielcode, der so modifiziert ist, dass er zwei Servos abtastet, einen Laser aktiviert und den störenden Sound wiedergibt, finden Sie hier.
Alle Ihre Komponenten sollten funktionieren - jetzt müssen wir alles miteinander verbinden.
Den Revolver erstellen
Befestigen Sie ein Servo mit Kabelbindern am anderen. Es spielt keine Rolle, welche der beiden ist. Stellen Sie nur sicher, dass sich einer in der Horizontalen bewegt und der andere die Vertikale. Sie können das Rotorblatt abziehen und während des Tests wieder einsetzen, wenn der Winkel nicht stimmt.
Befestigen Sie das Lasermodul mit einem steifen Modellierdraht an der Klinge des anderen Servos.
Schließlich befestigte ich das Ganze an einem Tischbein mit noch mehr Kabelbindern und etwas Restholz.
Programmierung des Revolvers
Ich weiß nicht, wie es Ihnen geht, aber meine Idee eines Laserturms stammt aus unzähligen Science-Fiction-Filmen und Star-Trek-Episoden. Unweigerlich fliegt jemand an einem Turm vorbei und wenig Pew-Pew Die Schüsse fliegen in einem weiten Muster heraus, immer Millisekunden zu langsam, sodass unser Protagonist nicht wirklich getroffen wird. Das ist es, was ich versuche zu replizieren, obwohl Sie die Hauptroutine an Ihre Vorstellung davon anpassen können, was ein Turm tun soll.
Hier ist der Pseudo-Code, den ich für die Hauptschleife verwendet habe:
- Legen Sie die Zeit zwischen den Bursts und die Zeit zwischen den einzelnen Aufnahmen fest.
- Randomisieren Sie die Start- und Endposition für jeden Servo, Vert und Hori.
- Randomize die Anzahl der Aufnahmen.
- Berechnen Sie die Anzahl der Änderungen nach jeder Aufnahme als Differenz zwischen Start- und Endposition geteilt durch die Anzahl der Aufnahmen.
- Bringen Sie die Servos in die Ausgangsposition und warten Sie ein wenig, bis sie dorthin gelangen (100ms).
- Wiederholen Sie die Schritte, bis alle Aufnahmen gemacht wurden, wobei Sie die Servos jedes Mal ein wenig bewegen, wie zuvor berechnet. bewegen und schießen, bewegen und schießen.
- Wiederholen.
Ich habe auch ein separates hinzugefügt Feuer() Methode, um den Code etwas besser zu strukturieren. Passen Sie die Bereiche aller an zufällig() Funktionen zum Beschleunigen oder Verlangsamen jedes Parameters; oder erhöhen Sie die Anzahl der Aufnahmen, um mehr Dance Club-Stimmung zu erzielen. Scrollen Sie nach unten, um ein Video des aktiven Codes anzuzeigen!
#umfassen Servo vert, hori; // Servoobjekt erstellen, um ein Servo zu steuern int pos = 0; // Variable zum Speichern der Servoposition int laser = 12; int Summer = 11; void setup () hori.attach (9); vert.attach (10); // befestigt das Servo an Pin 9 an das Servoobjekt pinMode (Laser, OUTPUT); pinMode (Summer, OUTPUT); void loop () int timeBetweenBursts = zufällig (200,1000); int timeBetweenShots = zufällig (50.200); int vertStart = zufällig (1.180); int vertEnd = zufällig (1.180); int horiStart = zufällig (1.180); int horiEnd = zufällig (1180); int numShots = zufällig (5,20); int vertChange = (vertEnd - vertStart) / numShots; // wie viel vertikale Achse um jede Aufnahme bewegt werden soll int horiChange = (horiEnd - horiStart) / numShots; vert.write (vertStart); // lass es zuerst zur Startposition kommen, warte ein wenig hori.write (horiStart); Verzögerung (100); für (int shot = 0; shot
In Aktion
Ich glaube nicht, dass dieses kleine Spielzeug praktisch verwendet werden kann, aber es macht unglaublich viel Spaß und es gibt viele Variablen, die Sie anpassen können, um den gewünschten Effekt zu erzielen. Vielleicht ist es nützlich für einen selbst gemachten LEGO-Film?
Erfahren Sie mehr über: Arduino.