6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

5 Schritt:Schritt 1: Materialien Schritt 2: Das Mechanical Schritt 3: Der Elektro Schritt 4: Die Software Schritt 5: Lassen Sie uns spielen!

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

Alle 11 Artikel anzeigen
Nach einer langen Pause von meinem Arduino, beschloss ich, ich sollte ein schönes Projekt, um wieder in Verwendung ist leicht zu finden. Dies ist das Ergebnis! und es war nicht ein sehr netter Weg, um in einer fremden Plattform Leichtigkeit zurück, aber es hat sich gelohnt!

Meine Absichten mit diesem Instructable sind entlang der Idee, anderen Menschen eine Projektidee, nicht so sehr der Auslegung, wie genau es geht, so mit mir tragen Sie bitte = D



Alle Kredit geht an die Idee (http://www.instructables.com/id/Wiichuck-Controlled-Turret/#step1) britknight.

Ich sah ihr, inspiriert wurde, und dachte, ich würde teilen, was ich tat!

HINWEIS: Ich hatte nicht viel Zeit, um diese Instructable zusammen, und ich werde keinen Zugang zu einem Computer, bis Juli 2015, also, wenn Sie Fragen stellen, weiß nur, ich werde nicht beantworten können. =)
! Thanks Schritt 1: Materialien

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)
Die Materialien wirklich abhängig von der Person. Ich bin ein Lexan und L-Bracket Art von Kerl, so dass das, was ich früher!

Ich benutzte:

Drei Hobby Servos (all kontinuierliche Rotation - jede Marke)
10 x 10 "Plexiglasscheibe
Ein 12 x 8 "Lexan-Platten
Über 2 'von 1 x 1 x 1/16 "Alu-L-Winkel
Über 1 'von 3/4 "x 3/4" x 1/16 "Aluminum L-Bracket
Ein Bündel von 6-32 Größe Kopfschrauben und Muttern

Ein Arduino Uno R3
Eine halbe Größe Solderless Brotschneidebrett und Pullovern
Eine Wii Nunchuck
A WiiChuck Adapter
Eine 6V Energiequelle (Ich benutze einen 4 AA Akkus)

Wirklich, kreative Arbeit mit Materialien! Ich war mit Fetzen von der High-School-Robotik-Workshop I Mentor an, so dass es auf jeden Fall Raum für Verbesserungen auf dem Materialien Seite der Dinge!

Schritt 2: Das Mechanical

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

Alle 10 Artikel anzeigen
Na, hoffentlich diese Bilder werden die meisten Dinge zu erklären, aber ich werde Sie durch so viel wie ich kann sprechen!

Haben Sie eine nette, solide Basis, die aus dem Boden so weit, dass ein Servo in der Lage, um sie zu befestigen und nicht den Boden erreichen ist.
Montieren Sie die Links-Rechts-Servo genau in der Mitte!

Hier können Sie sehen, wie ich für die vertikale Zielen verwendet eine Trapezform. Wirklich, es macht es so aussehen cooler!
Ein Problem, das ich hatte, war mit der Lexan, dass der Up-Down-Servo angebracht. Wenn Sie es zu lange zu machen, wird der Servo kämpfen, um deinen Turm einzustellen.

Für die "Tonne" selbst, gerade lassen es so aussehen cool! Die einzige funktionale Stücke sind, wo die Brennservo misst und wobei die trapez verbindet. Mein Rat, montieren Sie ihn so der Schwerpunkt liegt direkt über die Links-Rechts-Drehachse.

Schritt 3: Der Elektro

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)

Die Verkabelung ist ziemlich einfach. Drei Servos zu drei digitalen Stiften verdrahtet, und die WiiChuck Adapter bis zu analogen Pins 5 und 4 angeschlossen.

Früher habe ich wie folgt belegt:
Pin 11: Brennen Servo
Pin 10: Up-Down-Servo
Pin 9: Links-Rechts Servo

Hinweis für die Brandservo: versuchen, es so zu positionieren, es eine kleine Menge von Kriechen, dass Gegen wendet sich gegen die Gummi bands.Step 4 hat: Die Software

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)
Jetzt für die richtig Spaß: I2C Kommunikation!

Wii Nunchuk kommunizieren über eine Sprache namens I2C , die nicht kompliziert ist wahnsinnig, aber wir haben eine Arduino-Bibliothek, damit umzugehen, die Draht-Bibliothek.

Hier ist ein nettes Tutorial, wie man Wii Nunchuk mit Arduino verwenden, ist es, was ich meinen Code basierte weg von: http://www.windmeadow.com/index.php?q=node/42

Hier ist mein Code, zu machen, was Sie werden es aus!

[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

#include <Wire.h> // sind die Drahtbibliothek
#include <Servo.h>
Servo LR; // Servo für Links-Rechts-Bewegung
Servo UD; // Servo für Auf- und Abbewegung
Servo Knall; // Servo für Dreharbeiten Gummibänder

char Nunchuck = 0xA4 >> 1; // Setzt Nunchuck-Adresse als 0xA4 (operativ 0x52)

uint8_t nunData [6]; // Zum Speichern von Daten

int Stück; // Für die Verfolgung der Byte-Größe Datenmengen
int joyX;
int joyY;
int AccelX; // Stellen Sie sicher, zwei Bits wegen des Nunchuck Verpackungs Protokoll hinzufügen
int accelY;
int accelZ;
Byte Zbutt; // Isolate letzte bisschen numData [5]
Byte Cbutt;

Leere setup () {
LR.attach (9);
UD.attach (10);
bang.attach (11);

Serial.begin (19200);
Wire.begin (); // Beginnt I2C Kommunikation
initialize (); // Richtet den Nunchuck
Verzögerung (100);
}

void initialize () {
Wire.beginTransmission (0x52); // Übermitteln Gerät 0x52
Wire.write (0x40); // Sendet Speicheradresse
Wire.write (0x00); // Sendet schickte Null.
Wire.endTransmission (); // Anschlag Sende
}

Leere Schleife () {

Wire.requestFrom (Nunchuck, 6); // Schicken Sie mir diese Daten!
chunk = 0;
while (Wire.available ()) {//, während es Daten zu senden
nunData [Stück] = decode (Wire.read ()); // Daten speichert, um den Wert "Brocken" von nunData sowie decodiert
chunk ++;
}

makevars ();

konvertieren (); // Verpacken die Sensordaten
Verzögerung (50);
}

Leere convert () {// erzählt Nunchuck zu "Paket" die Sensordaten
Wire.beginTransmission (Nunchuck); // Sagen Nunchuck zu hören
Wire.write (0x00); // Sendet Null
Wire.endTransmission (); //STOPP
}

Leere makevars () {
int joyX = nunData [0];
int joyY = nunData [1];

int AccelX = nunData [2] * 2 * 2; // Stellen Sie sicher, zwei Bits wegen des Nunchuck Verpackungs Protokoll hinzufügen
int accelY = nunData [3] * 2 * 2;
int accelZ = nunData [4] * 2 * 2;

Byte Zbutt = (nunData [5] >> 0) & 1; // Isolate letzte bisschen numData [5]
Byte Cbutt = (nunData [5] >> 1) & 1;

AccelX = AccelX + (nunData [5] >> 2) + 2 * (nunData [5] >> 3); // Addiert die beiden fehlenden Bits zu jedem Beschleunigungswert (fehlende Bits im sechsten Byte gefunden)
accelY = accelY + (nunData [5] >> 4) + 2 * (nunData [5] >> 5);
accelZ = accelZ + (nunData [5] >> 6) + 2 * (nunData [5] >> 7);

int horiz = map (joyX, 23, 230, 102, 78); // Macht es so gibt es einen kleinen Bereich in der Mitte, wo der Steuerknüppel wird nichts zu betätigen (X-Richtung)
if (abs (horiz - 90) von <= 2) {
horiz = 90;
}
else if (horiz> 90) {
horiz - = 2;
}
else if (horiz <90) {
horiz + = 2;
}

int vert = map (joyY, 28, 231, 80, 100); // Macht es so gibt es einen kleinen Bereich in der Mitte, wo der Steuerknüppel wird nichts (Y-Richtung) zu betätigen,
if (abs (vert - 90) von <= 2) {
vert = 90;
}
else if (vert> 90) {
vert - = 2;
}
else if (vert <90) {
vert + = 2;
}

int shoot = 90; // Erstellt Schießservowert

if ((Zbutt == 0) && (Cbutt! = 0)) {// wenn Z gedrückt wird, drehen nach vorne schießen Servo langsam
schießen = 95;
}

if ((Cbutt == 0) && (Zbutt! = 0)) {// wenn C gedrückt wird, dreht der Aufnahme nach hinten Servo schnell
schießen = 82;
}

LR.write (horiz); // Schreiben alle Servowerte
UD.write (vert);
bang.write (shoot);

}

char decode (byte x) {// decodiert Sensorwert (von einer früheren Aussage genannt)
x = (x ^ 0x17) + 0x17; // Ich habe keine Ahnung, was das bedeutet ...
zurück x;
}

]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

Schritt 5: Lassen Sie uns spielen!

6 Shot Arduino Rubber Band Turret (Wii Nunchuck + Arduino)
Jetzt erhalten Sie die Dinge zu schießen!

Yaaaaaaaay.