Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Ich habe dieses Projekt erstellt, um normale Computerspiele in voller VR zu spielen. Dieses Projekt emuliert Ihre Bewegungen beim Drücken oder Halten der Tasten Ihrer Tastatur
Beispiel: Wenn Sie sich vorwärts bewegen, wird die Aktion des Drückens der Taste 'w' emuliert.
Ich habe das Spiel Call of Duty 4: Modern Warfare emuliert, wähle aber keine Spiele aus, die beim Schießen einen Rückstoß haben, da dies die Standardposition der Maus ändert
Schritt 1: Anforderungen
Anforderungen sind-
Es gibt eine Liste voller Dinge, die Sie brauchen, um diesen Anzug zu machen
Berührungssensoren-5
Kraftsensor-1
GPU 6050 - 4
(oder)
GPU 6050 - 2 & Beschleunigungsmesser - 2
VR-Brille
VR-fähiges Telefon
PC
WLAN-Hotspot
Eine Spielzeugpistole
Ein PC-Spiel (ich habe Call of Duty- Modern Warfare 1 verwendet)
Brotbrettdrähte (männlich-weiblich)
ARDUINO LEONARDO-2
Auton-Schild - 2
Stromquelle (Lipo)
Regenbogendrähte
Schritt 2: HARDWARE
*reload_pin, shoot_pin, night vision_pin, grenade_pin, Waffenwechsel_pin sind Berührungssensoren. aim_pin ist ein Kraftsensor und die Maus wird von MPU6050 emuliert, andere Sensoren sind Beschleunigungsmesser (Haltung, Bewegung 1 & 2)
1.1) LÖTEN
SOLDER MPU 6050, Beschleunigungsmesser, Berührungssensor & Kraftsensor mit den Drähten
1.2) VERKABELUNG
Für MPU 6050-
Pin 2- SDA
Pin 3- SCL
Masse - Masse
5V - PWR/VCC
Für bewegung_pin1-
Stift A1- x-Achse
GND-GND
5V - PWR/VCC
Für bewegung_pin2-
Stift A2- x-Achse
GND-GND
5V - PWR/VCC
Für Haltung_Pin-
Pin A0- x-Achse
GND-GND
5V - PWR/VCC
für Waffenstift –
sig-5v
GND-GND
5V - PWR/VCC
Für Reload_pin –
Pin12 – 5V
GND-GND
5V - PWR/VCC
Für Nachtsicht_Pin –
Stift 10 – 5V
GND-GND
5V - PWR/VCC
Für shoot_pin –
Pin7 – 5V
GND-GND
5V - PWR/VCC
Für Ziel_Pin –
Pin 8 – 5V
5V - PWR/VCC
1.3) LÖTDRAHT
Löten Sie die Brotplatinendrähte mit den Regenbogendrähten
1.4) ISOLIERUNG
Kleben Sie die Drähte mit dem Isolierband an der Stelle, an der Sie gelötet haben, um Kurzschlüsse zu vermeiden
Schritt 3: SOFTWARE
Ich habe eine App namens 'Remotr' aus dem Play Store verwendet, um das Video vom Laptop auf das Telefon zu übertragen
2.1) FERNBEDIENUNG
Installieren Sie die REMOTR-Anwendung auf Ihrem Computer und erstellen Sie ein Konto
Hier ist der Link-
remotrapp.com/#download
Installieren Sie die REMOTR-App auf Ihrem Smartphone
2.2) VIDEO-STREAMING
Verbinden Sie zuerst den Computer und dasselbe WLAN-Netzwerk und geben Sie Ihr REMOTR-Konto in beiden Geräten ein
Fügen Sie nun manuell das Spiel hinzu, das Sie in der Software streamen möchten
Jetzt zeigt die App den Computer als Administrator an, um das Streaming zu starten
Um in VR zu streamen, aktiviere den VR-Modus auf deinem Smartphone
Wenn Sie nicht verstehen können, überprüfen Sie diesen Link für detaillierte Informationen
remotrapp.com/de/howto
Schritt 4: HAUPTCODE
Der Code für dieses Projekt ist nicht hart oder komplex, sondern lang
Hier ist der Code, kopieren Sie ihn einfach und fügen Sie ihn in Ihre Arduino-Datei ein
ARDUINO
LEONARDO Maus-
Ich habe Gabry295 verwiesen. Dieser Mauscode basiert auf seiner Kopfmaus anweisbar
#enthalten
#enthalten
#enthalten
#enthalten
int ziel_pin;
int schießen_pin;
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
Leere Einrichtung () {
Serial.begin (9600);
Maus.begin();
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
während (1);
}
pinMode(7, EINGANG);
pinMode(8, EINGANG);
}
Leere Schleife () {
Shoot_Pin = digitalRead(7);
target_pin = digitalRead(8);
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
vx = (gx-300)/200; // Ich habe -300 und +490 eingegeben, da mein mpu6050 diese Werte anzeigt, wenn er sich nicht bewegt check
vy = –(gz+490)/200; // Überprüfen Sie den Code der Kopfmaus von Gabry295 für weitere Details zu diesen Werten
Mouse.move(vx, vy);
Verzögerung (20);
while(shoot_pin == HIGH);
{
Mausklick();
}
while(ziel_pin == HIGH);
{
Mausklick();
}
}
Leonardo-Tastatur
#enthalten
int Granate;
int Waffen_Pin;
int reload_pin;
int bewegung1_pin;
int bewegung2_pin;
int haltung_pin;
char nightvision_pin;
Void-Setup ()
{
pinMode (7, EINGANG);
pinMode(8, EINGANG);
pinMode(9, EINGANG);
pinMode(10, EINGANG);
pinMode(11, EINGANG);
pinMode(12, EINGANG);
PinMode (A0, EINGANG);
PinMode (A1, EINGANG);
Tastatur.begin();
}
Leere Schleife ()
{
Grenade_pin=digitalRead(8);
Waffen_Pin = digitalRead(9);
motion1_pin = analogRead (A1);
motion2_pin = analogRead (A2);
posture_pin = analogRead (A0);
reload_pin = digitalRead (12);
nightvision_pin = digitalRead(10);
if(granate==HIGH)
{
Keyboard.press('g');
}
während (weapon_pin == HIGH)
{
Keyboard.press('q');
}
while(reload_pin == HIGH)
{
Keyboard.press('r');
}
während (Bewegung1_Pin>340&&Bewegung1_Pin<420)
{
Keyboard.press('w');
}
während (Bewegung1_pin>420)
{
Keyboard.press('w');
Keyboard.press('p');
}
während (Bewegung2_Pin>340&&Bewegung2_Pin<420)
{
Keyboard.press('w');
}
während (Bewegung2_Pin>420)
{
Keyboard.press('p');
Keyboard.press('w');
}
während (posture_pin>340&&posture_pin<420)
{
Keyboard.press('c');
}
während (posture_pin>420)
{
Keyboard.press('l');
}
während (haltung_pin<340)
{
Keyboard.press('z');
}
während (nightvision_pin==HIGH)
{
Keyboard.press('n');
}
}
}
Schritt 5: TESTCODES
Hier sind die wenigen Codes, die nach der Funktion vom Hauptcode getrennt sind
SCHIESSEN-
#enthalten
intx;
Leere Einrichtung () {
pinMode(8, EINGANG);
Maus.begin();
}
Leere Schleife () {
x=digitalRead(8);
if(x==HOCH)
{
Mouse.click('g');
}
}
ZIELEN-
#enthalten
#enthalten
#enthalten
#enthalten
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
Leere Einrichtung () {
Serial.begin (9600);
Maus.begin();
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
während (1);
}
}
Leere Schleife () {
Shoot_Pin = digitalRead(7);
target_pin = digitalRead(8);
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
vx = (gx+300)/200; // "+300", weil die x-Achse des Gyroskops Werte von etwa -350 ergibt, während es sich nicht bewegt. Ändern Sie diesen Wert, wenn Sie mit dem TEST-Code etwas anderes erhalten, und ändern Sie es, wenn Werte weit von Null entfernt sind.
vy = -(gz_-100)/200; // dasselbe hier über "-100"
NEULADEN-
#enthalten
intx;
Leere Einrichtung () {
pinMode(8, EINGANG);
Tastatur.begin();
}
Leere Schleife () {
x=digitalRead(8);
if(x==HOCH)
{
Keyboard.press('r');
}
anders
{
Keyboard.release('r');
}
}
NACHTSICHT #einschließen
intx;
Leere Einrichtung () {
pinMode(8, EINGANG);
Tastatur.begin();
}
Leere Schleife () {
x=digitalRead(8);
if(x==HOCH)
{
Keyboard.press('g');
}
anders
{
Keyboard.release('g');
}
}
HUCKEN UND LIEGEN-
#enthalten
int y;
Leere Einrichtung () {
PinMode (A0, EINGANG);
Serial.begin (9600);
}
Leere Schleife () {
y=analogRead(A0);
wenn(y<260)
{
Keyboard.release('c');
Keyboard.release('p');
}
sonst if(y>260&&y<310)
{
Keyboard.press('c');
}
sonst wenn(y>310)
{
Keyboard.press('p');
}
}
Schritt 6: SPIELKONTROLLE
ändere die Spielsteuerung wie folgt
ducken - x
anfällig - l
Waffenwechsel - q
sprinten - p
stehen/springen - z
Nachtsicht - nein
Vorwärtsbewegung - w
Granate - g
Schritt 7: EINRICHTEN
Endlich sind wir zum letzten Schritt gekommen, jetzt setzen wir das Arduino
Bretter in eine Schachtel und stecke sie in die Tasche
Verbinden Sie nun den Micro-USB des Arduino mit den USB-Anschlüssen des Laptops verbinden Sie nun die Sensoren wie oben beschrieben
*Pfeilmarkierungen in den obigen Bildern stellen die Richtung dar, in die der Sensor zeigen muss
Wenn Sie Zweifel haben, zögern Sie nicht, einen Kommentar zu hinterlassen und vergessen Sie nicht, Ihre Erfahrungen zu teilen
Das wars danke und
WIEDERSEHEN.