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

Διαγωνισμός DIY VR Treadmill- Basys3 FPGA-Digilent: 3 Βήματα
Διαγωνισμός DIY VR Treadmill- Basys3 FPGA-Digilent: 3 Βήματα

Βίντεο: Διαγωνισμός DIY VR Treadmill- Basys3 FPGA-Digilent: 3 Βήματα

Βίντεο: Διαγωνισμός DIY VR Treadmill- Basys3 FPGA-Digilent: 3 Βήματα
Βίντεο: Кто Последний Упадет Выиграет $1,000,000 (Часть 1) 2024, Νοέμβριος
Anonim
DIY VR Treadmill- Basys3 FPGA-Digilent Contest
DIY VR Treadmill- Basys3 FPGA-Digilent Contest

Θέλετε να δημιουργήσετε έναν διάδρομο εικονικής πραγματικότητας στον οποίο μπορείτε να εκτελέσετε εφαρμογές και παιχνίδια στην επιφάνεια εργασίας σας; Τότε ήρθατε στο σωστό μέρος!

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

Για τις εισόδους του ποντικιού θα χρησιμοποιήσουμε ένα δίσκο με εναλλασσόμενες αγώγιμες και μη αγώγιμες φέτες, στον οποίο θα γλιστρήσουν δύο σύρματα, με μια μικρή μετατόπιση. Ο πίνακας θα διαβάσει τα σήματα που προέρχονται από τα καλώδια, δίνοντάς μας έναν από τους τέσσερις συνδυασμούς: 00, 11, 10, 01, τους οποίους μπορούμε να μεταφράσουμε απευθείας σε κίνηση αριστερά-δεξιά.

Για την κίνηση προς τα πάνω, αντί για δίσκο, θα χρησιμοποιήσουμε μια πλάκα με το ίδιο μοτίβο 0 και 1.

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

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

Βήμα 1: Βάση

Βάση
Βάση
Βάση
Βάση
Βάση
Βάση

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

Μια άλλη σταθερή εξωτερική ράβδος χρησιμοποιείται για τη στήριξη των καλωδίων και επίσης ως σημείο αναφοράς για την περιστροφική κίνηση.

Βήμα 2: 2 Διαχείριση εισόδου

2 Διαχείριση εισόδου
2 Διαχείριση εισόδου
2 Διαχείριση εισόδου
2 Διαχείριση εισόδου
2 Διαχείριση εισόδου
2 Διαχείριση εισόδου

Από την άποψη του μαύρου κουτιού, η συσκευή θα έχει τις ακόλουθες εισόδους: 4 συνδέσεις για τους μετρητές x, y του ποντικιού, 2 συνδέσεις για τα κουμπιά του ποντικιού και 4 συνδέσεις για τα βέλη. Η έξοδος αντιπροσωπεύεται από 4 ακίδες: 2 για σύνδεση ποντικιού PS2 και άλλες 2 για σύνδεση πληκτρολογίου PS2. Για μια πιο λεπτομερή περιγραφή του πρωτοκόλλου PS2, μπορείτε να ελέγξετε τον ακόλουθο ιστότοπο:

Ως είσοδοι για τον πίνακα, επέλεξα ψηφιακούς πείρους JB (1 προς 0). Λαμβάνοντας υπόψη την ακολουθία… 11001100…, που διαβάζεται στις δύο εισόδους, μπορούμε να διακρίνουμε μεταξύ τριών καταστάσεων των μετρητών:

1. Μετρήστε

2. Καταμετρήστε

3. Αποθηκεύστε την τρέχουσα τιμή.

Η ενότητα Count_Type κάνει ακριβώς αυτό. Εάν υπάρχει αλλαγή στην είσοδο, τότε η μονάδα στέλνει ένα κατάλληλο μήνυμα στον μετρητή 8 bit (υλοποιείται στο αρχείο 8_bit_count.vhd), το οποίο προσθέτει ή αφαιρεί από την τρέχουσα τιμή, εκτός εάν ληφθεί σήμα επαναφοράς.

Η ίδια ιδέα χρησιμοποιείται για την κίνηση προς τα κάτω της κεφαλής, αλλά αντί για δίσκο, πρέπει να χρησιμοποιείται συρόμενο γραμμικό προφίλ με το ίδιο εναλλασσόμενο μοτίβο 0 & 1.

Βήμα 3: Εφαρμογή VHDL

Εφαρμογή VHDL
Εφαρμογή VHDL

Επισυνάπτονται στην παρουσίαση οι ακόλουθες ενότητες:

1. Count_Type: αυτή η ενότητα χειρίζεται την αποκωδικοποίηση των δύο καλωδίων εισόδου από το δίσκο ή το προφίλ, που περιγράφεται στο δεύτερο βήμα.

2. 8bit_count: αυτή η ενότητα ερμηνεύει το αποκωδικοποιημένο μήνυμα από το Count_Type και αυξάνει ή μειώνει τους μετρητές.

3. 3bytepacket: αυτή η ενότητα διαχειρίζεται την κατάσταση του αριστερού και του δεξιού κουμπιού και μορφοποιεί τα δεδομένα έτσι ώστε να μπορούν να εισαχθούν στο πακέτο δεδομένων 3 byte που χρησιμοποιείται στο πρωτόκολλο PS2.

4.clk12khz: αυτή η ενότητα δίνει ένα ρολόι 12khz ειδικά για το πρωτόκολλο PS2 στο οποίο λειτουργούν ορισμένα εξαρτήματα και διαδικασίες.

5. MessageManager: αυτή η ενότητα στέλνει το πακέτο δεδομένων 3 byte, το ερμηνεύει και δίνει την κατάλληλη απάντηση, ως απάντηση σε ένα μήνυμα από τον υπολογιστή.

6. PS2Interface: αυτή η ενότητα διασυνδέει το πρωτόκολλο επικοινωνίας μεταξύ της συσκευής και του κεντρικού υπολογιστή (Η / Υ) (αυτή η ενότητα χρειάζεται ορισμένα σφάλματα και ενδελεχή επανεκτίμηση για να λειτουργήσει σωστά).

Συνιστάται: