İçindekiler:

Arduino Vr: 4 Adım
Arduino Vr: 4 Adım

Video: Arduino Vr: 4 Adım

Video: Arduino Vr: 4 Adım
Video: Arduino Nedir? Nasıl Kurulur ve Neler Yapılabilir? #1 2024, Kasım
Anonim
arduino vr
arduino vr

Merhaba benim adım Christian ve 13 yaşındayım. Arduino'yu seviyorum ve bunun için bir yeteneğim var, bu yüzden işte bir arduino vr için talimatım.

Gereçler

Gereçler:

1. Arduino kartı Mega, Due, Uno veya Yun.

2. Erkekten erkeğe (standart atlama telleri) teller.

3. Küçük devre tahtası

4. USB

5. GY-521 MPU-6050

İsteğe bağlı:

6. 5.5 inç 2560*1440 2K LCD Ekran HDMI'dan MIPI'ye

7. Fresnel lens Odak Uzaklığı 50mm

8. 3 boyutlu yazıcı veya 3 boyutlu yazıcı hizmeti

Adım 1: Birleştirin

Birleştirmek
Birleştirmek

Bir araya getirmek için şemayı kullanın.

Adım 2: Kütüphane Nasıl Kurulur?

Github'a bir göz atın: https://github.com/relativty/Relativ Git'i kullanarak kurabilir veya doğrudan İndirebilirsiniz.

3. Adım: Kodlayın

// i2cdevlib ve MPU6050 gereklidir:

// Harika Jeff Rowberg'e çok teşekkürler <3, daha fazla MPU6050 öğrenmek için deposunu kontrol edin. //=============================================== =============================

// I2Cdev ve MPU6050 kitaplık olarak kurulmalı, yoksa.cpp/.h dosyaları // her iki sınıf için projenizin içerme yolunda olmalıdır

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif

MPU6050 mpu; göreli göreli;

#define INTERRUPT_PIN 2

// IMU durumu ve kontrolü: bool dmpReady = false; // DMP başlatma başarılıysa true uint8_t mpuIntStatus; uint8_t devStatus; // 0 = başarı, !0 = hata uint16_t packageSize; uint16_t fifoCount; uint8_t fifoBuffer[64];

Kuaterniyon q; // [w, x, y, z]

uçucu bool mpuInterrupt = false; // MPU kesme pininin yüksek void olup olmadığını gösterir dmpDataReady() { mpuInterrupt = true; }

void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Wire.setClock(400000); // 400kHz I2C saati. Derleme sorunları yaşıyorsanız bu satırı yorumlayın #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif

relativ.startNative(); // "startNative", önerilen Arduino DUE // gibi Native USB'li 32-bit ARM çekirdekli mikro denetleyici için kullanılabilir. // Göreceli.start(); // "start", Arduino MEGA, Arduino UNO gibi YEREL OLMAYAN USB mikro denetleyici içindir. // Bunlar önemli ölçüde daha yavaştır. mpu.initialize(); pinMode(KESME_PIN, GİRİŞ);

SerialUSB.println(mpu.testConnection() ? F("MPU6050 bağlantısı başarılı"): F("MPU6050 bağlantısı başarısız"));

// DMP'yi yapılandır devStatus = mpu.dmpInitialize();

// ================================= // burada kendi gyro ofsetlerinizi sağlayın: // === =============================== mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788);

// devSTatus eğer her şey düzgün çalıştıysa if (devStatus == 0) { // DMP'yi açın, artık hazır mpu.setDMPEnabled(true);

// Arduino kesinti tespitini etkinleştirin AttachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus();

dmpReady = doğru;

// sonraki karşılaştırma için beklenen DMP paket boyutunu al packageSize = mpu.dmpGetFIFOPacketSize(); } başka { // HATA! } }

void loop() { // (!dmpReady) dönerse DMP doğru başlatılmazsa hiçbir şey yapmayın;

// (!mpuInterrupt && fifoCount < packageSize) { } sırasında MPU kesmesi veya fazladan paket(ler)in hazır olmasını bekleyin

// kesme bayrağını sıfırla ve INT_STATUS baytını al mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();

// mevcut FIFO sayısını al fifoCount = mpu.getFIFOCount();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // else kesme olup olmadığını kontrol et if (mpuIntStatus & 0x02) { while (fifoCount < packageSize) fifoCount = mpu.getFIFOCount(); mpu.getFIFOBytes(fifoBuffer, packageSize); fifoCount -= paketSize; mpu.dmpGetQuaternion(&q, fifoBuffer); relativ.updateOrientationNative(q.x, q.y, q.z, q.w, 4); // updateOrientationNative", Arduino DUE gibi Yerel USB'li 32-bit ARM çekirdekli mikro denetleyici için kullanılabilir // önerilir. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" Arduino MEGA, Arduino UNO gibi DOĞAL OLMAYAN USB mikrodenetleyici için. // Bunlar önemli ölçüde daha yavaştır. } }

4. Adım: Oynat

küçük devre tahtasını herhangi bir sanal gerçeklik oyununda hareket ettirmek kamerayı döndürmelidir

Önerilen: