Inhoudsopgave:
- Benodigdheden
- Stap 1: monteren
- Stap 2: Hoe bibliotheek te installeren?
- Stap 3: Coderen
- Stap 4: Speel
Video: Arduino Vr: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Hallo, mijn naam is Christian en ik ben 13 jaar oud. Ik hou van arduino en heb er talent voor, dus hier is mijn instructable voor een arduino vr.
Benodigdheden
Benodigdheden:
1. Arduino-bord Mega, Due, Uno of Yun.
2. Mannelijke naar mannelijke (standaard jumperdraden) draden.
3. Klein breadboard
4. USB
5. GY-521 MPU-6050
Optioneel:
6. 5.5 inch 2560 * 1440 2K LCD-scherm HDMI naar MIPI;
7. Fresnel-lens Brandpuntsafstand 50 mm
8. 3D-printer of 3D-printerservice
Stap 1: monteren
Gebruik het schema om het samen te stellen.
Stap 2: Hoe bibliotheek te installeren?
Bekijk de Github: https://github.com/relativty/Relativ Je kunt het installeren met Git of direct downloaden.
Stap 3: Coderen
// i2cdevlib en MPU6050 zijn nodig:
// Grote dank aan de geweldige Jeff Rowberg <3, ga naar zijn repo om meer te leren MPU6050. //================================================ =============================
// I2Cdev en MPU6050 moeten als bibliotheken worden geïnstalleerd, anders moeten de.cpp/.h-bestanden // voor beide klassen in het include-pad van uw project staan
#include "Relativ.h"
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif
MPU6050mpu; relatief relatief;
#define INTERRUPT_PIN 2
// IMU-status en controle: bool dmpReady = false; // true als DMP init succesvol was uint8_t mpuIntStatus; uint8_t devStatus; // 0 = succes, !0 = fout uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer[64];
Quaternion q; // [W x Y Z]
vluchtige bool mpuInterrupt = false; // geeft aan of de MPU-interrupt-pin high is geworden void dmpDataReady() { mpuInterrupt = true; }
void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Draad.setClock(400000); // 400 kHz I2C-klok. Geef commentaar op deze regel als u compilatieproblemen heeft #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #stop als
relativ.startNative(); // "startNative" kan worden gebruikt voor 32-bits ARM-kernmicrocontrollers met native USB zoals Arduino DUE // wat wordt aanbevolen. // Relatief.start(); // "start" is voor NON-NATIVE USB-microcontrollers, zoals Arduino MEGA, Arduino UNO.. // Die zijn aanzienlijk langzamer. mpu.initialiseren(); pinMode (INTERRUPT_PIN, INPUT);
SerialUSB.println(mpu.testConnection() ? F("MPU6050 verbinding succesvol"): F("MPU6050 verbinding mislukt"));
// configureer de DMP devStatus = mpu.dmpInitialize();
// ================================== // geef hier je eigen gyro-offsets aan: // === =============================== mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset (1788);
// devSTatus als alles goed werkte if (devStatus == 0) { // zet de DMP aan, nu het klaar is mpu.setDMPEnabled(true);
// schakel Arduino-interruptdetectie in, attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus();
dmpReady = waar;
// haal de verwachte DMP-pakketgrootte op voor latere vergelijking packetSize = mpu.dmpGetFIFOPacketSize(); } anders { // FOUT! } }
void loop() { // Doe niets als DMP niet correct initialiseert als (!dmpReady) terugkeert;
// wacht tot MPU-interrupt of extra pakket(ten) beschikbaar zijn terwijl (!mpuInterrupt && fifoCount < packetSize) { }
// reset de interruptvlag en krijg INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();
// haal de huidige FIFO-telling op fifoCount = mpu.getFIFOCount ();
if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // controleer op interrupt else if (mpuIntStatus & 0x02) { while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes(fifoBuffer, pakketgrootte); fifoCount -= pakketgrootte; mpu.dmpGetQuaternion(&q, fifoBuffer); relativ.updateOrientationNative(q.x, q.y, q.z, q.w, 4); // updateOrientationNative" kan worden gebruikt voor 32-bits ARM-kernmicrocontrollers met native USB zoals Arduino DUE // wat wordt aanbevolen. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" is voor NON-NATIVE USB-microcontrollers, zoals Arduino MEGA, Arduino UNO.. // Die zijn aanzienlijk langzamer. } }
Stap 4: Speel
het verplaatsen van het kleine breadboard op een vr-game zou de camera moeten draaien
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)