- Απαιτούμενο υλικό
- Διάγραμμα κυκλώματος
- Ενότητα Joystick
- Κωδικός και επεξήγηση
- Έλεγχος LED με χρήση Joystick με Arduino
Το πρώτο πράγμα που έρχεται στο μυαλό μας ακούγοντας τη λέξη Joystick είναι ο ελεγκτής παιχνιδιών. Ναι, είναι ακριβώς το ίδιο και μπορεί να χρησιμοποιηθεί για σκοπούς παιχνιδιού. Εκτός από το gaming, έχει πολλές άλλες εφαρμογές σε ηλεκτρονικά είδη DIY. Αυτό το χειριστήριο δεν είναι παρά ένας συνδυασμός δύο ποτενσιόμετρων για το επίπεδο Χ και Υ αντίστοιχα. Διαβάζει την τάση μέσω του ποτενσιόμετρου και δίνει αναλογική τιμή στο Arduino και η αναλογική τιμή αλλάζει καθώς κινούμε τον άξονα χειριστηρίου (που είναι απλά ο δείκτης ποτενσιόμετρου).
Σε αυτό το κύκλωμα, συνδέουμε το Joystick με το Arduino απλά ελέγχοντας τέσσερα LED σύμφωνα με την κίνηση του Joystick. Έχουμε τοποθετήσει 4 LED με τέτοιο τρόπο ώστε να αντιπροσωπεύει την κατεύθυνση της κίνησης του άξονα χειριστηρίου. Αυτό το χειριστήριο διαθέτει επίσης ένα κουμπί που μπορεί να χρησιμοποιηθεί για διάφορους άλλους σκοπούς ή μπορεί να παραμείνει αδρανές. Ένα μονό LED είναι επίσης συνδεδεμένο στο διακόπτη του μοχλού χειριστηρίου, καθώς το κουμπί του μοχλού πιέζεται ότι το μόνο LED θα ανάψει.
Απαιτούμενο υλικό
- Arduino UNO
- Ενότητα Joystick
- LED-5
- Αντίσταση: 100ohm-3
- Σύνδεση καλωδίων
- Ψωμί
Διάγραμμα κυκλώματος
Ενότητα Joystick
Τα χειριστήρια διατίθενται σε διάφορα σχήματα και μεγέθη. Μια τυπική μονάδα Joystick φαίνεται στο παρακάτω σχήμα. Αυτή η μονάδα Joystick συνήθως παρέχει αναλογικές εξόδους και οι τάσεις εξόδου που παρέχονται από αυτήν τη μονάδα συνεχίζουν να αλλάζουν ανάλογα με την κατεύθυνση στην οποία την κινούμε. Και μπορούμε να πάρουμε την κατεύθυνση της κίνησης ερμηνεύοντας αυτές τις αλλαγές τάσης χρησιμοποιώντας κάποιον μικροελεγκτή. Προηγουμένως διασυνδέσαμε το Joystick με AVR και Raspberry Pi.
Αυτή η μονάδα χειριστηρίου έχει δύο άξονες όπως μπορείτε να δείτε. Είναι άξονας Χ και άξονας Υ. Κάθε άξονας του JOYSTICK είναι τοποθετημένος σε ποτενσιόμετρο ή δοχείο. Τα μεσαία σημεία αυτών των ποτ οδηγούνται ως Rx και Ry. Έτσι τα Rx και Ry είναι μεταβλητά σημεία σε αυτά τα pot. Όταν το Joystick είναι σε κατάσταση αναμονής, οι Rx και Ry λειτουργούν ως διαχωριστής τάσης.
Όταν το χειριστήριο κινείται κατά μήκος του οριζόντιου άξονα, η τάση στον πείρο Rx αλλάζει. Ομοίως, όταν μετακινείται κατά μήκος του κατακόρυφου άξονα, η τάση στον ακροδέκτη Ry αλλάζει. Έχουμε λοιπόν τέσσερις κατευθύνσεις του Joystick σε δύο εξόδους ADC. Όταν το ραβδί κινείται, η τάση σε κάθε πείρο πηγαίνει υψηλή ή χαμηλή ανάλογα με την κατεύθυνση.
Εδώ, συνδέουμε αυτή τη μονάδα Joystick με το Arduino UNO που συνοδεύεται από έναν ενσωματωμένο μηχανισμό ADC (Analog to Digital Converter), όπως φαίνεται στο βίντεο στο τέλος. Μάθετε περισσότερα σχετικά με τη χρήση του ADC του Arduino εδώ.
Κωδικός και επεξήγηση
Ο πλήρης κωδικός Arduino αναφέρεται στο τέλος.
Στον παρακάτω κώδικα, ορίσαμε τον άξονα X και Y της μονάδας Joystick για τον αναλογικό πείρο A0 και A1 αντίστοιχα.
# καθορισμός χαράςX A0 # καθορισμός χαράςY A1
Τώρα, στον παρακάτω κώδικα, αρχικοποιούμε το PIN 2 του Arduino για το διακόπτη (μπουτόν) της μονάδας Joystick και η τιμή του κουμπιού και του κουμπιού1 θα είναι 0 στην αρχή.
κουμπί int = 2; int buttonState = 0; int buttonState1 = 0;
Στον παρακάτω κώδικα, ρυθμίζουμε το ρυθμό baud στο 9600 και ορίζουμε το Pin 7 ως έναν πείρο εξόδου και τον πείρο του κουμπιού ως Pin εισαγωγής. Αρχικά, ο πείρος του κουμπιού θα παραμείνει ψηλό έως ότου πατηθεί ο διακόπτης
άκυρη ρύθμιση () {pinMode (7, OUTPUT); pinMode (κουμπί, ΕΙΣΟΔΟΣ); digitalWrite (κουμπί, ΥΨΗΛΟ); Serial.begin (9600); }
Εδώ, σε αυτόν τον κώδικα διαβάζουμε τις τιμές από τον αναλογικό πείρο A0 και A1 και εκτυπώνουμε σειριακά.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Οι συνθήκες, για την ενεργοποίηση και απενεργοποίηση του LED σύμφωνα με την κίνηση του άξονα Joystick, καθορίζονται στον παρακάτω κώδικα. Εδώ παίρνουμε απλώς αναλογικές τιμές τάσης στους ακροδέκτες A0 και A1 του Arduino. Αυτές οι αναλογικές τιμές θα αλλάξουν καθώς κινούμε το χειριστήριο και το LED θα ανάβει ανάλογα με την κίνηση του χειριστηρίου.
Αυτή η συνθήκη αφορά την κίνηση του άξονα Joystick κατά την άξονα -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, ΥΨΗΛΟΣ); } αλλιώς {digitalWrite (10, LOW);}
Αυτή η προϋπόθεση αφορά την κίνηση του άξονα Joystick σε άξονα -Χ
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, ΥΨΗΛΟΣ); } αλλιώς {digitalWrite (11, LOW);}
Αυτή η συνθήκη αφορά την κίνηση του άξονα Joystick σε κατεύθυνση άξονα + X
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, ΥΨΗΛΗ); } αλλιώς {digitalWrite (9, LOW);}
Αυτή η συνθήκη είναι για την κίνηση του άξονα Joystick σε κατεύθυνση άξονα + Υ
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, ΥΨΗΛΗ); } αλλιώς {digitalWrite (8, LOW);}
Όταν κινούμε τον άξονα του μοχλού χειριστή διαγώνια τότε έρχεται μία θέση όταν η αναλογική τιμή των Χ και Υ θα είναι 1023 και 1023 αντίστοιχα, και οι δύο ακίδες LED 9 και Pin 8 θα ανάβουν. Επειδή ικανοποιεί την κατάσταση των LED. Έτσι, για την αφαίρεση αυτού του αναντιστοιχίας, έχουμε δώσει μια προϋπόθεση ότι εάν η τιμή του (X, Y) είναι (1023, 1023), τότε και τα δύο LED παραμένουν σε κατάσταση OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, ΧΑΜΗΛΗ); }
Η παρακάτω συνθήκη χρησιμοποιείται για να λειτουργήσει το LED που συνδέεται με το διακόπτη πίεσης. Καθώς πατάμε το διακόπτη Joystick, η λυχνία LED θα ανάψει και θα ασφαλίσει μέχρι να απελευθερωθεί το κουμπί Είναι προαιρετικό να χρησιμοποιήσετε το διακόπτη Push button στη μονάδα Joystick.
εάν (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, ΥΨΗΛΟ); } αλλιώς {digitalWrite (7, LOW);}
Έλεγχος LED με χρήση Joystick με Arduino
Αφού ανεβάσετε τον κωδικό στο Arduino και συνδέσετε τα εξαρτήματα σύμφωνα με το διάγραμμα κυκλώματος, μπορούμε τώρα να ελέγξουμε τις λυχνίες LED με Joystick. Μπορούμε να ανάψουμε τα τέσσερα LED σε κάθε κατεύθυνση σύμφωνα με την κίνηση του άξονα Joystick. Το Joystick έχει δύο ποτενσιόμετρα μέσα του, το ένα για κίνηση άξονα Χ και το άλλο για κίνηση άξονα Υ. Κάθε ποτενσιόμετρο λαμβάνει 5v από το Arduino. Έτσι καθώς κινούμε το χειριστήριο, η τιμή τάσης θα αλλάξει και η αναλογική τιμή στις αναλογικές ακίδες A0 και A1 θα αλλάξουν επίσης.
Έτσι, από το Arduino, διαβάζουμε την αναλογική τιμή για τον άξονα X και Y και ανάβουμε τα LED σύμφωνα με την κίνηση του άξονα του Joystick. Χρησιμοποιείται ένας διακόπτης μπουτόν στη μονάδα Joystick για τον έλεγχο της ενιαίας λυχνίας LED στο κύκλωμα όπως φαίνεται στο παρακάτω βίντεο.