Alles begann mit einem kleinen Spiel aus dem dunklen Zeitalter namens „Mario“, angefangen von einem winzigen kleinen Kerl, der auf Enten springt, um meine Prinzessin zu retten, bis hin zu einem maskulinen, gutaussehenden Prinzen, der in Persien (Prinz von Persien) gegen die Dunkelheit kämpft Um meine Welt hinter mir zu retten, war ich ein großer Fan von Videospielen und bin mit ihnen aufgewachsen. Aber manchmal langweilen sie sich und ich fühle mich weniger daran beteiligt. Heutzutage ermöglichen die fortschrittlichen Spielekonsolen virtuelles Spielen und helfen uns, das Spiel viel besser zu fühlen, als es eine Tastatur oder eine Maus kann.
Als Arduino-Enthusiast hatte ich es satt, das berühmte Spiel „Angry Birds“ mit Tastatur und Maus zu spielen, und beschloss, meinen eigenen Gamecontroller mit einem Flex-Sensor und einem Potentiometer zu bauen. Wenn der Flex-Sensor gezogen wird, wird auch der Vogel am Katapult gezogen, und Sie können mit dem Potentiometer die Richtung einstellen, in die er gestartet werden soll. Wenn Sie dann den Flex-Sensor loslassen, wird der Vogel gestartet. Ich habe es ziemlich genossen. Wenn Sie also etwas sehr Ähnliches bauen möchten, ist dieses Tutorial hilfreich. Dieses Tutorial ist auch hilfreich bei der Steuerung des Mauszeigers mithilfe eines Potentiometers.
Software- und Hardwareanforderungen:
Software:
- Arduino IDE
- IDE verarbeiten
- Angry Birds Spiel auf dem Computer
Hardware:
- Arduino (Beliebige Version)
- Potentiometer
- Flex Sensor
- 47K Ohm Widerstand
- Kabel anschließen
- Steckbrett
Konzept dahinter:
Das Arduino Board liest die Werte vom Potentiometer und Flex Senor und überträgt sie über den USB-COM-Anschluss über die normale Funktion Serial.write () an den Laptop / PC. Wir lesen diese Informationen dann mithilfe der Verarbeitung und steuern den Mauszeiger mithilfe der Robot-Klasse in Java, die von der Verarbeitung der IDE unterstützt wird. Wir haben die Verarbeitungs-IDE so programmiert, dass beim Ziehen des Flex-Sensors ein Mausklick ausgeführt wird und der Mauszeiger je nach Zug in X-Richtung bewegt wird. Basierend auf dem Wert des Potentiometers bewegen wir dann den Mauszeiger in Y-Richtung. Auf diese Weise können wir die Richtung festlegen, in die der Vogel gestartet werden soll.
Schaltplan:
Die Schaltung zum Spielen des Angry Bird mit Flex Sensor und Potentiometer ist einfach.
Wir haben einfach ein Potentiometer und einen Flex-Sensor an die Analogeingänge (A0, A1) des Arduino angeschlossen. Der Ausgang des Flex-Sensors wird ebenfalls mit einem 47K-Pulldown-Widerstand nach unten gezogen.
Sie können es direkt auf ein Steckbrett anschließen oder an ein Perf-Brett löten und es auf Handschuhen oder etwas anderem zusammenbauen, um es kreativer zu machen. Ich habe einfach ein Steckbrett verwendet, um meine Verbindungen wie unten gezeigt herzustellen:
Arduino-Programm:
Der vollständige Arduino-Code wird am Ende des Tutorials angegeben. Im Folgenden werden einige wichtige Zeilen erläutert.
Wir initialisieren das Programm so, dass es mit einer Baudrate von 9600 arbeitet, und beginnen mit dem Lesen der Werte von Flex-Sensor und Potentiometer. Wie wir wissen, kann die Funktion serial.write () jeweils nur ein Datenbyte senden. Da ein Byte 8 Bit und 2 ^ 8 = 256 ist, können wir Werte von 0 bis 256 senden. Daher müssen wir die Werte des Flex-Sensorausgangs und des Potentiometerausgangs auf 0 bis 256 komprimieren.
Dazu verwenden wir die Funktion map () in Arduino. Alle Werte des Flex-Sensors werden von 5 auf 100 konvertiert. Wenn wir den Sensor biegen, wird er von 5 erhöht und beim Loslassen auf 5 zurückgesetzt. Um die Mausklicks zu erwähnen, werden die Werte 1 und 0 verwendet. Wenn 1 gesendet wird, wird die Maus gedrückt und wenn 0 gesendet wird, wird die Maus losgelassen.
Wenn (FlexValue> = 65 && FlexValue <= 120) // mein Flex-Sensor von 65 bis 120 variiert, ist Ihr möglicherweise anders {FlexValue = map (FlexValue, 120,65,0,100); // basierend auf Biegung in 0 zu 100 konvertieren, wenn (FlexValue> = 5) // 1 und 0 für den Mausklick verwendet werden, also von 5 beginnen {Mclick = true; Serial.write (1); // 1 wird gesendet, damit die Maus mit der linken Maustaste auf Serial.write (FlexValue) klickt. // Flex-Wert ist die Entfernung, um die Maus in X-Richtung zu bewegen} else {Mclick = false; Serial.write (0);}}
In ähnlicher Weise werden die Werte des Potentiometers mithilfe der map () -Funktion von 101 auf 200 konvertiert und über die Serial.write () -Funktion wie unten gezeigt an den COM-Port des Laptops gesendet .
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Basierend wiederum konvertieren zu 101 zu 201 Serial.write (potValue); // Pot-Wert ist die Entfernung, um die Maus in Y-Richtung zu bewegen}
Der Rest des Programms wird anhand der Kommentare erklärt.
Verarbeitungscode:
Processing ist eine Open-Source-Entwicklungsanwendung und kann einfach heruntergeladen und für die Entwicklung interessanter Projekte mit Arduino oder anderen Mikrocontrollern verwendet werden. Wir haben bereits einige Projekte mit Processing durchgeführt und Sie können sie überprüfen, indem Sie auf die unten stehenden Links klicken.
- DIY FM Radio mit Verarbeitung
- Virtual Reality / Gestensteuerung mit Arduino
- Privater Chatraum mit Arduino.
- Arduino-Radarsystem mit Verarbeitungs-APP und Ultraschallsensor
- Gesichtserkennung und -verfolgung in Echtzeit mit Arduino
- DIY Tachometer mit Arduino und Verarbeitung
- Ping-Pong-Spiel mit Arduino-Beschleunigungsmesser
- Biped Robot mit Arduino
- DIY Arduino Wärmebildkamera
In diesem Projekt haben wir die Verarbeitungs-IDE verwendet, um die COM-Port-Werte zu lesen und den Mauszeiger basierend auf den über den COM-Port empfangenen Werten zu steuern. Der vollständige Verarbeitungscode für diesen Angry Bird Game Controller kann unter folgendem Link heruntergeladen werden:
- Verarbeitungscode für diesen Angry Bird Game Controller (Rechtsklick und 'Link speichern unter')
Das Arduino-Programm finden Sie am Ende dieses Tutorials. Der Verarbeitungscode wurde aus dem von yoggy auf seiner GitHub-Seite angegebenen Code an unseren Zweck angepasst.
Die vom COM-Port kommenden Daten sollten mit derselben Baudrate gelesen werden, mit der sie von Arduino gesendet wurden. Überprüfen Sie auch mithilfe des Geräte-Managers, mit welchem COM-Anschluss Ihr Arduino verbunden ist. Mein Arduino wurde COM3 angeschlossen und es war das 0 - te Hafen in meinem Computer und die Baudrate in Arduino war 9600 so ist der Code wie folgt
port = new Serial (this, Serial.list (), 9600);
Sobald wir anfangen, die Werte zu lesen, unterscheiden wir sie, indem wir sie anhand ihres Werts erkennen, den wir von Arduino gesendet haben. Die Werte werden erneut von 0 auf 100 abgebildet, damit wir die Maus basierend auf diesem Wert steuern können.
if (port.available ()> 0) {data = port.read (); println (Daten); // Lies die Daten vom COM-Port und speichere sie in Daten} if (data> = 101 && data <= 201) // Wenn der Wert zwischen 101 und 201 liegt, muss er vom Potentiometer {Turn = int (map (data) stammen 101, 201, 0, 100)); // Verwenden Sie diesen Wert, um den Katapullt zu drehen} if (data> = 5 && data <= 100) // Wenn der Wert zwischen 5 und 100 liegt, muss er vom Flex Sensor {Pull = int (map (data, 5.100, 0,100));} // Verwenden Sie diesen Wert, um das Katapult zu ziehen, wenn (data == 1) click = true; // Verwenden Sie diesen Wert, um die Maustaste zu drücken, wenn (data == 0) click = false; // Verwenden Sie diesen Wert, um die Maustaste loszulassen
Sobald wir die Daten kategorisiert haben, können wir die Maus mithilfe der Robot Java-Klasse in Processing steuern. Der Befehl robot.mouseMove (crntX-Pull, crntY + Turn); kann verwendet werden, um die Maus an eine beliebige Position zu bewegen und die Linien robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); und robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); kann zum Drücken bzw. Loslassen der Maustaste verwendet werden.
if (click == false) // wenn Flex Sesnor nicht gezogen wird {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Pull> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Lassen Sie die Maustaste los} if (click == true) // wenn Flex Sesnor gezogen wird {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Drücken Sie die Maustaste robot.mouseMove (crntX-Pull, crntY + Turn); // Bewegen Sie die Maus basierend auf dem Flex- und POT-Wert}}
Die Verarbeitungs-IDE zeigt beim Start auch ein kleines Dialogfeld an, in dem Sie die Werte für Ziehen, Drehen und den Status von Mausklick wie unten gezeigt finden
Dieses Detail kann verwendet werden, um das Programm zu debuggen oder erforderliche Daten zu korrigieren.
Arbeiten:
Damit dieses Angry Bird-Projekt mit dem bereitgestellten Code funktioniert, bauen Sie Ihre Hardware gemäß dem Schaltplan zusammen und laden Sie den angegebenen Arduino-Code hoch. Notieren Sie sich dann, mit welchem COM-Port Ihr Arduino verbunden ist, nehmen Sie die erforderlichen Änderungen im Verarbeitungscode vor und starten Sie die Verarbeitungsskizze.
Starten Sie jetzt einfach das Angry Bird-Spiel und platzieren Sie den Cursor in der Nähe des Katapults. Ziehen Sie am Flex-Sensor, um den Vogel zu ziehen, und stellen Sie die Richtung mit dem Potentiometer ein. Sobald die Richtung eingestellt ist, lassen Sie den Flex-Sensor los
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Ihr Vogel wird direkt in die Luft geworfen und BOOMM !! Auf den Schweinchen. Die komplette Arbeit finden Sie im Video unten.
Ich hoffe, Ihnen hat das Projekt gefallen und Sie konnten etwas Ähnliches bauen. Wenn Sie irgendwelche Zweifel haben, können Sie mich im Kommentarbereich erreichen oder Ihre Frage im Forum für technische Fragen posten.
Jetzt ist es Zeit, in diese Schweinchen zu krachen und unsere Vogeleier zurückzubekommen !!!!