Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
He creat aquest projecte per jugar a jocs d'ordinador normals en realitat virtual completa. Aquest projecte emula els vostres moviments en prémer o mantenir premudes les tecles del teclat
Exemple: en avançar, s'emula l'acció de prémer la tecla 'w'.
He imitat el joc Call of Duty 4: Modern Warfare, però no trieu jocs que tinguin retrocés mentre es dispara perquè canviarà la posició predeterminada del ratolí
Pas 1: requisits
Els requisits són
Hi ha una llista plena de coses que necessiteu per fer aquest vestit
Sensors tàctils-5
Sensor de força-1
GPU 6050-4
(o)
GPU 6050 - 2 i acceleròmetre - 2
Ulleres Vr
Telèfon habilitat per a VR
PC
Punt d'accés WiFi
Una pistola de joguina
Un joc per a PC (he utilitzat Call of Duty- Modern Warfare 1)
Filferros de taulers de pa (Home-Dona)
ARDUINO LEONARDO-2
Auton sheild - 2
Font d'alimentació (lipo)
Filferro arc de Sant Martí
Pas 2: HARDWARE
* reload_pin, shoot_pin, night vision_pin, granada_pin, arma change_pin són sensors tàctils. aim_pin és el sensor de força i el ratolí és emulat per MPU6050; altres sensors són acceleròmetre (postura, moviment1 i 2)
1.1) SOLDADURA
SOLDER MPU 6050, acceleròmetre, sensor tàctil i sensor de força amb els cables
1.2) CABLEAT
Per a MPU 6050-
Pin 2- SDA
Pin 3- SCL
GND - GND
5v - PWR / VCC
Per a moviment_pin1-
Pin A1- eix x
GND-GND
5v - PWR / VCC
Per a moviment_pin2-
Pin A2- eix x
GND-GND
5v - PWR / VCC
Per a posture_pin-
Pin A0- eix x
GND-GND
5v - PWR / VCC
per arma_pin -
sig-5v
GND-GND
5v - PWR / VCC
Per a Reload_pin -
pin12 - 5v
GND-GND
5v - PWR / VCC
Per a Nightvision_pin -
pin 10 - 5v
GND-GND
5v - PWR / VCC
Per a shoot_pin -
Pin7 - 5v
GND-GND
5v - PWR / VCC
Per aim_pin -
Pin 8 - 5v
5v - PWR / VCC
1.3) FILS DE SOLDAT
Soldeu els cables de la taula de pa amb els cables de l’arc de Sant Martí
1.4) A INLLAMENT
Enganxeu els cables amb la cinta aïllant al lloc on heu soldat per evitar curtcircuits
Pas 3: PROGRAMARI
He utilitzat una aplicació anomenada "Remotr" de Play Store per emetre el vídeo des del portàtil al telèfon
2.1) REMOTR-
Instal·leu l'aplicació REMOTR al vostre ordinador i creeu un compte
Aquí teniu l’enllaç-
remotrapp.com/#download
Instal·leu l'aplicació REMOTR al vostre telèfon intel·ligent
2.2) VIDEO STREAMING
Primer, connecteu tant l’ordinador com la mateixa xarxa WiFi i introduïu el vostre compte REMOTR als dos dispositius
ara afegiu manualment el joc que voleu transmetre al programari
ara l'aplicació mostrarà l'ordinador com a administrador i feu-hi clic per iniciar la reproducció
Per transmetre en VR, activa el mode vr al teu telèfon intel·ligent
Si no ho podeu entendre Consulteu aquest enllaç per obtenir informació detallada
remotrapp.com/en/howto
Pas 4: CODI PRINCIPAL
El codi d’aquest projecte no és dur ni complex, sinó llarg
Aquí teniu el codi, només cal copiar-lo i enganxar-lo al fitxer arduino
ARDUINO
Ratolí LEONARDO-
He referit Gabry295. Aquest codi de ratolí es basa en el cap del ratolí que es pot instruir
#incloure
#incloure
#incloure
#incloure
int aim_pin;
int shoot_pin;
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
configuració nul·la () {
Serial.begin (9600);
Mouse.begin ();
Wire.begin ();
mpu.initialize ();
if (! mpu.testConnection ()) {
mentre que (1);
}
pinMode (7, INPUT);
pinMode (8, INPUT);
}
bucle buit () {
shoot_pin = DigitalRead (7);
objectiu_pin = DigitalRead (8);
mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);
vx = (gx-300) / 200; // He posat -300 i +490 perquè el meu mpu6050 mostra aquests valors quan no es mou
vy = - (gz + 490) / 200; // comproveu el codi del ratolí principal per Gabry295 per obtenir més informació sobre aquests valors
Mouse.move (vx, vy);
retard (20);
mentre (shoot_pin == HIGH);
{
Mouse.click ();
}
while (aim_pin == HIGH);
{
Mouse.click ();
}
}
Teclat Leonardo
#incloure
int Granada;
int arma_pin;
int reload_pin;
int moviment1_pin;
int moviment2_pin;
int postura_pin;
char nightvision_pin;
configuració nul·la ()
{
pinMode (7, INPUT);
pinMode (8, INPUT);
pinMode (9, INPUT);
pinMode (10, INPUT);
pinMode (11, INPUT);
pinMode (12, INPUT);
pinMode (A0, INPUT);
pinMode (A1, INPUT);
Keyboard.begin ();
}
bucle buit ()
{
Grenade_pin = DigitalRead (8);
arma_pin = DigitalRead (9);
moviment1_pin = analogRead (A1);
moviment2_pin = analogRead (A2);
postura_pin = analogRead (A0);
recarregar_pin = digitalRead (12);
nightvision_pin = DigitalRead (10);
if (granada == ALTA)
{
Keyboard.press ('g');
}
while (arma_pin == ALTA)
{
Keyboard.press ('q');
}
while (reload_pin == HIGH)
{
Keyboard.press ('r');
}
while (moviment1_pin> 340 && moviment1_pin <420)
{
Keyboard.press ('w');
}
while (moviment1_pin> 420)
{
Keyboard.press ('w');
Keyboard.press ('p');
}
while (moviment2_pin> 340 && moviment2_pin <420)
{
Keyboard.press ('w');
}
while (moviment2_pin> 420)
{
Keyboard.press ('p');
Keyboard.press ('w');
}
while (posture_pin> 340 && posture_pin <420)
{
Keyboard.press ('c');
}
mentre que (posture_pin> 420)
{
Keyboard.press ('l');
}
while (postura_pin <340)
{
Keyboard.press ('z');
}
while (nightvision_pin == HIGH)
{
Keyboard.press ('n');
}
}
}
Pas 5: CODIS DE PROVA
Aquests són els pocs codis dividits del codi principal segons la funció
TIR-
#incloure
int x;
configuració nul·la () {
pinMode (8, INPUT);
Mouse.begin ();
}
bucle buit () {
x = DigitalRead (8);
if (x == ALT)
{
Mouse.click ('g');
}
}
PUNTERIA-
#incloure
#incloure
#incloure
#incloure
MPU6050 mpu;
int16_t ax, ay, az, gx, gy, gz;
int vx, vy;
configuració nul·la () {
Serial.begin (9600);
Mouse.begin ();
Wire.begin ();
mpu.initialize ();
if (! mpu.testConnection ()) {
mentre que (1);
}
}
bucle buit () {
shoot_pin = DigitalRead (7);
objectiu_pin = DigitalRead (8);
mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz);
vx = (gx + 300) / 200; // "+300" perquè l'eix x del giroscopi dóna valors aproximats de -350 mentre no es mou. Canvieu aquest valor si obteniu alguna cosa diferent mitjançant el codi TEST, perseguint si hi ha valors allunyats de zero.
vy = - (gz_-100) / 200; // el mateix aquí sobre "-100"
RECÀRREGA-
#incloure
int x;
configuració nul·la () {
pinMode (8, INPUT);
Keyboard.begin ();
}
bucle buit () {
x = DigitalRead (8);
if (x == ALT)
{
Keyboard.press ('r');
}
en cas contrari
{
Keyboard.release ('r');
}
}
VISIÓ NITAL #include
int x;
configuració nul·la () {
pinMode (8, INPUT);
Keyboard.begin ();
}
bucle buit () {
x = DigitalRead (8);
if (x == ALT)
{
Keyboard.press ('g');
}
en cas contrari
{
Keyboard.release ('g');
}
}
CROUCH I PRONE-
#incloure
int y;
configuració nul·la () {
pinMode (A0, INPUT);
Serial.begin (9600);
}
bucle buit () {
y = analogRead (A0);
si (y <260)
{
Keyboard.release ('c');
Keyboard.release ('p');
}
altrament si (y> 260 && y <310)
{
Keyboard.press ('c');
}
altrament si (y> 310)
{
Keyboard.press ('p');
}
}
Pas 6: CONTROLS DEL JOC
canvieu els controls del joc de la següent manera
ajupir-se - x
propens - l
canvi d'armes - q
sprint - pàg
plantar-se / saltar - z
visió nocturna - n
moviment cap endavant - w
magrana - g
Pas 7: CONFIGURACIÓ
Finalment hem arribat a l'últim pas que ara posa l'arduino
taules en una caixa i introduïu-la a la bossa
Ara connecteu el micro USB de l’arduino als ports USB del portàtil i ara connecteu els sensors tal com s’indicava més amunt
* Les marques de fletxa de les imatges anteriors representen la direcció que ha d’afrontar el sensor
Si teniu cap dubte, no dubteu a deixar un comentari i no oblideu compartir la vostra experiència
Això és tot gràcies i
ADEU.