Съдържание:

Arduino Vr: 4 стъпки
Arduino Vr: 4 стъпки

Видео: Arduino Vr: 4 стъпки

Видео: Arduino Vr: 4 стъпки
Видео: Ардуино - първи стъпки в роботиката 2024, Юли
Anonim
Arduino Vr
Arduino Vr

Здравейте Казвам се Кристиан и съм на 13 години. Обичам arduino и имам талант за това, така че тук е моят инструктаж за arduino vr.

Консумативи

Консумативи:

1. Arduino дъска Mega, Due, Uno или Yun.

2. Мъжки към мъжки (стандартни джъмперни проводници) проводници.

3. Малка дъска

4. USB

5. GY-521 MPU-6050

По избор:

6. 5,5 инчов 2560*1440 2K LCD екран HDMI към MIPI

7. Леща на Френел Фокусно разстояние 50 мм

8. Услуга за 3-D принтер или 3d принтер

Стъпка 1: Сглобете

Съберете
Съберете

Използвайте схемата, за да я съберете.

Стъпка 2: Как да инсталирам библиотека?

Разгледайте Github: https://github.com/relativty/Relativ Можете да го инсталирате с помощта на Git или директно изтегляне.

Стъпка 3: Код

// необходими са i2cdevlib и MPU6050:

// Голямо благодаря на невероятния Jeff Rowberg <3, отидете да проверите неговото репо, за да научите повече MPU6050. // ================================================ =============================

// I2Cdev и MPU6050 трябва да бъдат инсталирани като библиотеки, иначе.cpp/.h файловете // и за двата класа трябва да са в пътя за включване на вашия проект

#включва "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#ако I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #включва "Wire.h" #endif

MPU6050 mpu; Relativ relativ;

#дефинирайте INTERRUPT_PIN 2

// Състояние и контрол на IMU: bool dmpReady = false; // вярно, ако DMP init е успешен uint8_t mpuIntStatus; uint8_t devStatus; // 0 = успех,! 0 = грешка uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer [64];

Кватернион q; // [w, x, y, z]

летливи bool mpuInterrupt = false; // указва дали прекъсването на прекъсването на MPU е високо void dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C часовник. Коментирайте този ред, ако имате затруднения при компилирането #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, вярно); #endif

relativ.startNative (); // "startNative" може да се използва за 32-битов ARM ядрен микроконтролер с Native USB като Arduino DUE // което се препоръчва. // Relativ.start (); // "стартът" е за NON-NATIVE USB микроконтролер, като Arduino MEGA, Arduino UNO.. // Те са значително по-бавни. mpu.initialize (); pinMode (INTERRUPT_PIN, INPUT);

SerialUSB.println (mpu.testConnection ()? F ("MPU6050 връзката е успешна"): F ("MPU6050 връзката е неуспешна"));

// конфигуриране на DMP devStatus = mpu.dmpInitialize ();

// ================================ // предоставете свои собствени компенсации на жироскопа тук: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1788);

// devSTatus, ако всичко работи правилно, ако (devStatus == 0) {// включите DMP, сега, когато е готово mpu.setDMPEnabled (true);

// разрешаване на откриване на прекъсване на Arduino attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = вярно;

// получаваме очаквания размер на пакета DMP за по -късно сравнение packetSize = mpu.dmpGetFIFOPacketSize (); } else {// ГРЕШКА! }}

void loop () {// Не правете нищо, ако DMP не инициализира правилно if (! dmpReady) return;

// изчакайте MPU прекъсването или допълнителните пакети да са налични докато (! mpuInterrupt && fifoCount <packetSize) {}

// нулираме флага на прекъсване и получаваме INT_STATUS байт mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus ();

// получавам текущ брой FIFO fifoCount = mpu.getFIFOCount ();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // проверка за прекъсване else if (mpuIntStatus & 0x02) {while (fifoCount <packetSize) fifoCount = mpu.getFIFOCount (); mpu.getFIFOBytes (fifoBuffer, packetSize); fifoCount -= размер на пакета; mpu.dmpGetQuaternion (& q, fifoBuffer); relativ.updateOrientationNative (q.x, q.y, q.z, q.w, 4); // updateOrientationNative "може да се използва за 32-битов ARM ядрен микроконтролер с Native USB като Arduino DUE // което се препоръчва. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" е за NON-NATIVE USB микроконтролер, като Arduino MEGA, Arduino UNO.. // Те са значително по-бавни. }}

Стъпка 4: Играйте

преместването на малката дъска на всяка VR игра трябва да завърти камерата

Препоръчано: