Isi kandungan:

Arduino Vr: 4 Langkah
Arduino Vr: 4 Langkah

Video: Arduino Vr: 4 Langkah

Video: Arduino Vr: 4 Langkah
Video: Amazing arduino project 2024, November
Anonim
Arduino Vr
Arduino Vr

Hai Nama saya beragama Kristian dan saya berumur 13 tahun. Saya suka arduino dan mempunyai bakat untuknya jadi inilah petunjuk saya untuk arduino vr.

Bekalan

Bekalan:

1. Arduino board Mega, Due, Uno, atau Yun.

2. Kabel lelaki hingga lelaki (wayar pelompat standard).

3. Papan roti kecil

4. USB

5. GY-521 MPU-6050

Pilihan:

6. Skrin LCD 5.5 inci 2560 * 1440 2K HDMI ke MIPI

7. Fesel Fresnel Panjang Fokus 50mm

8. Perkhidmatan pencetak 3-D atau pencetak 3d

Langkah 1: Berkumpul

Berkumpul
Berkumpul

Gunakan skema untuk menyatukannya.

Langkah 2: Bagaimana Memasang Perpustakaan?

Lihatlah Github: https://github.com/relativty/Relativ Anda boleh memasangnya menggunakan Git atau Muat turun langsung.

Langkah 3: Kod

// i2cdevlib dan MPU6050 diperlukan:

// Terima kasih banyak kepada Jeff Rowberg <3 yang luar biasa, periksa repo-nya untuk mengetahui lebih banyak MPU6050. // ================================================ =============================

// I2Cdev dan MPU6050 mesti dipasang sebagai perpustakaan, jika tidak, fail.cpp /.h // untuk kedua-dua kelas mesti ada di jalan sertakan projek anda

#sertakan "Relativ.h"

#sertakan "I2Cdev.h"

#sertakan "MPU6050_6Axis_MotionApps20.h"

#jika I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #masuk "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#tentukan INTERRUPT_PIN 2

// Status dan kawalan IMU: bool dmpReady = false; // benar sekiranya DMP init berjaya uint8_t mpuIntStatus; uint8_t devStatus; // 0 = kejayaan,! 0 = ralat uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

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

bool tidak menentu mpuInterrupt = false; // menunjukkan sama ada pin interupsi MPU telah hilang tinggi dmpDataReady () {mpuInterrupt = true; }

batal persediaan () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // Jam 400kHz I2C. Komen baris ini jika menghadapi kesukaran penyusunan #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // "startNative" boleh digunakan untuk mikrokontroler teras ARM 32-bit dengan USB Asli seperti Arduino DUE // yang disyorkan. // Relativ.start (); // "permulaan" adalah untuk mikrokontroler USB TIDAK SANGAT, seperti Arduino MEGA, Arduino UNO.. // Mereka jauh lebih perlahan. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("Sambungan MPU6050 berjaya"): F ("Sambungan MPU6050 gagal"));

// konfigurasi DMP devStatus = mpu.dmpInitialize ();

// ================================== // sediakan offset gyro anda sendiri di sini: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus jika semuanya berfungsi dengan baik jika (devStatus == 0) {// hidupkan DMP, sekarang sudah siap mpu.setDMPEnabled (benar);

// aktifkan Arduino pengesanan interrupt attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = benar;

// dapatkan ukuran paket DMP yang diharapkan untuk perbandingan paket kemudianSize = mpu.dmpGetFIFOPacketSize (); } lain {// KESALAHAN! }}

gelung kosong () {// Jangan buat apa-apa jika DMP tidak memulakan dengan betul jika (! dmpReady) kembali;

// tunggu MPU mengganggu atau paket tambahan tersedia semasa (! mpuInterrupt && fifoCount <packetSize) {}

// tetapkan semula bendera gangguan dan dapatkan INT_STATUS bait mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// dapatkan jumlah FIFO saat ini fifoCount = mpu.getFIFOCount ();

jika ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // periksa gangguan lain jika (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount - = packetSize; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "boleh digunakan untuk mikrokontroler teras ARM 32-bit dengan USB Asli seperti Arduino DUE // yang disyorkan. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" adalah untuk mikrokontroler USB NON-NATIVE, seperti Arduino MEGA, Arduino UNO.. // Mereka jauh lebih perlahan. }}

Langkah 4: Main

menggerakkan papan roti kecil pada permainan vr mana pun harus memutar kamera

Disyorkan: