Πίνακας περιεχομένων:

Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης: 5 βήματα (με εικόνες)
Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης: 5 βήματα (με εικόνες)

Βίντεο: Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης: 5 βήματα (με εικόνες)

Βίντεο: Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης: 5 βήματα (με εικόνες)
Βίντεο: UNCHAINED - #Bitcoin στις 48.000; Ή τα #Macro έχουν άλλη άποψη; CPI και FED 2024, Νοέμβριος
Anonim
Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης
Παιχνίδι γρήγορης αντίδρασης: Έκδοση απόστασης

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

Όπως όλα τα έργα Arduino, αυτό το παιχνίδι θα απαιτήσει πολλά ηλεκτρικά εξαρτήματα στο κύκλωμα Arduino. Τα κύρια εξαρτήματα, εκτός από την καλωδίωση και το ίδιο το Arduino, περιλαμβάνουν το breadboard, ένα σερβοκινητήρα, μια οθόνη LCD, ένα LED RGB και έναν αισθητήρα απόστασης.

Χρησιμοποιώντας το https://abra-electronics.com, η τιμή χωρίς τα καλώδια και το Arduino είναι $ 32,12 CAD.

Βήμα 1: Βήμα 1: Αισθητήρας απόστασης

Βήμα 1: Αισθητήρας απόστασης
Βήμα 1: Αισθητήρας απόστασης

Το πρώτο βήμα είναι να ρυθμίσετε τον υπερηχητικό αισθητήρα απόστασης στην σανίδα και να τον συνδέσετε στο Arduino. Η ακριβής θέση του αισθητήρα δεν έχει πραγματικά σημασία, αλλά ιδανικά είναι κοντά σε μια άκρη, ώστε να υπάρχει χώρος για τα άλλα εξαρτήματα, όπως φαίνεται στην παραπάνω εικόνα. Υπάρχουν τέσσερις ακίδες στον αισθητήρα. GND, VCC, TRIG και ECHO. Το GND και το VCC πρέπει να συνδεθούν στο έδαφος και στις ράγες ισχύος αντίστοιχα και να καλωδιωθούν στις άλλες δύο ακίδες σε δύο ακίδες του Arduino. Οι δύο ακίδες που χρησιμοποίησα ήταν 12 για ECHO και 11 για TRIG. Χρησιμοποιήστε δύο άλλα καλώδια για να τροφοδοτήσετε τη ράγα ισχύος και γειώστε τη ράγα γείωσης συνδέοντας τη ράγα ισχύος στον πείρο 5V και τη ράγα γείωσης σε έναν πείρο GND.

Βήμα 2: Βήμα 2: Servo Motor

Βήμα 2: Servo Motor
Βήμα 2: Servo Motor

Το επόμενο βήμα είναι η ρύθμιση του σερβοκινητήρα. Σε αυτό το έργο, ο σερβοκινητήρας λειτουργεί ως χρονοδιακόπτης. Θα ξεκινήσει από 1 βαθμό και κατά τη διάρκεια της περιόδου κατά την οποία ο χρήστης πρέπει να απομακρύνει τα χέρια του, θα περιστραφεί στους 180 μοίρες. Χρησιμοποίησα 2 δευτερόλεπτα όταν ο χρήστης μάθει πόσο μακριά πρέπει να απομακρύνει τα χέρια του, οπότε το σερβο περιστρέφεται 179 μοίρες σε διάστημα 2 δευτερολέπτων, περιστρέφεται σε σύντομα διαστήματα. Ο σερβοκινητήρας έχει τρία καλώδια. συνήθως ένα κίτρινο, ένα κόκκινο και ένα καφέ. Το κόκκινο μπαίνει στη ράγα ισχύος, η οποία είναι ήδη συνδεδεμένη σε 5V, και η καφέ πηγαίνει στη ράγα εδάφους που είναι ήδη συνδεδεμένη στο GND. Το τελικό καλώδιο συνδέεται σε έναν πείρο Arduino. Επέλεξα το pin #9 για αυτό. Στη συνέχεια, χρειάζεστε έναν πυκνωτή που συνδέει την ίδια ράγα με την οποία συνδέονται τα καλώδια τροφοδοσίας και γείωσης του σερβοκινητήρα, όπως φαίνεται στην παραπάνω εικόνα.

Βήμα 3: Βήμα 3: LED RGB

Βήμα 3: LED RGB
Βήμα 3: LED RGB

Η λειτουργία του LED σε αυτό είναι να λειτουργήσει ως κλίμακα για τη βαθμολογία. Όταν η βαθμολογία του παίκτη είναι γύρω στο 0, η λυχνία LED θα είναι λευκή και θα γίνει πιο κόκκινη αν η βαθμολογία του παίκτη μειωθεί και πράσινη αν ανέβει η βαθμολογία του παίκτη. Αυτό το LED έχει τέσσερα πόδια. ένα πόδι με κόκκινο φως, ένα πόδι με μπλε φως, ένα πόδι με πράσινο φως και μια κοινή κάθοδο που μοιράζεται μεταξύ των άλλων τριών ποδιών. Η κοινή κάθοδος, το μακρύτερο πόδι, είναι συνδεδεμένη στη ράγα ισχύος, ώστε να δέχεται 5 βολτ. Συνδέστε αντιστάσεις 330 ohm στα άλλα τρία έγχρωμα πόδια και συνδέστε τα άλλα άκρα αυτών των αντιστάσεων σε ψηφιακές ακίδες PWM στο Arduino. Αυτά που χρησιμοποίησα ήταν οι ψηφιακές ακίδες 3, 5 και 6 για τα κόκκινα, πράσινα και μπλε πόδια αντίστοιχα.

Βήμα 4: Βήμα 4: LCD

Βήμα 4: LCD
Βήμα 4: LCD

Το τελευταίο συστατικό είναι η οθόνη LCD, η οποία σημαίνει οθόνη υγρών κρυστάλλων. Ο σκοπός αυτού είναι να πει στον παίκτη την τρέχουσα βαθμολογία του καθώς και την απόσταση που χρειάζεται για να βάλει τα χέρια του μακριά από τον αισθητήρα. Υπάρχουν τέσσερις καρφίτσες. GND, VCC, SDA και SCL. Το GND και το VCC θα συνδεθούν στο έδαφος και στις ράγες ισχύος του breadboard αντίστοιχα. Ο πείρος SDA πρέπει να συνδεθεί στον αναλογικό πείρο Α4 και ο πείρος SCL πρέπει να συνδεθεί στον αναλογικό πείρο Α5. Σε αντίθεση με τα άλλα εξαρτήματα, πρέπει να συνδέσετε τις καρφίτσες SDA και SCL σε A4 και A5.

Βήμα 5: Βήμα 5: Ο Κώδικας

Τώρα που έχουμε συνδέσει όλα τα στοιχεία, μπορούμε να γράψουμε τον κώδικα. Το πρώτο μέρος του κώδικα είναι να εισαγάγουμε τις απαραίτητες βιβλιοθήκες και να δηλώσουμε τις μεταβλητές μας και σε ποιες καρφίτσες συνδέονται τα στοιχεία. Πρέπει να εισαγάγουμε τις βιβλιοθήκες Wire, LiquidCrystal_I2C και Servo για αυτόν τον κώδικα.

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

Servo myServo;

int const trigPin = 11;

int const echoPin = 12;

int redPin = 3;

int greenPin = 5;

int bluePin = 6;

βαθμολογία int = 0;

int tim = 500;

int ρεύμα = τυχαίο (8, 16); // τυχαία τιμή όπου ο χρήστης πρέπει να απομακρύνει το χέρι του από τον αισθητήρα

LiquidCrystal_I2C LCD (0x27, 16, 2); // Ρύθμιση LCD

Τώρα πρέπει να χρησιμοποιήσουμε το void setup () για να δηλώσουμε τους τύπους των καρφιτσών μας και να ρυθμίσουμε άλλα απαραίτητα στοιχεία.

void setup () {myServo.attach (9); Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); lcd.init (); lcd. backlight (); lcd.αρχή (16, 2); lcd.clear (); // Ρύθμιση LCD}

Τώρα πρέπει να ρυθμίσουμε τον κωδικό LED RGB χρησιμοποιώντας μια λειτουργία και PWM:

void setColor (int κόκκινο, int πράσινο, int μπλε) {

κόκκινο = 255 - κόκκινο?

πράσινο = 255 - πράσινο?

μπλε = 255 - μπλε?

analogWrite (redPin, κόκκινο);

analogWrite (greenPin, πράσινο);

analogWrite (bluePin, μπλε);

}

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

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

docs.google.com/document/d/1DufS0wuX0N6gpv…

Τέλος, πρέπει να κάνουμε τους πραγματικούς υπολογισμούς για να μετατρέψουμε τις τιμές του αισθητήρα υπερήχων σε ίντσες. Ο υπερηχητικός αισθητήρας απόστασης δεν μετρά άμεσα την απόσταση. απελευθερώνει ήχο και καταγράφει το χρόνο που χρειάζεται ο αισθητήρας για να πάρει τον ήχο πίσω από οποιοδήποτε αντικείμενο αναπηδά.

μεγάλα μικροδευτερόλεπταToInches (μεγάλα μικροδευτερόλεπτα) {

επιστροφή μικροδευτερολέπτων / 74 /2?

}

Τώρα συνδέουμε το ενσύρματο Arduino στον υπολογιστή με τον κωδικό, ρυθμίζουμε τις θύρες και το τρέχουμε! Υπάρχουν δύο τρόποι σε αυτό το παιχνίδι. Είτε μπορείτε να χρησιμοποιήσετε μόνο την οθόνη LCD, τον σερβοκινητήρα, τον αισθητήρα και το RGB LED και γνωρίζετε μόνο την απόσταση που πρέπει να έχετε από τον αισθητήρα, που είναι η πιο δύσκολη λειτουργία. Η ευκολότερη λειτουργία περιλαμβάνει τη χρήση της σειριακής οθόνης στα Εργαλεία> Σειριακή οθόνη, η οποία θα σας ενημερώνει κάθε δευτερόλεπτο για το πόσο είστε μακριά από τον αισθητήρα, ώστε να μπορείτε να κάνετε τις απαραίτητες προσαρμογές.

Ευχαριστώ για την ανάγνωση!

Συνιστάται: