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

Arduino και Touchpad Tic Tac Toe: 8 βήματα (με εικόνες)
Arduino και Touchpad Tic Tac Toe: 8 βήματα (με εικόνες)

Βίντεο: Arduino και Touchpad Tic Tac Toe: 8 βήματα (με εικόνες)

Βίντεο: Arduino και Touchpad Tic Tac Toe: 8 βήματα (με εικόνες)
Βίντεο: Jog for mach3 : XPT2046 touch controler 2024, Σεπτέμβριος
Anonim
Arduino και Touchpad Tic Tac Toe
Arduino και Touchpad Tic Tac Toe

Or, μια άσκηση για πολυπλεξία εισόδου και εξόδου και εργασία με bits. Και μια υποβολή για τον διαγωνισμό Arduino.

Πρόκειται για μια εφαρμογή ενός παιχνιδιού tic tac toe χρησιμοποιώντας μια συστοιχία 3x3 χρωματιστών LED για οθόνη, μια απλή αντίσταση αφής και ένα Arduino για να τα συνδέσετε όλα μαζί. Για να δείτε πώς λειτουργεί, δείτε το βίντεο: Τι απαιτεί αυτό το έργο: Μέρη και αναλώσιμα Ενός πίνακα (ή πίνακας ταινιών) Εννέα χρωματιστές λυχνίες LED, κοινή κάθοδος Εννέα όμοιες αντιστάσεις, στην περιοχή 100-220 ohm Έξι ίδιες αντιστάσεις, στο 10kohm - 500kohm σειράς Ένας πόλος, διπλός διακόπτης ρίψης Μια δέσμη ακίδων κεφαλής Ένα μάτσο ηλεκτρικό σύρμα Ένα μικρό τετράγωνο φύλλο διαφανούς ακρυλικού, thick 1 mm πάχος, 8 cm στο πλάι Διαφανής κολλητική ταινία Heatshrinks (προαιρετικά) Όλα τα παραπάνω είναι αρκετά συνηθισμένα αντικείμενα, το συνολικό κόστος δεν πρέπει να υπερβαίνει τα 20 δολάρια ΗΠΑ. Εγκατάσταση εργαλείων One Arduino (Arduino Duemilanove, Arduino IDE, υπολογιστής, καλώδιο USB) Συνηθισμένα ηλεκτρικά εργαλεία (πολύμετρο, πιστόλι συγκόλλησης, καλώδια, κόπτες σύρματος) Όλα όσα σχετίζονται με το Arduino μπορούν να βρέθηκε στο https://www.arduino.cc. Συνεχίστε με την κατασκευή!

Βήμα 1: Καλωδίωση της μήτρας LED

Καλωδίωση της μήτρας LED
Καλωδίωση της μήτρας LED
Καλωδίωση της μήτρας LED
Καλωδίωση της μήτρας LED

Για να ανάψει ένα LED, πρέπει να συνδεθούν και οι δύο αγωγοί του. Αν αφιερώναμε ένα ζευγάρι καρφίτσες σε κάθε μία από τις 18 λυχνίες LED (9 κόκκινες, 9 πράσινες), γρήγορα θα είχαμε ξεμείνει από καρφίτσες στο Arduino. Ωστόσο, με την πολυπλεξία, θα είμαστε σε θέση να αντιμετωπίσουμε όλα τα LED με μόλις 9 ακίδες! Για να γίνει αυτό, τα LED συνδέονται με εγκάρσια γραμμή, όπως φαίνεται στο πρώτο σχήμα. Οι λυχνίες LED ομαδοποιούνται σε στήλες τριών και οι κάθοδοί τους ομαδοποιούνται σε σειρές έξι. Ορίζοντας μια συγκεκριμένη γραμμή ανόδου ψηλά και μια συγκεκριμένη γραμμή καθόδου χαμηλά και έχοντας υψηλή σύνθετη αντίσταση σε όλες τις άλλες γραμμές ανόδου και καθόδου, μπορούμε επιλέξτε ποια λυχνία LED θέλουμε να ανάψει, καθώς υπάρχει μόνο μία πιθανή διαδρομή που μπορεί να ακολουθήσει το ρεύμα. Για παράδειγμα, στο δεύτερο σχήμα, ρυθμίζοντας την πράσινη άνοδο 1 γραμμή ψηλά και την κάθοδο 1 χαμηλά, ανάβει το κάτω αριστερό πράσινο LED Το Η τρέχουσα διαδρομή σε αυτήν την περίπτωση εμφανίζεται με μπλε χρώμα. Αλλά τι γίνεται αν θέλετε να ανάψετε περισσότερες από μία λυχνίες LED σε διαφορετικές γραμμές; Θα χρησιμοποιήσουμε την επιμονή του οράματος για να το πετύχουμε. Επιλέγοντας πολύ γρήγορα ζεύγη γραμμών LED, δημιουργεί την ψευδαίσθηση ότι όλες οι επιλεγμένες λυχνίες LED ανάβουν ταυτόχρονα.

Βήμα 2: Διάταξη μήτρας LED

Διάταξη μήτρας LED
Διάταξη μήτρας LED
Διάταξη μήτρας LED
Διάταξη μήτρας LED

Το παρακάτω διάγραμμα κυκλώματος δείχνει πώς συνδέονται φυσικά τα LED (G1-G9: πράσινα LED, R1-R9: κόκκινα LED). Αυτό το διάγραμμα είναι για μονές κόκκινες και πράσινες λυχνίες LED, εάν χρησιμοποιείτε δίχρωμες κοινές κόκκινες/πράσινες λυχνίες LED, υπάρχει μόνο ένα σκέλος καθόδου ανά ζεύγος κόκκινου/πράσινου που πρέπει να συνδέσετε. Οι κόκκινες και πράσινες γραμμές ανόδου μπαίνουν στις ακίδες PWM του Arduino (καρφίτσες 3, 5, 6, 9, 10, 11 στο Duemilanove), έτσι ώστε να έχουμε αποτελέσματα όπως το ξεθώριασμα αργότερα. Οι γραμμές καθόδου μπαίνουν στους ακροδέκτες 4, 7 και 8. Κάθε γραμμή καθόδου και ανόδου έχει αντιστάσεις 100 ohm για προστασία.

Βήμα 3: Αντιμετώπιση της μήτρας LED

Για τον κώδικα tic tac toe, θα πρέπει να μπορούμε να αποθηκεύσουμε τις ακόλουθες πληροφορίες σχετικά με τις λυχνίες LED: - είτε μια λυχνία LED είναι αναμμένη είτε όχι - αν είναι αναμμένη, είτε είναι κόκκινη είτε πράσινη. Ένας τρόπος για να το κάνετε αυτό είναι να αποθηκεύσετε την κατάσταση σε έναν πίνακα 9 κελιών, χρησιμοποιώντας τρία ψηφία για να αντιπροσωπεύσει την κατάσταση (0 = απενεργοποιημένο, 1 = κόκκινο ενεργοποιημένο, 2 = πράσινο ενεργοποιημένο). Κάθε φορά που πρέπει να ελέγχουμε τις καταστάσεις της λυχνίας LED, για παράδειγμα, για να ελέγξουμε εάν υπάρχει συνθήκη νίκης, θα πρέπει να κάνουμε κύκλο στον πίνακα. Αυτή είναι μια εφαρμόσιμη μέθοδος, αλλά μάλλον ακατάστατη. Μια πιο εξορθολογισμένη μέθοδος θα ήταν η χρήση δύο ομάδων εννέα δυαδικών ψηφίων. Η πρώτη ομάδα εννέα δυαδικών ψηφίων αποθηκεύει την κατάσταση ενεργοποίησης-απενεργοποίησης των LED και η δεύτερη ομάδα εννέα δυαδικών ψηφίων αποθηκεύει το χρώμα. Στη συνέχεια, ο χειρισμός των καταστάσεων LED γίνεται απλώς θέμα αριθμητικής και μετατόπισης. Εδώ είναι ένα δουλεμένο παράδειγμα. Ας υποθέσουμε ότι σχεδιάζουμε γραφικά το πλέγμα tic tac toe και χρησιμοποιούμε πρώτα 1s και 0s για να αναπαραστήσουμε την κατάσταση on-off (1 είναι ενεργοποιημένο, 0 είναι απενεργοποιημένο): 000 000 = μήτρα με κάτω αριστερή λυχνία LED αναμμένη 100 100 010 = μήτρα με διαγώνιο Οι λυχνίες LED ανάβουν 001 Εάν απαριθμήσουμε τα κελιά από κάτω αριστερά, μπορούμε να γράψουμε τις παραπάνω αναπαραστάσεις ως μια σειρά δυαδικών ψηφίων. Στην πρώτη περίπτωση, αυτό θα ήταν 100000000, και στη δεύτερη περίπτωση, θα ήταν 001010100. Αν τα σκεφτούμε ως δυαδικές αναπαραστάσεις, τότε κάθε σειρά δυαδικών ψηφίων μπορεί να συμπυκνωθεί σε έναν μόνο αριθμό (256 στην πρώτη περίπτωση, 84 στη δεύτερη περίπτωση). Έτσι, αντί να χρησιμοποιούμε έναν πίνακα για να αποθηκεύσουμε την κατάσταση του πίνακα, μπορούμε απλά να χρησιμοποιήσουμε έναν μόνο αριθμό! Ομοίως, μπορούμε να αναπαραστήσουμε το χρώμα της λυχνίας LED με τον ίδιο τρόπο (1 είναι κόκκινο, 0 είναι πράσινο). Ας υποθέσουμε πρώτα ότι όλες οι λυχνίες LED είναι αναμμένες (οπότε η κατάσταση ενεργοποίησης-απενεργοποίησης αντιπροσωπεύεται από το 511). Ο παρακάτω πίνακας θα αντιπροσωπεύει τη χρωματική κατάσταση των LED: 010 πράσινο, κόκκινο, πράσινο 101 κόκκινο, πράσινο, κόκκινο 010 πράσινο, κόκκινο, πράσινο πρώτα στην κατάσταση ενεργοποίησης-απενεργοποίησης και έπειτα στην κατάσταση χρώματος. Για παράδειγμα, ας υποθέσουμε ότι η κατάσταση απενεργοποίησης είναι 100100100 και η κατάσταση χρώματος είναι 010101010. Ακολουθεί ο αλγόριθμός μας για τον φωτισμό της μήτρας LED: Βήμα 1. Κάντε μια δυαδική προσθήκη της κατάστασης απενεργοποίησης με ένα δυαδικό 1 (δηλ. Bit συγκάλυψη). Βήμα 2. Εάν είναι αλήθεια, το LED ανάβει. Κάντε τώρα μια δυαδική προσθήκη της κατάστασης χρώματος με ένα δυαδικό 1. Βήμα 3. Εάν είναι αλήθεια, ανάψτε το κόκκινο LED. Εάν είναι ψευδές, ανάψτε το πράσινο LED. Βήμα 4. Μετακινήστε τόσο την κατάσταση ενεργοποίησης όσο και την κατάσταση χρώματος, ένα bit προς τα δεξιά (δηλαδή μετατόπιση bit). Βήμα 5. Επαναλάβετε τα βήματα 1 - 4 μέχρι να διαβαστούν και τα εννέα bit. Σημειώστε ότι συμπληρώνουμε το πλέγμα προς τα πίσω - ξεκινάμε με το κελί 9 και μετά συνεχίζουμε προς τα κάτω στο κελί 1. Επίσης, οι καταστάσεις ενεργοποίησης -απενεργοποίησης και χρώματος αποθηκεύονται ως ανυπόγραφο ακέραιο τύπο (λέξη) αντί για υπογεγραμμένο ακέραιο τύπο. Αυτό συμβαίνει επειδή σε μικρή μετατόπιση, αν δεν είμαστε προσεκτικοί, μπορεί να αλλάξουμε κατά λάθος το πρόσημο της μεταβλητής. Επισυνάπτεται ο κωδικός φωτισμού της μήτρας LED.

Βήμα 4: Κατασκευή του Touch Pad

Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad
Κατασκευή του Touch Pad

Το touchpad είναι κατασκευασμένο από φύλλο λεπτού ακρυλικού, αρκετά μεγάλο για να επικαλύπτεται πάνω στη μήτρα LED. Στη συνέχεια, κολλήστε τα καλώδια σειράς και στήλης στο ακρυλικό φύλλο, χρησιμοποιώντας διαφανή ταινία. Η διαφανής ταινία χρησιμοποιείται επίσης ως μονωτικό διαχωριστικό μεταξύ των καλωδίων, στις διασταυρώσεις. Βεβαιωθείτε ότι χρησιμοποιείτε καθαρά εργαλεία, για να αποτρέψετε τη λιπαρότητα των δακτύλων από την κολλώδη πλευρά της ταινίας. Οι λεκέδες δακτυλικών αποτυπωμάτων όχι μόνο φαίνονται άσχημες, αλλά κάνουν την ταινία λιγότερο κολλώδη. Κόψτε το ένα άκρο κάθε γραμμής και κολλήστε το άλλο άκρο σε ένα μακρύτερο σύρμα. Συγκολλήστε μια αντίσταση σε ευθεία γραμμή με τα καλώδια, πριν τη συγκόλληση στους συνδετήρες. Οι αντιστάσεις που χρησιμοποιούνται εδώ είναι 674k, αλλά οποιαδήποτε τιμή μεταξύ 10k και 1M θα πρέπει να είναι καλή. Οι συνδέσεις με το Arduino γίνονται χρησιμοποιώντας τους 6 αναλογικούς πείρους, με τους πείρους 14-16 συνδεδεμένους στις σειρές του πλέγματος καλωδίων και τους πείρους 17-19 συνδεδεμένους με οι στήλες.

Βήμα 5: Το Touch Pad - Πώς Λειτουργεί

Το Touch Pad - Πώς Λειτουργεί
Το Touch Pad - Πώς Λειτουργεί
Το Touch Pad - Πώς Λειτουργεί
Το Touch Pad - Πώς Λειτουργεί

Ακριβώς όπως χρησιμοποιήσαμε έναν πολυπλέκτη εγκάρσιας γραμμής για τη δημιουργία μιας μήτρας LED με ελάχιστες ακίδες, μπορούμε να χρησιμοποιήσουμε έναν παρόμοιο πολυπλέκτη εγκάρσιας γραμμής για τη ρύθμιση μιας συστοιχίας αισθητήρων αφής, την οποία στη συνέχεια μπορούμε να χρησιμοποιήσουμε για την ενεργοποίηση των LED. Η ιδέα για αυτό το touch pad είναι απλή. Πρόκειται ουσιαστικά για ένα συρμάτινο πλέγμα, με τρία γυμνά σύρματα που τρέχουν σε σειρές και τρία γυμνά σύρματα που τρέχουν σε στήλες πάνω από τις σειρές. Σε κάθε σημείο τομής υπάρχει ένα μικρό τετράγωνο μόνωσης που εμποδίζει τα δύο σύρματα να αγγίξουν. Ένα δάχτυλο που αγγίζει τη διασταύρωση θα έρθει σε επαφή και με τα δύο σύρματα, με αποτέλεσμα μια τεράστια, αλλά πεπερασμένη αντίσταση μεταξύ των δύο καλωδίων. Επομένως, ένα μικρό ρεύμα, αλλά ανιχνεύσιμο, μπορεί να γίνει να ρέει από το ένα σύρμα στο άλλο, μέσω του δακτύλου. Για να προσδιοριστεί ποια διασταύρωση πατήθηκε, χρησιμοποιήθηκε η ακόλουθη μέθοδος: Βήμα 1: Ρυθμίστε όλες τις γραμμές της στήλης στο OUTPUT LOW. Βήμα 2: Ρυθμίστε τις γραμμές γραμμής σε INPUT, με τα εσωτερικά τραβήγματα ενεργοποιημένα. Βήμα 3: Πάρτε μια αναλογική ανάγνωση σε κάθε γραμμή σειράς έως ότου η τιμή πέσει κάτω από ένα δεδομένο όριο. Αυτό σας λέει σε ποια σειρά είναι η πατημένη διασταύρωση. Βήμα 4: Επαναλάβετε τα βήματα 1-3, αλλά τώρα με τις στήλες ως εισόδους και τις γραμμές ως εξόδους. Αυτό σας λέει ποια στήλη είναι η πατημένη διασταύρωση. Για την ελαχιστοποίηση των επιπτώσεων του θορύβου, λαμβάνεται ένας αριθμός μετρήσεων και στη συνέχεια υπολογίζεται ο μέσος όρος. Το μέσο αποτέλεσμα στη συνέχεια συγκρίνεται με ένα όριο. Δεδομένου ότι αυτή η μέθοδος ελέγχει μόνο ένα όριο, δεν είναι κατάλληλη για τον εντοπισμό ταυτόχρονων πιέσεων. Ωστόσο, δεδομένου ότι το tic tac toe προχωρά με τη σειρά, η ανάγνωση ενός μόνο πρέσας είναι αρκετή. Επισυνάπτεται ένα σκίτσο που απεικονίζει τον τρόπο λειτουργίας της επιφάνειας αφής. Όπως και με τη μήτρα LED, τα bits χρησιμοποιούνται για να αναπαραστήσουν ποια διασταύρωση πιέστηκε.

Βήμα 6: Συνδυάζοντας τα πάντα μαζί

Βάζοντας τα πάντα μαζί
Βάζοντας τα πάντα μαζί

Τώρα που όλα τα επιμέρους εξαρτήματα έχουν τελειώσει, ήρθε η ώρα να τα συνδυάσετε όλα. Επικαλύψτε το πλέγμα καλωδίων στη μήτρα LED. Mayσως χρειαστεί να αναδιατάξετε τις αρίθμηση των ακίδων στον κώδικα μήτρας LED για να συγχρονιστεί με τον αισθητήρα πλέγματος καλωδίων. Ασφαλίστε το πλέγμα σύρματος στη θέση του με συνδετήρες ή κόλλες της επιλογής σας και κολλήστε σε έναν ωραίο πίνακα. Προσθέστε έναν διακόπτη μεταξύ του πείρου 12 και της γείωσης του Arduino. Αυτός ο διακόπτης είναι για εναλλαγή μεταξύ λειτουργίας 2 παικτών και λειτουργίας 1 παίκτη (έναντι του μικροελεγκτή).

Βήμα 7: Προγραμματισμός Tic Tac Toe

Επισυνάπτεται ο κώδικας για το παιχνίδι. Ας αναλύσουμε πρώτα το παιχνίδι tic tac toe στα διάφορα του βήματα, σε λειτουργία δύο παικτών: Βήμα 1: Ο παίκτης Α επιλέγει ένα μη γεμάτο κελί αγγίζοντας μια διασταύρωση. Βήμα 2: Η λυχνία LED για αυτό το κελί ανάβει με το χρώμα A.. Βήμα 6: Ελέγξτε για να δείτε αν ο παίκτης Β έχει κερδίσει. Βήμα 7: Επαναλάβετε το 1-6 μέχρι να υπάρξει μια κατάσταση νίκης ή αν όλα τα κελιά είναι γεμάτα. Ανάγνωση των κελιών: Το πρόγραμμα κάνει βρόχους μεταξύ της ανάγνωσης του πλέγματος και της εμφάνισης της μήτρας LED Το Όσο ο αισθητήρας πλέγματος δεν καταχωρεί μη μηδενική τιμή, αυτός ο βρόχος θα συνεχίσει. Όταν πιέζεται μια διασταύρωση, η μεταβλητή Pressed αποθηκεύει τη θέση του πιεσμένου κελιού. Ελέγξτε εάν το κελί δεν είναι γεμάτο: Όταν επιτυγχάνεται ανάγνωση θέσης (μεταβλητή πιέζεται), συγκρίνεται με την τρέχουσα κατάσταση κελιού (αποθηκεύεται στη μεταβλητή GridOnOff) χρησιμοποιώντας μια προσθήκη δυαδικών ψηφίων. Εάν το Πιεσμένο κελί δεν είναι γεμάτο, προχωρήστε να ανάψετε τη λυχνία LED, διαφορετικά επιστρέψτε στην ανάγνωση των κελιών. Εναλλαγή χρωμάτων: Μια μεταβλητή boolean, Turn, χρησιμοποιείται για να καταγράψει ποιανού είναι η σειρά. Το χρώμα LED που επιλέγεται όταν επιλέγεται ένα κελί καθορίζεται από αυτήν τη μεταβλητή, η οποία εναλλάσσεται κάθε φορά που επιλέγεται ένα κελί. Έλεγχος συνθήκης νίκης: Υπάρχουν μόνο 8 πιθανές συνθήκες νίκης και αυτές αποθηκεύονται ως μεταβλητές λέξεων σε έναν πίνακα (winArray). Δύο δυαδικές προσθήκες χρησιμοποιούνται για τη σύγκριση των θέσεων κελιού ενός παίκτη με τις συνθήκες νίκης. Εάν υπάρχει ένας αγώνας, τότε το πρόγραμμα εμφανίζει μια ρουτίνα νίκης, μετά την οποία ξεκινά ένα νέο παιχνίδι. Έλεγχος συνθήκης ισοπαλίας: Όταν έχουν καταγραφεί εννέα στροφές και δεν υπάρχει ακόμα συνθήκη νίκης, τότε το παιχνίδι είναι ισοπαλία. Στη συνέχεια, τα LED σβήνουν και ξεκινά ένα νέο παιχνίδι. Μετάβαση σε λειτουργία ενός παίκτη: Εάν ο διακόπτης είναι στη θέση ενεργοποίησης, το πρόγραμμα μεταβαίνει σε λειτουργία ενός παίκτη, με τον πρώτο παίκτη να ξεκινά πρώτος. Στο τέλος της σειράς του παίκτη, το πρόγραμμα επιλέγει απλώς ένα τυχαίο κελί. Προφανώς, αυτή δεν είναι η πιο έξυπνη στρατηγική!

Βήμα 8: Παρατηρήσεις και περαιτέρω βελτιώσεις

Εδώ ένα βίντεο που δείχνει τη λειτουργία ενός παίκτη, με το πρόγραμμα να παίζει εντελώς τυχαίες κινήσεις: Το πρόγραμμα που εμφανίζεται εδώ είναι μόνο μια ελάχιστη, γυμνή έκδοση. Πολλά άλλα πράγματα μπορούν να γίνουν με αυτό: 1) Φωτίζοντας LED τρεις ταυτόχρονα Ο τρέχων κωδικός εμφανίζει μόνο ένα LED ταυτόχρονα. Ωστόσο, με την καλωδίωση που φαίνεται εδώ, είναι δυνατό να ανάψετε ταυτόχρονα όλα τα LED που είναι συνδεδεμένα σε μία γραμμή καθόδου. Έτσι, αντί να κάνετε ποδήλατο και στις εννέα θέσεις, το μόνο που χρειάζεται να κάνετε είναι να περάσετε από τις τρεις γραμμές καθόδου. τρεμοπαίζει Με τη χρήση διακοπών, ο χρόνος των LED μπορεί να ελεγχθεί με ακρίβεια και θα οδηγήσει σε ομαλότερη οθόνη. 3) Έξυπνη συσκευή αναπαραγωγής υπολογιστή Ο τρέχων κωδικός καταλαμβάνει μόνο μερικά kb, αφήνοντας αρκετά περισσότερα για την εφαρμογή ενός πιο έξυπνου tic tac υπολογιστή toe player. Ελπίζω να σας άρεσε να διαβάζετε αυτό το διδακτικό όσο διασκέδασα να το δουλεύω!

Συνιστάται: