สารบัญ:

DIY VR Treadmill- Basy3 FPGA-Digilent Contest: 3 ขั้นตอน
DIY VR Treadmill- Basy3 FPGA-Digilent Contest: 3 ขั้นตอน

วีดีโอ: DIY VR Treadmill- Basy3 FPGA-Digilent Contest: 3 ขั้นตอน

วีดีโอ: DIY VR Treadmill- Basy3 FPGA-Digilent Contest: 3 ขั้นตอน
วีดีโอ: Cheap DIY VR slidemill setup 2024, พฤศจิกายน
Anonim
DIY VR Treadmill- Basy3 FPGA-Digilent Contest
DIY VR Treadmill- Basy3 FPGA-Digilent Contest

คุณต้องการสร้างลู่วิ่ง VR ที่คุณสามารถเรียกใช้แอปพลิเคชันเดสก์ท็อปและเกมของคุณหรือไม่? ถ้าอย่างนั้นคุณมาถูกที่แล้ว!

ในเกมทั่วไป คุณใช้เมาส์และคีย์บอร์ดเพื่อโต้ตอบกับสิ่งแวดล้อม ดังนั้น เราจำเป็นต้องส่งสัญญาณแบบเดียวกับเมาส์และคีย์บอร์ด เพื่อที่จะไม่มีปัญหาความเข้ากันได้ระหว่างลู่วิ่งของเรากับเกม แทนที่จะแยกอุปกรณ์เหล่านี้ออกจากกัน เราจะสร้างอุปกรณ์ของเราเองซึ่งสามารถจำลองอุปกรณ์เหล่านี้ได้ใกล้เคียงที่สุด

สำหรับอินพุตของเมาส์ เราจะใช้ดิสก์ที่มีสไลซ์ที่เป็นสื่อกระแสไฟฟ้าและไม่นำไฟฟ้าสลับกัน โดยที่สายไฟสองเส้นที่มีการออฟเซ็ตเล็ก ๆ จะเลื่อนไปมา บอร์ดจะอ่านสัญญาณที่มาจากสายไฟทำให้เรามีชุดค่าผสมสี่ชุด: 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 downto 0) พิจารณาลำดับ …11001100… อ่านสองอินพุต เราสามารถแยกแยะระหว่างสถานะสามสถานะของตัวนับ:

1.นับขึ้น;

2.นับถอยหลัง;

3. บันทึกค่าปัจจุบัน

โมดูล Count_Type ทำเช่นนั้น หากมีการเปลี่ยนแปลงอินพุต โมดูลจะส่งข้อความที่เหมาะสมไปยังตัวนับ 8 บิต (ดำเนินการในไฟล์ 8_bit_count.vhd) ซึ่งจะเพิ่มหรือลบออกจากค่าปัจจุบัน เว้นแต่จะได้รับสัญญาณรีเซ็ต

แนวคิดเดียวกันนี้ใช้สำหรับการเคลื่อนไหวขึ้น-ลงของส่วนหัว แต่แทนที่จะเป็นดิสก์ ให้ใช้โปรไฟล์เชิงเส้นแบบเลื่อนที่มีรูปแบบ 0&1 สลับกันแบบเดียวกัน

ขั้นตอนที่ 3: การใช้งาน VHDL

การใช้งาน VHDL
การใช้งาน VHDL

ที่แนบมากับการนำเสนอเป็นโมดูลต่อไปนี้:

1. Count_Type: โมดูลนี้จัดการการถอดรหัสของสายอินพุตสองสายจากดิสก์หรือโปรไฟล์ที่อธิบายไว้ในขั้นตอนที่สอง

2. 8bit_count: โมดูลนี้แปลข้อความที่ถอดรหัสจาก Count_Type และเพิ่มหรือลดจำนวนตัวนับ

3. 3bytepacket: โมดูลนี้จัดการสถานะของปุ่มซ้ายและขวาและจัดรูปแบบข้อมูลเพื่อให้สามารถแนะนำในแพ็คเก็ตข้อมูล 3 ไบต์ที่ใช้ในโปรโตคอล PS2

4.clk12khz: โมดูลนี้ให้นาฬิกา 12khz เฉพาะสำหรับโปรโตคอล PS2 ซึ่งส่วนประกอบและกระบวนการบางอย่างทำงาน

5. MessageManager: โมดูลนี้ส่งแพ็กเก็ตข้อมูล 3 ไบต์ ตีความและให้การตอบสนองที่เหมาะสม เป็นการตอบกลับข้อความจากพีซี

6. PS2Interface: โมดูลนี้เชื่อมต่อโปรโตคอลการสื่อสารระหว่างอุปกรณ์และโฮสต์ (PC) (โมดูลนี้ต้องการการดีบักและการประเมินใหม่อย่างละเอียดเพื่อให้ทำงานได้อย่างถูกต้อง)

แนะนำ: