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

Stackers Arcade Game: 6 βήματα (με εικόνες)
Stackers Arcade Game: 6 βήματα (με εικόνες)

Βίντεο: Stackers Arcade Game: 6 βήματα (με εικόνες)

Βίντεο: Stackers Arcade Game: 6 βήματα (με εικόνες)
Βίντεο: Είδα μακριά επειδή στεκόμουν πάνω σε ώμους γιγάντων - What the Fact?! #6 2024, Ιούλιος
Anonim
Stackers Arcade Game
Stackers Arcade Game

Γεια σας παιδιά, σήμερα θέλω να μοιραστώ μαζί σας αυτό το καταπληκτικό παιχνίδι arcade που μπορείτε να φτιάξετε με μια δέσμη LEDs Ws2812b και έναν μικροελεγκτή/FPGA. Ιδού Stack Overflow - υλοποίηση υλικού ενός κλασικού arcade παιχνιδιού. Αυτό που ξεκίνησε ως σχολικό εγχείρημα έγινε γρήγορα εργασία αγάπης καθώς αρχίσαμε να αφιερώνουμε όλο και περισσότερο χρόνο στην ανάπτυξη του παιχνιδιού μας και να μαθαίνουμε περισσότερα από αυτό (και παραμελώντας τις σπουδές μας στη διαδικασία xD). Τελικά, το παιχνίδι μας ήταν τόσο καλοφτιαγμένο και καλά δεκτό από το σχολείο μας που κατασχέθηκε (ως υλικό επίδειξης για την επόμενη παρτίδα μαθητών). Λοιπόν, μπορούμε πάντα να χτίσουμε ένα δεύτερο. Ας αρχίσουμε!

Online έκδοση του παιχνιδιού:

Βήμα 1: Τι χρειάζεστε;

Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?
Τι χρειάζεσαι?

Υλικά:

1. ένας μικροελεγκτής/μικροϋπολογιστής/FPGA - Το FPGA χρησιμοποιείται για την εφαρμογή της λογικής του παιχνιδιού μας. Επιλέξτε τον πίνακα σας, για το έργο μας απαιτείται να χρησιμοποιήσουμε τον πίνακα Mojo FPGA. Για τους μη μυημένους, είναι ένας τύπος πλακέτας που χρησιμοποιεί υλικό για την υλοποίηση των λειτουργιών του και όχι των κωδικών. Ως εκ τούτου, θα έλεγα ότι είναι σχετικά χαμηλό επίπεδο και εντελώς διαφορετικό από ό, τι εάν χρησιμοποιείτε Arduino ή Pi. Εάν χρησιμοποιείτε άλλους πίνακες, πρέπει να γράψετε τον δικό σας κώδικα, αλλά αυτό το παιχνίδι είναι αρκετά εύκολο να κωδικοποιηθεί και γεια σας! Τώρα μπορείτε να μάθετε και την κωδικοποίηση!

2. LEDs Ws2812b - Εδώ χρησιμοποιούμε τα LED για να κατασκευάσουμε την οθόνη για το παιχνίδι μας. Δεν μπορείτε να γίνετε κατασκευαστής εάν δεν έχετε αγγίξει το Ws2812b πριν από το xD. Είναι απλώς διευθυνσιοδοτούμενο που σημαίνει ότι μπορείτε να κόψετε μεμονωμένα LED και να τα επικολλήσετε σε οποιονδήποτε σχηματισμό σας αρέσει. Και είναι RGB που σημαίνει ότι μπορείτε να εξάγετε οποιοδήποτε χρώμα θέλετε. Επιπλέον, η FastLED - η βιβλιοθήκη Arduino για τον έλεγχο του Ws2812b είναι πολύ καλά ανεπτυγμένη. Θα συνιστούσα στους ανθρώπους να χρησιμοποιούν το Arduino στη θέση του FPGA εάν δεν έχετε. Μπορείτε να αγοράσετε τα LED από το Taobao/Amazon, αλλά αγοράσαμε τα δικά μας από τον πύργο Sim Lim στη Σιγκαπούρη.

3. Ξύλο-Για το εξωτερικό περίβλημα χρησιμοποιήσαμε κόντρα πλακέ πάχους 1cm και για τη μήτρα LED χρησιμοποιήσαμε κόντρα πλακέ πάχους 0,3cm. Βρήκαμε την προσφορά μας από παλιοσίδερα από το εργαστήριο κατασκευών στο σχολείο μας.

4. Ακρυλικό διάχυτο φωτός - Για την οθόνη μας, δοκιμάσαμε διαφορετικούς τύπους ακρυλικού και βρήκαμε αυτό το παγωμένο ακρυλικό που ονομάζεται PL -422 και είναι πολύ καλό για τη διάχυση του φωτός. Εάν δεν μπορείτε να βρείτε το ακριβές μοντέλο, προσπαθήστε να αναζητήσετε παγωμένα ακρυλικά. Αγοράσαμε το δικό μας στα Dama Plastics στη Σιγκαπούρη.

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

6. Μεγάλο κόκκινο κουμπί - Εντάξει, δεν είναι απαραίτητο να έχουμε ένα τόσο μεγάλο κόκκινο κουμπί, αλλά είναι πάντα καλό να έχουμε ένα κουμπί για να χτυπήσει ο κόσμος! xD Το αγοράσαμε στον πύργο Sim Lim στη Σιγκαπούρη.

Εργαλεία:

1. Κόλλα ξύλου

2. Συγκολλητικό σίδερο

3. Συγκολλητής

4. Σύρματα. Είναι καλύτερο αν έχετε μαλακά καλώδια σε σύγκριση με τα πιο σκληρά. Και ενιαίος πυρήνας σε σύγκριση με τον πολυπύρηνο.

5. Απογυμνωτής καλωδίων

6. Κόπτης σύρματος

7. Τρυπάνι με τρυπάνια 1mm

8. Πριόνι κύλισης

9. Πριόνι μπάντας

Αποσφαλμάτωση:

1. Μονάδα μεταβλητού τροφοδοτικού

2. Παλιοσκόπιο

Βήμα 2: Γρήγορη πρωτοτυπία

Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση
Ταχεία προτυποποίηση

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

Από την πλευρά του υλικού, στο πρώτο στάδιο μόλις δοκιμάσαμε τη λογική μας στην αλλαγή των μοτίβων φωτός στη δική μας απλή μήτρα LED. Μόλις δοκιμάσαμε ότι η λογική λειτουργεί καλά, βγήκαμε στη συνέχεια να κόψουμε λωρίδες από 5 LEDs Ws2812b μόνο για να δοκιμάσουμε τη λογική του παιχνιδιού μας με διαφορετικές σειρές. Μόλις αυτό λειτουργήσει, στη συνέχεια προχωρούμε στην κατασκευή της μήτρας LED σε πλήρη κλίμακα.

Δοκιμάσαμε επίσης διαφορετικά ακρυλικά δείγματα με το LED πριν εγκαταστήσουμε το PL-422 ως τον καλύτερο διαχύτη φωτός. Και για τη δομή διαχωριστή δοκιμάσαμε επίσης διαφορετικά ύψη για να διαχέεται πλήρως το LED. Στο τέλος συνειδητοποιήσαμε 3cm*3cm τετράγωνο με 4cm ύψος για να είναι το καλύτερο για διάχυση. Με βάση αυτό το βέλτιστο μέγεθος, αποφασίσαμε επίσης ποιο είναι το μέγεθος του κόντρα πλακέ που χρειάζεται για μια μήτρα LED 5 x 11 αφήνοντας κενό 0,5 εκατοστών για τον αφρό μεταξύ των τετραγώνων.

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

Βήμα 3: Κατασκευή του περιβλήματος

Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα
Κάνοντας το περίβλημα

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

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

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

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

Σημείωση: Ζητώ συγγνώμη για την έλλειψη διαδικασίας βήμα προς βήμα. Δεν τεκμηριώσαμε τα βήματα σε όλη τη διαδρομή και μέχρι να συνειδητοποιήσουμε ότι πρέπει να τεκμηριώσουμε τα βήματα, το περίβλημα είχε ήδη γίνει. Το διάγραμμα δεν είναι επίσης οι τελικές διαστάσεις.

Βήμα 4: Δημιουργία της μήτρας LED

Κατασκευή της μήτρας LED
Κατασκευή της μήτρας LED
Κατασκευή της μήτρας LED
Κατασκευή της μήτρας LED

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

Συνδέουμε κάθε σειρά LED με τις καρφίτσες Data In και Data Out και κολλάμε κάθε GND και VCC σε ένα κοινό καλώδιο. Το κορυφαίο Data In θα δημιουργήσει τα μοτίβα φωτός για κάθε σειρά και το συνδέσαμε με το pinout του μικροελεγκτή/FPGA. Μπορείτε επίσης να κολλήσετε τα τελευταία Δεδομένα από μία σειρά στα κύρια Δεδομένα σε άλλη σειρά. Ο τρόπος με τον οποίο λειτουργεί το LED Ws2812b είναι ότι κάθε LED περιέχει ένα IC που θα πάρει τα απαιτούμενα δεδομένα από το καλώδιο και θα περάσει τα υπόλοιπα στην αλυσίδα. Βασίσαμε το LED μας σε ένα άλλο φανταστικό Instructables (Στην πραγματικότητα, το αντιγράψαμε ακριβώς! XD)

Εδώ θα θέλαμε επίσης να τονίσουμε τη σημασία της χρήσης μαλακών καλωδίων. Εάν χρησιμοποιείτε άκαμπτα, σκληρά καλώδια για το κορυφαίο Data In pin, αυτό που συμβαίνει είναι κάθε φορά που τραβάτε το σύρμα, μπορεί να τραβήξει την επένδυση χαλκού στο Ws2812b που θα το καταστρέψει. Σε αυτό το έργο, πριν αλλάξουμε σε μαλακά καλώδια, καταστρέψαμε συνολικά 40 LED που είναι το 1/3 των LED που απαιτούνται για το έργο μας.

Διδάξιμο:

Βήμα 5: Γράψτε τους Κώδικες Παιχνιδιού και εντοπίστε σφάλματα υλικού

Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware
Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware
Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware
Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware
Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware
Γράφοντας τους Κώδικες Παιχνιδιού και Debugging Hardware

Το Mojo λειτουργεί με το Lucid HDL, το οποίο δεν είναι η πιο δημοφιλής γλώσσα εκεί έξω. Δεν μπορούμε να βρούμε βιβλιοθήκες Ws2812b LED στο Lucid, επομένως καταφύγαμε στη συγγραφή της δικής μας βιβλιοθήκης, η οποία είναι μια πολύ ενδιαφέρουσα εμπειρία. Για να γίνει αυτό, αναλύσαμε πρώτα το σήμα που περνάει χρησιμοποιώντας τη βιβλιοθήκη FastLED του Arduino και γράψαμε κωδικούς για να το αναπαράγουμε. Εδώ είναι ένα κόλπο εντοπισμού σφαλμάτων υλικού, ο παλμογράφος είναι πολύ, πολύ χρήσιμος για την ανάλυση σημάτων, είτε πρόκειται για εντοπισμό σφαλμάτων στο δικό σας σήμα για το οποίο δεν είστε σίγουροι είτε για έλεγχο και αντιγραφή άλλων σημάτων.

Αφού γράψαμε τη βιβλιοθήκη για το Ws2812b, προχωράμε στον κωδικό του παιχνιδιού, χρησιμοποιήσαμε τις συναρτήσεις Bit shift για να μετακινήσουμε κάθε μπλοκ προς τα αριστερά και προς τα δεξιά και χρησιμοποιήσαμε τα τετράγωνα Bitwise AND προς ΚΑΙ κάθε σειράς στην προηγούμενη σειρά. Μπορείτε επίσης να σκεφτείτε να το εφαρμόσετε στο Arduino, το οποίο δεν πρέπει να είναι τόσο δύσκολο. Κωδικοποιήσαμε ακόμη και οθόνες παιχνιδιών για διασκέδαση!

Το παιχνίδι μας είχε 2 επίπεδα, το οποίο είναι το ορατό παιχνίδι στοίβαξης (Πράσινο) και το δεύτερο επίπεδο αόρατο παιχνίδι στοίβαξης (Μπλε).

Ακόμη και αφού είχαμε κωδικούς εργασίας και λειτουργούσα μήτρα LED, μερικές φορές εξακολουθούμε να αντιμετωπίζουμε προβλήματα όπως τα φώτα που τρεμοπαίζουν ή ανάβουν όταν δεν πρέπει. Το πρόβλημα συνήθως οφείλεται σε ακατάλληλη γείωση, επίπεδο τροφοδοσίας ή παρεμβολές. Εδώ θα χρειαστείτε άλλα εργαλεία εντοπισμού σφαλμάτων υλικού, όπως μεταβλητή μονάδα τροφοδοσίας, για να ελέγξετε εάν το τροφοδοτικό του Mojo/Arduino είναι επαρκές ή πολύ υψηλό. Από την εμπειρία μου, το Ws2812b έχει αρκετά μεγάλο εύρος τάσεων λειτουργίας από 2,8v - 5v. Εδώ έχω ένα βίντεο που δείχνει τα φώτα να τρελαίνονται αφού αυξήσω την ισχύ.

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

Κωδικοί Github:

Arduino Bitwise Shift:

Arduino Bitwise ΚΑΙ:

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

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

Έχετε το περίβλημα και τη μήτρα LED. Ρθε η ώρα να τα συνδυάσουμε όλα. Πρώτα τοποθετούμε τον αφρό στο μπροστινό μέρος και το πλέγμα LED πίσω από αυτό και ρυθμίζουμε τη θέση. Επειδή ο αφρός έχει πολύ υψηλή τριβή απλώς τοποθετήθηκε σε τριβή ενώ η μήτρα LED είναι κολλημένη στη θέση της. Μετά από αυτό τοποθετήσαμε την οθόνη μπροστά από το πλέγμα. Στη συνέχεια, συνδέσαμε τον πείρο κάθε σειράς στον μικροελεγκτή και ξεκινήσαμε να παίζουμε!:ΡΕ

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

Συνιστάται: