Arduino King Cobra Spiel

5 Schritt:Schritt 1: Die Suche nach Serpent Parts Schritt 2: Snake Brains Schritt 3: Snake Eyes Schritt 4: Snake Muscle Schritt 5: Die Cobra-Code (nicht Python) HAH!

Arduino King Cobra Spiel
Wann ist das letzte Mal, dass ein elektronisches Gerät aufgespießt Sie?
Für mich ist es gewesen war, viel zu lang.

Geben Sie ... Der Arduino King Cobra! (TM, R, Urheberrecht, Patent angemeldet ... nicht wirklich).
Ich hatte ein paar neue Teile und wollte etwas während meiner Mittagspause vor kurzem bauen. Dies ist, was ich kam mit.
Ich nenne diese Sitzungen "One Hour Hackathons". Nur, es ist nur mir, und ich selten Zeit davon, und ja, sie sind einsam.

Viel Spaß! Sie werden keine Schaltpläne finden Sie hier, wie ich bin Künstler. Aber Sie werden schlecht geschossen und kommentierte Bilder zu finden! Yahoo!



DISCLAIMER: Ich empfehle den Bau dieses ohne Daumen-tack Reißzähne, Kinder. Blut geboren Krankheit ist nicht zum Lachen, und keiner ist ein Rechtsstreit. Ich hämmerte das Ende meiner tack, so dass es war langweilig (Spoiler, ich weiß). Einige haben große Ideen vorgeschlagen, wie beispielsweise eine rote Markierung Feder, tauchte einen Schwamm in Farbe und Elektroschock-Drähten. Wohl alle besser als die Reißnagel. Sei sicher! Schritt 1: Die Suche nach Serpent Parts



Arduino King Cobra Spiel
Eine Liste von Kleinigkeiten benötigt, um Ihre wildesten Träume wahr werden:

1. Ein Arduino Was auch immer (alle Modelle funktionieren sollte). Ich habe eine Micro
2. Eine analoge Servomotor. Mir ist ein Tower Pro SG90 mit 180-Grad-Sweep
3. Ein PING Ultraschall-Abstandssensor
4. Ein Batteriehalter mit Batterien. Meiner ist 6V insgesamt, aber Arduino empfiehlt 7-12 Volt für Stabilität
5. Ein Brotbrett oder PCB für die Verdrahtung
6. Verkabelung
7. Eine kleine Kabelbinder
8. Eine Schlangenkopf
9. Einige tapeStep 2: Snake Brains

Arduino King Cobra Spiel
Meine Schlange läuft auf einem Arduino Micro. Sie können eine beliebige Arduino obwohl verwenden, Ihre Stifte nur entsprechend anpassen.
Die Funktionsweise ist folgende:

1. Ping Ultraschallsensor liest die Entfernung Ihrer Hände oder Gegenstände vor sich 50 mal pro Sekunde
2. Wenn nahe genug, wird der Servomotor nach unten in Richtung der Hand gedreht wird.

Wie funktioniert der Code jetzt, wird die "Cobra Kopf" nicht sitzen und warten, Ihre Hand zu nah an, aber anstatt es auf Ihrem Entfernungen bewegt. Also, je näher Sie erhalten, desto niedriger der Preis fällt um you.Step 3 zu erhalten: Snake Eyes

Arduino King Cobra Spiel

Arduino King Cobra Spiel

Die "Augen" sind eigentlich ein Ultraschall-Abstandssensor. Diese sind in Radio Shack und online zur Verfügung.
Sie arbeiten durch Senden einer schrillen "ping" aus und dann messen, wie lange es dauert, zu hören, es wieder auf die Beine. Da die Schallgeschwindigkeit bekannt ist, kann er innerhalb eines bestimmen cm oder so, wie weit das Objekt entfernt ist, dass es zu schlagen. Cool!

Es verfügt über 3 Pins:
Ein Erdungsstift (GND)
Ein 5 Volt in Stift (5 V)
Eine Signalstift (SIG)

Die ersten beiden Kraft es. Der Signalstift ist zum Aussenden des ping und dann hört für sie zu return.Step 4 verantwortlich: Snake Muscle

Arduino King Cobra Spiel

Arduino King Cobra Spiel

Arduino King Cobra Spiel

Arduino King Cobra Spiel

Dies ist ein typisches Hobby Mini-Servomotor. Sie sind ideal, um zu verwenden, wenn Sie einen Motor auf eine exakte Position zu drehen haben.
Sie sind ziemlich schnell und haben eine gute Menge an Drehmoment, aber darauf achten, nicht auf sie reißen oder die Zahnräder können im Laufe der Zeit zu berauben.

Sie haben drei Anschlüsse:
Braun / Schwarz: Erde -
rot / orange: positive Spannung +
gelb: Signal (sendet in der Regel ein Wert zwischen 0-180 Grad)
Schritt 5: Die Cobra-Code (nicht Python) HAH!

Hier ist der Arduino-Code, ich laufen. Es ist eine Modifikation ihrer Ping Ultraschallsensor Probe.
Anpassung der Variable "numReadings" auf einen höheren Wert wird in weniger laut Messwerten führen, sondern auch eine größere Verzögerung der Reaktionszeit.
Viel Spaß!

// Kopieren von hier ...

#include <Servo.h>
Servo myservo; // Servo Aufgabe, eine Servosteuerung erstellen
int val; // Bereich abgebildeten Wert für die Servosteuerung

const int pingPin = 7; // Parallax Ping Sensors Signalstift
const int numReadings = 5; // Höher eingestellt, um mehr zu glätten, verursacht auch mehr Wartezeit
int Lesungen [numReadings]; // Die Ablesungen von dem analogen Eingangs
int index = 0; // Der Index des aktuellen Mess
int gesamt = 0; // Die laufende Summe
int Durchschnitt = 0; // der Durchschnitt
int Lastvalue = 0;

Leere setup () {
// Initialisierung der seriellen Kommunikation:
Serial.begin (9600);

myservo.attach (9); // Misst der Servo auf Pin 9 an den Servo Objekt

// Leere den Glättungspufferwert
for (int thisReading = 0; thisReading <numReadings; thisReading ++)
Ablesungen [thisReading] = 0;
}

Leere Schleife ()
{
// Variablen zur Laufzeit des ping zu etablieren,
// Und der Abstand Ergebnis in Zoll und Zentimeter:
lange Dauer, Zoll, cm;
int fadeValue = 0;

// Der PING))) wird mit einem High Impuls von 2 oder mehr Mikrosekunden ausgelöst.
// Geben Sie eine kurze LOW Impuls voraus, um eine saubere HOCH-Impuls zu gewährleisten:
pinMode (pingPin, OUTPUT);
digital (pingPin, LOW);
delayMicroseconds (2);
digital (pingPin, HIGH);
delayMicroseconds (5);
digital (pingPin, LOW);

// Das gleiche Pin wird verwendet, um das Signal von der PING lesen))): Ein hoch
// Impuls, dessen Dauer ist die Zeit (in Mikrosekunden) von der Sende
// Der ping auf den Empfang sein Echo von einem Objekt.
pinMode (pingPin, INPUT);
Dauer = pulseIn (pingPin, HIGH);

// Zeit in einem Abstand zu konvertieren
inches = microsecondsToInches (Dauer);
cm = microsecondsToCentimeters (Dauer);

// Glättung Code beginnt hier
// Subtrahieren Sie die letzte Messung:
Gesamt = Gesamt - Lesungen [index];
// Vom Sensor lesen:
Lesungen [index] = cm; // analogRead (inputPin);
// Fügen Sie den Messwert auf das Gesamt:
Gesamt = Gesamt + Lesungen [index];
// In die nächste Position in der Anordnung:
index = index + 1;

// Wenn wir am Ende des Arrays sind ...
if (index> = numReadings)
// ... Verpackung um an den Anfang:
index = 0;

// Berechnung der durchschnittlichen:
mittel = Gesamt / numReadings;
// Glättung Code ist hier

// Remap Wertebereich und bewegen Sie die Servo-
val = mittel;
val = map (val, 10, 40, 0, 179); // Skalenwert, es mit dem Tower Pro halbe Umdrehung analogen Servo verwenden (Wert zwischen 0 und 180)
if (durchschnittlich <25)
{Myservo.write (val);} // die Servoposition setzt nach dem skalierten Wert, wenn innerhalb einer bestimmten Entfernung
Verzögerung (10); // Lassen Sie den Servo abkühlen, oder etwas
}

Lang microsecondsToInches (lange Mikrosekunden)
{
// Nach Parallax Datenblatt für den PING))), gibt es
// 73,746 Mikrosekunden pro Zoll (dh Schall bei 1130 Fuß pro
// Sekunde). Dies gibt den Abstand vom Ping, Outbound gereist
// Und zurück, so dass wir durch 2 teilen, um den Abstand des Hindernisses zu bekommen.
// Siehe: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
zurück Mikrosekunden / 74/2;
}

Lang microsecondsToCentimeters (lange Mikrosekunden)
{
// Die Schallgeschwindigkeit ist 340 m / s oder 29 Mikrosekunden pro Zentimeter.
// Der Ping fährt hin und zurück, so, um den Abstand von der zu finden
// Objekt nehmen wir die Hälfte der zurückgelegten Strecke.
zurück Mikrosekunden / 29/2;
}

// Um ​​hier ein ...