- Απαιτούμενα στοιχεία
- Arduino Leonardo
- Μονάδα Joystick Dual Axis XY
- Διάγραμμα κυκλώματος
- Κωδικός και εξήγηση εργασίας
Προηγουμένως διασυνδέσαμε το Joystick με το Arduino UNO για να κατανοήσουμε πώς λειτουργεί και ελέγχαμε τέσσερα LED στα αριστερά, δεξιά, πάνω και κάτω κίνησή του. Σε αυτό το έργο θα χρησιμοποιήσουμε το ίδιο Joystick με το Gamepad ή το χειριστήριο παιχνιδιών για να παίξουμε οποιαδήποτε παιχνίδια στον υπολογιστή που απαιτούν κίνηση αριστερά, δεξιά, πάνω και κάτω. Για να παίξετε παιχνίδια που απαιτούν περισσότερες επιλογές ελέγχου, μπορούν να χρησιμοποιηθούν δύο ή περισσότερα χειριστήρια. Εδώ θα χρησιμοποιήσουμε το Arduino Leonardo για τη διασύνδεση του Joystick ως ελεγκτή παιχνιδιών. Το Arduino Leonardo έχει το πλεονέκτημα έναντι του Uno ότι μπορούμε να εγκαταστήσουμε προγράμματα οδήγησης USB σε αυτό και μπορεί να εντοπιστεί ως ποντίκι, πληκτρολόγιο ή χειριστήριο μέσω υπολογιστή όταν είναι συνδεδεμένο.
Απαιτούμενα στοιχεία
- Arduino Leonardo
- Μονάδα Joystick Dual Axis XY
- Arduino IDE
- Σύνδεση καλωδίων
Arduino Leonardo
Για αυτό το έργο χρησιμοποιούμε το Arduino Leonardo, είναι ένας πίνακας μικροελεγκτών που βασίζεται στο ATmega32u4. Διαθέτει 20 ψηφιακούς ακροδέκτες εισόδου / εξόδου (εκ των οποίων οι 7 μπορούν να χρησιμοποιηθούν ως έξοδοι PWM και 12 ως αναλογικές είσοδοι), ένας ταλαντωτής κρυστάλλου 16 MHz, μια σύνδεση micro USB, μια υποδοχή τροφοδοσίας, μια κεφαλίδα ICSP και ένα κουμπί επαναφοράς. Περιέχει όλα όσα χρειάζονται για την υποστήριξη του μικροελεγκτή. απλώς συνδέστε τον σε έναν υπολογιστή με καλώδιο USB ή τροφοδοτήστε τον με έναν προσαρμογέα AC-to-DC ή μπαταρία για να ξεκινήσετε.
Το Leonardo διαφέρει από όλους τους προηγούμενους πίνακες, καθώς το ATmega32u4 διαθέτει ενσωματωμένη επικοινωνία USB, εξαλείφοντας την ανάγκη για δευτερεύοντα επεξεργαστή. Αυτό επιτρέπει στο Leonardo να εμφανίζεται σε έναν συνδεδεμένο υπολογιστή ως ποντίκι και πληκτρολόγιο, εκτός από μια εικονική (CDC) σειριακή / θύρα COM.
Τεχνικές προδιαγραφές
Μικροελεγκτής | ATmega32u4 |
Τάση λειτουργίας | 5V |
Τάση εισόδου (συνιστάται) | 7-12V |
Τάση εισόδου (όρια) | 6-20V |
Ψηφιακές καρφίτσες εισόδου / εξόδου | 20 |
Κανάλια PWM | 7 |
Αναλογικά κανάλια εισόδου | 12 |
DC ρεύμα ανά καρφίτσα I / O | 40 mA |
Ρεύμα DC για καρφίτσα 3.3V | 50 mA |
Μνήμη Flash | 32 KB (ATmega32u4) εκ των οποίων 4 KB χρησιμοποιούνται από το bootloader |
SRAM | 2,5 KB (ATmega32u4) |
EEPROM | 1 KB (ATmega32u4) |
Ταχύτητα ρολογιού | 16 MHz |
Μήκος | 68,6 mm |
Πλάτος | 53,3 χιλ |
Βάρος | 20 γρ |
Αναφορά PIN Out
Μονάδα Joystick Dual Axis XY
Τα χειριστήρια διατίθενται σε διάφορα σχήματα και μεγέθη. Μια τυπική μονάδα Joystick φαίνεται στο παρακάτω σχήμα. Αυτή η μονάδα Joystick συνήθως παρέχει αναλογικές εξόδους και οι τάσεις εξόδου που παρέχονται από αυτήν τη μονάδα συνεχίζουν να αλλάζουν ανάλογα με την κατεύθυνση στην οποία την κινούμε. Και μπορούμε να πάρουμε την κατεύθυνση της κίνησης ερμηνεύοντας αυτές τις αλλαγές τάσης χρησιμοποιώντας κάποιον μικροελεγκτή. Προηγουμένως διασυνδέσαμε το joystick με διαφορετικούς μικροελεγκτές:
- Διασύνδεση Joystick με τον Arduino
- Διασύνδεση Joystick με Raspberry Pi
- Διεπαφή Joystick με μικροελεγκτή PIC
- Διασύνδεση Joystick με μικροελεγκτή AVR
Αυτή η μονάδα χειριστηρίου έχει δύο άξονες όπως μπορείτε να δείτε. Είναι άξονας Χ και άξονας Υ. Κάθε άξονας του JOY STICK είναι τοποθετημένος σε ποτενσιόμετρο ή δοχείο. Τα μεσαία σημεία αυτών των ποτ απομακρύνονται ως Rx και Ry. Έτσι τα Rx και Ry είναι μεταβλητά σημεία σε αυτά τα pot. Όταν το Joystick είναι σε κατάσταση αναμονής, οι Rx και Ry ενεργούν ως διαχωριστής τάσης.
Όταν το χειριστήριο κινείται κατά μήκος του οριζόντιου άξονα, η τάση στον πείρο Rx αλλάζει. Ομοίως, όταν μετακινείται κατά μήκος του κατακόρυφου άξονα, η τάση στον ακροδέκτη Ry αλλάζει. Έχουμε λοιπόν τέσσερις κατευθύνσεις του Joystick σε δύο εξόδους ADC. Όταν το ραβδί κινείται, η τάση σε κάθε πείρο πηγαίνει υψηλή ή χαμηλή ανάλογα με την κατεύθυνση.
Διάγραμμα κυκλώματος
Αυτός ο ελεγκτής παιχνιδιών Arduino Joystick απαιτεί συνδέσεις μεταξύ του Arduino και του Joystick ως εξής:
Κωδικός και εξήγηση εργασίας
Ο πλήρης κώδικας με ένα βίντεο επίδειξης δίνεται στο τέλος. Εδώ εξηγούμε λίγο σημαντικό μέρος του.
Πρώτον, πρέπει να προετοιμάσουμε τη βιβλιοθήκη πληκτρολογίων
#περιλαμβάνω
Στη συνέχεια στον παρακάτω κώδικα, έχουμε αρχικοποιήσει τον άξονα X και Y της μονάδας Joystick για τους αναλογικούς ακροδέκτες A0 και A1 αντίστοιχα.
const int X_pin και const int Y_pin αντίστοιχα
Η αναλογική τιμή του πείρου VRX διαβάζεται και αν η τιμή είναι 1023 τότε δίνεται η εντολή για "επάνω" και εάν η τιμή είναι 0, τότε δίνεται η εντολή για "κάτω".
Παρομοίως, διαβάζεται η αναλογική τιμή του πείρου VRY και αν η τιμή είναι 1023 τότε δίνεται η εντολή για «δεξιά» και εάν η τιμή είναι 0 τότε δίνεται η εντολή για «αριστερά».
Το Joystick έχει επίσης ένα κουμπί στο πάνω μέρος, οπότε αυτό το κουμπί (SW) διαβάζεται επίσης και εάν πατηθεί το κουμπί, η τιμή θα είναι 0 τότε δίνεται η εντολή "enter".
Τέλος, γράψτε τον κωδικό στο Arduino και συνδέστε το Arduino με υπολογιστή.
Στη συνέχεια, ελέγξτε τις « Συσκευές και εκτυπωτές» στον πίνακα ελέγχου σας, θα μπορείτε να δείτε το « Arduino Leonardo» στην ενότητα συσκευών όπως φαίνεται στην παρακάτω εικόνα. Τώρα είστε έτοιμοι να παίξετε με το χειριστήριο.
Μπορούμε να ελέγξουμε τα στοιχεία ελέγχου παιχνιδιού χρησιμοποιώντας αυτό το Joystick. Το Joystick έχει δύο ποτενσιόμετρα μέσα του, το ένα για κίνηση άξονα Χ και ένα άλλο για κίνηση άξονα Υ. Κάθε ποτενσιόμετρο παίρνει 5v από το Arduino. Έτσι καθώς κινούμε το χειριστήριο, η τιμή τάσης θα αλλάξει και η αναλογική τιμή στις αναλογικές ακίδες A0 και A1 θα αλλάξουν επίσης. Έτσι το χειριστήριο θα λειτουργήσει ως gamepad.
Έτσι λοιπόν, ένα κανονικό Joystick μπορεί να μετατραπεί σε Game Controller χρησιμοποιώντας το Arduino Leonardo και μπορεί να χρησιμοποιηθεί για να παίξετε παιχνίδια με όλα τα χειριστήρια για να μετακινηθείτε αριστερά, δεξιά, πάνω και κάτω. Όπως ειπώθηκε στο ακουστικό περισσότερα από ένα Joystick μπορούν να διασυνδεθούν για να λάβουν περισσότερα στοιχεία ελέγχου εκτός από αυτές τις βασικές τέσσερις λειτουργίες.