Πώς να ελέγξετε ρομπότ με έναν ελεγκτή παιχνιδιών και Arduino

Θέλατε πάντα να ελέγχετε ένα Arduino με έναν ελεγκτή παιχνιδιών βίντεο; Λοιπόν τώρα μπορείτε με τίποτα περισσότερο από αυτό το άρθρο και έναν ελεγκτή Xbox 360!

Θέλατε πάντα να ελέγχετε ένα Arduino με έναν ελεγκτή παιχνιδιών βίντεο;  Λοιπόν τώρα μπορείτε με τίποτα περισσότερο από αυτό το άρθρο και έναν ελεγκτή Xbox 360!
Διαφήμιση

Arduinos και παρόμοιες συμβατές κάρτες είναι μία από τις συσκευές για DIY tinkerers παντού. Είτε είστε αρχάριος που ξεκινάει απλά με τον Arduino ή κάποιος που έχει ήδη βάλει σε χρήση στη ζωή σας, παρέχουν μια πλατφόρμα για αμέτρητα φοβερά έργα.

Σήμερα θα διερευνήσουμε έναν δημιουργικό τρόπο για τον έλεγχο ενός σερβο χρησιμοποιώντας την Επεξεργασία και έναν ελεγκτή Xbox360. Εάν είστε ήδη αρκετά καλοί τρόποι ανάπτυξης παιχνιδιών, ίσως να σας ενδιαφέρει το σεμινάριο Custom Game Controller, το οποίο χρησιμοποιεί την Unity.

Αυτό το σεμινάριο θα υποθέσει λίγες προηγούμενες γνώσεις, εάν αυτή είναι η πρώτη σας εισβολή στο Arduino fiddling, μπορεί να βρείτε τον οδηγό μας Arduino χρήσιμο εδώ. Ομοίως, εάν αυτή είναι η πρώτη φορά που χρησιμοποιείτε Java, μπορεί να είναι λίγο συγκεχυμένη. Ενώ η Επεξεργασία χρησιμοποιεί απλοποιημένη έκδοση της πλατφόρμας, αυτές οι έννοιες και συμβουλές Java ίσως να βοηθήσουν.

Ο, τι χρειάζεσαι

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

  • 1 x Arduino. Χρησιμοποιούμε σήμερα UNO.
  • 1 x χόμπι σερβο. Οτιδήποτε θα λειτουργήσει με τις καρφίτσες Arduino.
  • 1 x ενσύρματο χειριστήριο Xbox360. Αν και αυτό θα λειτουργήσει τεχνικά με σχεδόν οποιοδήποτε ελεγκτή.
  • Αρκετά καλώδια σύνδεσης.

Εκτός από αυτά τα πράγματα, θα πρέπει επίσης να κατεβάσετε την Επεξεργασία και το IDE Arduino από τις αντίστοιχες ιστοσελίδες τους.

Προετοιμασία του Arduino

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Πρώτα πρέπει να συνδέσουμε το σέρβο μας. Τα χρώματα καλωδίωσης μπορούν να ποικίλουν εδώ, αλλά γενικά ο κόκκινος συνδέεται με τον πείρο 5v και το καφέ ή το μαύρο συνδέονται με τον πείρο GND . Η γραμμή δεδομένων, η οποία συνήθως είναι κίτρινη ή πορτοκαλί, συνδέεται με τον ακροδέκτη 10 .

Ελέγξτε την καλωδίωση και συνδέστε το Arduino στον υπολογιστή. Ανοίξτε το IDE του Arduino.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Ανοίξτε το σκίτσο StandardFirmata που βρίσκεται στο File> Παραδείγματα> Firmata> StandardFirmata . Αυτό το σκίτσο δημιουργεί το διοικητικό συμβούλιο για τον εξωτερικό έλεγχο της σειριακής θύρας και είναι το ίδιο που χρησιμοποιήσαμε στο άρθρο μας για τον έλεγχο του Arduino με την Python Πώς να προγραμματίσει και να ελέγξει ένα Arduino με την Python Πώς να προγραμματίσει και να ελέγξει ένα Arduino με την Python Δυστυχώς, είναι αδύνατο να προγραμματίσετε απευθείας ένα Arduino στην Python, αλλά μπορείτε να το ελέγξετε μέσω USB χρησιμοποιώντας ένα πρόγραμμα Python. Δείτε πώς. Διαβάστε περισσότερα . Μεταφορτώστε το σκίτσο στο διοικητικό συμβούλιο.

Αν η μεταφόρτωση αποτύχει, ελέγξτε ότι έχετε επιλέξει τα σωστά στοιχεία του σκάφους και της θύρας στο μενού Εργαλεία .

Το Arduino είναι έτοιμο να πάει!

Ρύθμιση επεξεργασίας

Ανοίξτε την επεξεργασία, θα σας υποδεχτεί με ένα κενό σκίτσο. Πριν κάνουμε κάτι εδώ θα χρειαστεί να εγκαταστήσουμε μερικές βιβλιοθήκες. Μεταβείτε στο μενού Σκίτσο και επιλέξτε Εισαγωγή βιβλιοθήκης> Προσθήκη βιβλιοθήκης . Αυτό θα φέρει τον διαχειριστή συνεισφορών, ο οποίος θα φαίνεται εξοικειωμένος με όλους τους χρήστες του Arduino εκεί έξω.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Πρέπει να εγκαταστήσουμε τρεις βιβλιοθήκες για να κάνουμε αυτό το έργο. Το πρώτο είναι η βιβλιοθήκη Game Control Plus . Αυτό θα μας επιτρέψει να χρησιμοποιήσουμε τον ελεγκτή παιχνιδιών μας με την Επεξεργασία. Χρησιμοποιήστε το παράθυρο αναζήτησης για να το βρείτε και κάντε κλικ στην εγκατάσταση στην κάτω δεξιά γωνία. Ο Game Control Plus χρειάζεται μια άλλη βιβλιοθήκη που έχει εγκατασταθεί για το εργαλείο διαμόρφωσης, οπότε ας το πάρουμε τώρα. Αναζητήστε τη βιβλιοθήκη G4P και εγκαταστήστε τη.

Τέλος, χρειαζόμαστε τη βιβλιοθήκη Arduino (firmata) . Το μαντέψατε, αναζητήστε το και κάντε κλικ στην εγκατάσταση. Με αυτά τα πράγματα που έχουμε εγκαταστήσει, είμαστε έτοιμοι να συνεχίσουμε με τον έλεγχο ότι όλα θα λειτουργήσουν. Συνεργαζόμαστε σήμερα με τα Windows 10, αλλά η επεξεργασία είναι διαθέσιμη για τις περισσότερες πλατφόρμες, συμπεριλαμβανομένου του Raspberry Pi. Φανταστείτε τις δυνατότητες!

Δοκιμάστε το Arduino

Πριν αρχίσουμε να δημιουργούμε ένα προσαρμοσμένο σκίτσο, ας δοκιμάσουμε το Arduino και το Servo με την Επεξεργασία. Ανοίξτε το Αρχείο> Παραδείγματα και επιλέξτε ArduinoServo από το φάκελο Contributed Libraries / Arduino (firmata) . Θα το χρησιμοποιήσουμε για να δοκιμάσουμε το σέρβο μας, αλλά πρώτα ίσως χρειαστεί να αλλάξουμε μερικά πράγματα.

Μετακινηθείτε προς τα κάτω στο σκίτσο και βρείτε αυτή τη γραμμή:

println(Arduino.list()); 

Εάν σχολιάζεται, αφαιρέστε τις δύο καμπύλες πριν println (Arduino.list ());, και αποθηκεύστε το σκίτσο. Εκτελέστε το, κάνοντας κλικ στο εικονίδιο αναπαραγωγής και παρακολουθήστε την κονσόλα στο κάτω μέρος. Αυτό θα απαριθμήσει όλα τα συνημμένα στις θύρες COM σας.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Στην περίπτωσή μου, το Arduino μου ήταν στο COM 8, το οποίο ήταν το τρίτο λιμάνι που παρατίθεται εδώ. Αυτό είναι σημαντικό καθώς ο κώδικας στην παρακάτω γραμμή έχει έναν πίνακα με τιμή που καθορίζει ποια θύρα COM θα χρησιμοποιήσει.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Πρέπει να αλλάξουμε αυτό ώστε να αντικατοπτρίζει τη θύρα COM μας. Για μένα, ήταν η τρίτη θέση ή ο δείκτης 2:

 arduino = new Arduino(this, Arduino.list()[2], 57600); 

Πρέπει να κάνουμε μερικές άλλες μικρές αλλαγές στον κώδικα για να το δοκιμάσουμε. Πραγματοποιήστε κύλιση προς τα κάτω όπου βρίσκονται οι καρφίτσες Arduino και σχολιάστε μια από τις γραμμές εδώ. Αλλάξτε την άλλη στην Καρφίτσα 10 .

 //arduino.pinMode(4, Arduino.SERVO); arduino.pinMode(10, Arduino.SERVO); 

Πρέπει να κάνουμε το ίδιο πράγμα στη μέθοδο Draw () :

 arduino.servoWrite(10, constrain(mouseX / 2, 0, 180)); // arduino.servoWrite(4, constrain(180 - mouseX / 2, 0, 180)); 

Αποθηκεύστε το σκίτσο και εκτελέστε το. Θα πρέπει να είστε σε θέση να μετακινήσετε το σέρβο σας μετακινώντας το ποντίκι σας πέρα ​​δώθε από το παράθυρο που παράγει το πρόγραμμα.

Εάν δεν λειτουργεί για εσάς, ελέγξτε την καλωδίωση Servo και ελέγξτε ότι έχετε τη σωστή θέση πίνακα για τη θύρα COM. Αφού γνωρίζετε ότι ο Arduino μιλάει ωραία με την Επεξεργασία, είναι καιρός να προχωρήσουμε.

Ρύθμιση του ελεγκτή

Η βιβλιοθήκη Game Control Plus που χρησιμοποιούμε έρχεται με μια ισχυρή διαμόρφωση επίσης. Βεβαιωθείτε ότι ο ελεγκτής σας είναι συνδεδεμένος, ανοίξτε το έργο παράδειγμα Configurator και εκτελέστε το. Θα λάβετε ένα μενού όπως αυτό:

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Κάντε κλικ στο όνομα του ελεγκτή σας και θα εμφανιστεί ένα πολύ μεγαλύτερο παράθυρο διαμόρφωσης.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Αυτό μπορεί να φαίνεται αρκετά αποθαρρυντικό, αλλά είναι σχεδιασμένο ώστε να είναι όσο το δυνατόν απλούστερο. Στην αριστερή πλευρά συμπληρώστε το πρώτο κλειδί με το όνομα που θέλετε ως μεταβλητή. Αυτή η μεταβλητή θα ελέγξει τη θέση του σερβο, οπότε θα την ονομάσω servoPos .

Στο πλαίσιο δίπλα του μπορείτε να δώσετε μια σύντομη περιγραφή αυτού που κάνει. Τώρα σηκώστε τον ελεγκτή σας και μετακινήστε το ραβδί που θέλετε να χρησιμοποιήσετε με το σέρβο σας. Ένας μικρός πειραματισμός δείχνει ότι ο δεξιός αντίχειρας αντιστοιχεί στο κιβώτιο περιστροφής X. Σύρετε μια γραμμή μεταξύ της μεταβλητής servoPos και αυτού του πλαισίου.

Τώρα πρέπει να αποθηκεύσουμε τη διαμόρφωσή μας ως αρχείο δεδομένων. Στο επάνω δεξιό μέρος του παραθύρου, συμπληρώστε το πεδίο Ρόλο συσκευής και το πεδίο Όνομα αρχείου .

Το όνομα αρχείου είναι σημαντικό, καθώς θα το χρησιμοποιείτε στον κώδικα σας. Το κρατώ απλό καλώντας το xbs . Κάντε κλικ στην επιλογή Επαλήθευση και κατόπιν στην επιλογή Αποθήκευση Αυτό γράφει ένα αρχείο με οδηγίες για τον ελεγκτή μας, το οποίο μπορούμε να χρησιμοποιήσουμε αργότερα.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Προετοιμασία του φακέλου προσαρμοσμένων σκίτσων

Ας δημιουργήσουμε το φάκελο εργασίας μας. Ανοίξτε ένα κενό σκίτσο επεξεργασίας και αποθηκεύστε το με όποιο όνομα θέλετε. Αυτό θα δημιουργήσει έναν κατάλογο για αυτό στην τοποθεσία αποθήκευσης.

Τώρα περιηγηθείτε στο φάκελο "Έγγραφα / Επεξεργασία / βιβλιοθήκες / GameControlPlus / examples / Configurator" και αντιγράψτε το φάκελο που φέρει τα δεδομένα . Αυτός ο φάκελος περιέχει το αρχείο διαμόρφωσης που μόλις δημιουργήσαμε. Πλοηγηθείτε στον κατάλογο του πρόσφατα αποθηκευμένου κενου σκίτσου σας και επικολλήστε τον φάκελο δεδομένων.

ρομπότ ελέγχου με ελεγκτή παιχνιδιών και arduino

Δημιουργία του προσαρμοσμένου σκίτσου

Τώρα όλα είναι στη θέση μας και μπορούμε να αρχίσουμε να κάνουμε ένα σκίτσο χρησιμοποιώντας τις δύο βιβλιοθήκες μας. Θα περάσουμε από αυτό το βήμα προς βήμα, αλλά μπορείτε να κατεβάσετε το πλήρες φάκελο σκίτσων και δεδομένων αν θέλετε να πηδήσετε μπροστά. Σημειώστε ότι ίσως χρειαστεί να τροποποιήσετε τον κώδικα ώστε να αντικατοπτρίζει τις θύρες COM του Arduino.

Ξεκινήστε εισάγοντας όλες τις βιβλιοθήκες που θα χρειαστούμε:

 import processing.serial.*; import net.java.games.input.*; import org.gamecontrolplus.*; import org.gamecontrolplus.gui.*; import cc.arduino.*; import org.firmata.*; 

Πρέπει επίσης να δηλώσουμε το ControlDevice, I / O και Arduino, μαζί με ένα float για να διατηρήσουμε τις αξίες από το thumbstick μας:

 ControlDevice cont; ControlIO control; Arduino arduino; float thumb; 

Η μέθοδος εγκατάστασης () δημιουργεί ένα μικρό παράθυρο, ένα στιγμιότυπο του ελεγκτή και αντιστοιχεί στη συσκευή με το αρχείο ρυθμίσεων. Εδώ είναι σημαντικό να έχουμε σωστό το όνομα αρχείου του αρχείου δεδομένων ρύθμισης παραμέτρων:

 void setup() { size(360, 200); control = ControlIO.getInstance(this); cont = control.getMatchedDevice("xbs"); if (cont == null) { println("not today chump"); // write better exit statements than me System.exit(-1); } // println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[2], 57600); arduino.pinMode(10, Arduino.SERVO); } 

Επίσης, ελέγξουμε αν δεν υπάρχει σχετικός ελεγκτής σε αυτό το στάδιο και εγκαταλείψτε το πρόγραμμα εάν χρειάζεται. Ενώ το παράθυρο που δημιουργήθηκε με το μέγεθος () δεν είναι απαραίτητο, θα μας δώσει κάποια ανατροφοδότηση αργότερα ως προς το αν παίρνουμε χρήσιμες αξίες από τον ελεγκτή μας. Αρχίζουμε επίσης το Arduino και πετάξτε εδώ όπως ακριβώς κάναμε κατά τη διάρκεια των δοκιμών.

Τώρα δημιουργούμε μια μικρή μέθοδο για να πιάσουμε την τιμή εισόδου από τον ελεγκτή μας και να το χαρτογραφήσουμε στις τιμές που θα μπορέσει να χρησιμοποιήσει ο σέρβο μας:

 public void getUserInput() { thumb = map(cont.getSlider("servoPos").getValue(), -1, 1, 0, 180); } 

Αυτή η μία γραμμή κώδικα χρησιμοποιεί το αρχείο δεδομένων μας για να πάρει το ονομασμένο control servoPos, το οποίο συνδέεται με το δεξί thumbstick του ελεγκτή και διαβάζει τιμές από αυτό. Κατόπιν χαρτογραφεί τις τιμές και αποθηκεύει την τιμή στη μεταβλητή float του αντίχειρα .

Αυτή τη στιγμή ο κώδικας δεν καλείται ποτέ, θα το διορθώσουμε τώρα.

 void draw() { getUserInput(); background(thumb, 100, 255); arduino.servoWrite(10, (int)thumb); } 

Η κλήρωση () είναι παρόμοια με τη μέθοδο βρόχου () στο IDE του Arduino. Κάθε καρέ, ονομάζει τη μέθοδο getUserInput () και ενημερώνει την τιμή του αντίχειρα . Χρησιμοποιεί αυτήν την τιμή για να αλλάξει την κόκκινη τιμή του φόντου () δίνοντάς μας μια οπτική ένδειξη της μεταβολής της τιμής. Στη συνέχεια, γράφει αυτή την τιμή στο σερβο χρησιμοποιώντας τη λειτουργία arduino.servoWrite () . Σημειώστε ότι πρέπει να χτυπήσουμε τον αντίχειρα ως ακέραια τιμή καθώς η συνάρτηση servoWrite παίρνει δύο ακέραιους αριθμούς (pin number και angle) ως τα επιχειρήματά της.

Ελέγξτε τον κωδικό σας για σφάλματα, αποθηκεύστε το και κάντε κλικ στην εκτέλεση. Μετά από μια μικρή καθυστέρηση στην αρχικοποίηση του Arduino, θα πρέπει να μοιάζει με αυτό:

Έλεγχος με ελεγκτή παιχνιδιών και Arduino: Τελειωμένο!

Το πρόγραμμα αυτό ήταν με πολλούς τρόπους αρκετά σε βάθος για τον άπειρο κωδικοποιητή Μάθετε με τα προγράμματα κωδικοποίησης: 9 Μαθήματα Udemy για τον αρχάριο προγραμματιστή Μάθετε με τα προγράμματα κωδικοποίησης: 9 μαθήματα Udemy για τον αρχάριο προγραμματιστή Η πραγματική δυσκολία είναι να βρείτε καλά μαθήματα προγραμματισμού και μαθήματα που όχι μόνο να σας διδάξει τις απαραίτητες δεξιότητες, αλλά να το κάνετε με πρακτικά έργα. Αυτό είναι όπου Udemy βήματα. Διαβάστε περισσότερα, παρά τις φανταστικές βιβλιοθήκες που είναι διαθέσιμες για να μας βοηθήσουν. Αυτό που αντιπροσωπεύει είναι ένας νέος τρόπος να σκεφτείτε τον έλεγχο των ρομπότ και οποιωνδήποτε άλλων συσκευών που δημιουργείτε.

Αυτό το έργο θα συνέβαινε απόλυτα με τον οδηγό μας για την κατασκευή ενός Laser Turret Pew Pew! Πώς να οικοδομήσουμε ένα λέιζερ πυργίσκων με ένα Pedu Pedu! Πώς να οικοδομήσουμε ένα λέιζερ πυργίσκων με ένα Arduino Εσύ βαρεθείς; Μπορεί επίσης να χτίσει έναν πυργίσκο λέιζερ. Διαβάστε περισσότερα, δίνοντάς σας πλήρη έλεγχο. Θα μπορούσατε να δημιουργήσετε ένα Piezo buzzer όπως στο Simple Arduino συναγερμό Πώς να κάνετε ένα απλό σύστημα συναγερμού Arduino Πώς να κάνετε ένα απλό σύστημα συναγερμού Arduino Ανιχνεύστε την κίνηση, στη συνέχεια, τρομάξτε τον εαυτό σας από έναν εισβολέα με έναν ψηλό ήχο συναγερμού και φώτα που αναβοσβήνουν. Μήπως διασκέδαζε αυτό; Φυσικά το κάνει. Αυτός είναι ο στόχος του σημερινού έργου Arduino, κατάλληλο ... Read More tutorial και χρησιμοποιήστε τον ελεγκτή σας για να αλλάξετε το βήμα του βομβητή ή το χρώμα των φώτων.

Ή θα μπορούσατε να φτιάξετε ένα τεράστιο ρομπότ και να αναλάβετε τη γη. Εφόσον είχατε ένα καλώδιο USB αρκετά μεγάλο χρονικό διάστημα!

In this article