Innehållsförteckning:

DIY VR-löpband- Basys3 FPGA-Digilent-tävling: 3 steg
DIY VR-löpband- Basys3 FPGA-Digilent-tävling: 3 steg

Video: DIY VR-löpband- Basys3 FPGA-Digilent-tävling: 3 steg

Video: DIY VR-löpband- Basys3 FPGA-Digilent-tävling: 3 steg
Video: Check Out This HUGE Omni-Directional Treadmill for Virtual Reality | The Omnideck #shorts 2024, November
Anonim
DIY VR löpband- Basys3 FPGA-Digilent Contest
DIY VR löpband- Basys3 FPGA-Digilent Contest

Vill du bygga ett VR -löpband som du kan köra dina stationära applikationer och spel på? Då har du kommit till rätt ställe!

I konventionella spel använder du musen och tangentbordet för att interagera med miljön. Därför måste vi skicka samma typ av signaler som en mus och ett tangentbord så att det inte blir några kompatibilitetsproblem mellan vårt löpband och spelet. I stället för att ta isär dessa enheter ska vi skapa vår egen enhet som kan simulera dem så nära som möjligt.

För musens ingångar använder vi en skiva med alternerande ledande och icke-ledande skivor, på vilka två trådar, med en liten förskjutning, kommer att glida. Styrelsen kommer att läsa signalerna som kommer från trådarna, vilket ger oss en av fyra kombinationer: 00, 11, 10, 01, som vi direkt kan översätta till vänster-högerrörelse.

För upp-ned-rörelsen, istället för en skiva, kommer vi att använda en platta med samma mönster av 0: or och 1: or.

Som ingångar för modulen som simulerar tangentbordet kommer vi att ha omkopplare placerade på leden på en stång som håller selen. När du går i någon riktning böjer stången något, vilket öppnar omkopplaren.

(Tänk på att projektet fortfarande pågår och kan förbättras, så jag väntar på råd som kan göra det bättre)

Steg 1: Bas

Bas
Bas
Bas
Bas
Bas
Bas

Basen ska ha en låg tyngdpunkt, därför måste ett tungt material användas. I mitt fall använde jag gips och en antennskiva för att göra en konkav form, men andra medel kan användas (ex. Yogakula). Efter att formen torkat placeras den på två skivor med samma diameter gjorda av MDF eller liknande material. En distans kommer att införas mellan de två MDF -skivorna. Mellan dessa skivor placeras en triangelprofil som har lager på kanterna. Ytterligare en uppsättning lager kommer att placeras vinkelrätt mot triangelns hörn och tangentera till skivan, på toppen. För bättre precision kan fler lager användas. En stav kommer att placeras på en av hörnorna, som visas på den tredje bilden. Denna stav håller selen i vilken spelaren kommer att placeras.

En annan fast yttre stång används för att stödja trådarna och även som referenspunkt för rotationsrörelsen.

Steg 2: 2 Inmatningshantering

2 Inmatningshantering
2 Inmatningshantering
2 Inmatningshantering
2 Inmatningshantering
2 Inmatningshantering
2 Inmatningshantering

Ur svart-box-synvinkel kommer enheten att ha följande ingångar: 4 anslutningar för x, y-musräknare, 2 anslutningar för musknappar och 4 anslutningar för piltangenterna. Utgången representeras av 4 stift: 2 för musens PS2 -anslutning och ytterligare 2 för tangentbordets PS2 -anslutning. För en mer detaljerad beskrivning av PS2-protokollet kan du kontrollera följande webbplats:

Som ingångar för kortet valde jag JB (1 ned till 0) digitala stift. Med tanke på sekvensen … 11001100 …, läs på de två ingångarna, kan vi skilja mellan tre tillstånd i räknarna:

1. räkna upp;

2. Räkna ner;

3. Spara det aktuella värdet;

Count_Type -modulen gör precis det. Om det sker en ändring av ingången skickar modulen ett lämpligt meddelande till 8 -bitarsräknaren (implementerad i filen 8_bit_count.vhd), som lägger till eller subtraherar från det aktuella värdet, såvida inte en återställningssignal tas emot.

Samma idé används för huvudets rörelse uppåt, men istället för en skiva ska en glidande linjär profil med samma alternerande 0 & 1-mönster användas.

Steg 3: VHDL -implementering

VHDL -implementering
VHDL -implementering

Följande moduler bifogas presentationen:

1. Count_Type: denna modul hanterar avkodningen av de två ingångskablarna från disken eller profilen, som beskrivs i det andra steget;

2. 8bit_count: denna modul tolkar det avkodade meddelandet från Count_Type och ökar eller minskar räknarna;

3. 3bytepacket: denna modul hanterar status för vänster och höger knapp och formaterar data så att den kan introduceras i 3 -byte datapaket som används i PS2 -protokollet;

4.clk12khz: denna modul ger en klocka på 12khz som är specifik för PS2 -protokollet som vissa komponenter och processer fungerar på;

5. MessageManager: denna modul skickar datapaketet med 3 byte, tolkar det och ger lämpligt svar, som svar på ett meddelande från datorn.

6. PS2Interface: denna modul gränsar kommunikationsprotokollet mellan enheten och värden (PC) (den här modulen behöver lite felsökning och en grundlig omvärdering för att fungera korrekt).

Rekommenderad: