Daftar Isi:

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 Kristen dan saya berusia 13 tahun. Saya suka arduino dan memiliki bakat untuk itu, jadi inilah instruksi saya untuk arduino vr.

Perlengkapan

Perlengkapan:

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

2. Kabel male to male (kabel jumper standar).

3. Papan tempat memotong roti kecil

4. USB

5. GY-521 MPU-6050

Opsional:

6. Layar LCD 5,5 inci 2560*1440 2K HDMI ke MIPI

7. Panjang Fokus lensa Fresnel 50mm

8. Layanan printer 3-D atau printer 3d

Langkah 1: Merakit

Berkumpul
Berkumpul

Gunakan skema untuk menyatukannya.

Langkah 2: Bagaimana Menginstal Perpustakaan?

Lihat Github: https://github.com/relativty/Relativ Anda dapat menginstalnya menggunakan Git atau Unduh langsung.

Langkah 3: Kode

// i2cdevlib dan MPU6050 diperlukan:

// Terima kasih banyak untuk Jeff Rowberg yang luar biasa <3, periksa reponya untuk mempelajari lebih lanjut MPU6050. //================================================ ===============================

// I2Cdev dan MPU6050 harus diinstal sebagai perpustakaan, atau file.cpp/.h // untuk kedua kelas harus berada di jalur sertakan proyek Anda

#sertakan "Relativ.h"

#sertakan "I2Cdev.h"

#sertakan "MPU6050_6Axis_MotionApps20.h"

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

MPU6050 mpu; Relativ relativ;

#tentukan INTERRUPT_PIN 2

// status dan kontrol IMU: bool dmpReady = false; // true jika DMP init berhasil uint8_t mpuIntStatus; uint8_t devStatus; // 0 = sukses, !0 = error uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer[64];

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

volatil bool mpuInterrupt = false; // menunjukkan apakah pin interupsi MPU telah menjadi tinggi void dmpDataReady() { mpuInterrupt = true; }

void setup() { #jika I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Kawat.setJam(400000); // 400kHz I2C jam. Beri komentar pada baris ini jika mengalami kesulitan kompilasi #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #berakhir jika

relativ.startNative(); // "startNative" dapat digunakan untuk mikrokontroler inti ARM 32-bit dengan USB Asli seperti Arduino DUE // yang direkomendasikan. // Relativ.start(); // "start" adalah untuk mikrokontroler USB NON-NATIF, seperti Arduino MEGA, Arduino UNO.. // Mereka jauh lebih lambat. mpu.initialize(); pinMode(INTERRUPT_PIN, INPUT);

SerialUSB.println(mpu.testConnection() ? F("Koneksi MPU6050 berhasil"): F("Koneksi MPU6050 gagal"));

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

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

// devSTatus jika semuanya bekerja dengan baik if (devStatus == 0) { // nyalakan DMP, sekarang sudah siap mpu.setDMPEnabled(true);

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

dmpSiap = benar;

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

void loop() { // Tidak melakukan apa-apa jika DMP tidak diinisialisasi dengan benar jika (!dmpReady) kembali;

// menunggu interupsi MPU atau paket tambahan tersedia saat (!mpuInterrupt && fifoCount < packetSize) { }

// reset flag interupsi dan dapatkan INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();

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

if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // periksa interupsi else if (mpuIntStatus & 0x02) { while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); mpu.getFIFOBytes(fifoBuffer, ukuran paket); fifoCount -= ukuran paket; mpu.dmpGetQuaternion(&q, fifoBuffer); relativ.updateOrientationNative(q.x, q.y, q.z, q.w, 4); // updateOrientationNative" dapat digunakan untuk mikrokontroler inti ARM 32-bit dengan USB Asli seperti Arduino DUE // yang direkomendasikan. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" adalah untuk mikrokontroler USB NON-NATIF, seperti Arduino MEGA, Arduino UNO.. // Mereka jauh lebih lambat. } }

Langkah 4: Mainkan

memindahkan papan tempat memotong roti kecil di game vr apa pun harus memutar kamera

Direkomendasikan: