Arduino Vr: 4 қадам
Arduino Vr: 4 қадам
Anonim
Arduino Vr
Arduino Vr

Сәлем Менің атым Кристиан, мен 13 жастамын. Мен ардуиноны жақсы көремін және оның таланты бар, міне arduino vr үшін менің нұсқауым.

Жабдықтар

Жабдықтар:

1. Arduino тақтасы Mega, Due, Uno немесе Yun.

2. Аталықтан аталыққа дейінгі (стандартты секіргіш сымдар) сымдар.

3. Кішкене нан тақтасы

4. USB

5. GY-521 MPU-6050

Қосымша:

6. 5,5 дюймдік 2560*1440 2K СКД экраны HDMI - MIPI

7. Френель линзасы Фокус ұзындығы 50 мм

8. 3-D принтері немесе 3d принтер қызметі

1 -қадам: жинау

Жинау
Жинау

Оны біріктіру үшін схеманы қолданыңыз.

2 -қадам: Кітапхананы қалай орнатуға болады?

Github -ты қараңыз: https://github.com/relativty/Relativ Сіз оны Git немесе тікелей жүктеу арқылы орната аласыз.

3 -қадам: код

// i2cdevlib және MPU6050 қажет:

// Таңғажайып Джефф Роугбергке үлкен рахмет <3, MPU6050 туралы көбірек білу үшін оның репосын тексеріңіз. // ================================================ =============================

// I2Cdev және MPU6050 кітапханалар ретінде орнатылуы керек, әйтпесе.cpp/.h файлдары // екі сынып үшін де сіздің жобаңыздың қосу жолында болуы керек.

#«Relativ.h» қосыңыз

#«I2Cdev.h» қосыңыз

#«MPU6050_6Axis_MotionApps20.h» қосыңыз

#егер I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #«Wire.h» қосу #endif

MPU6050 мегапиксель; Релятивті релятивті;

#INTERRUPT_PIN анықтаңыз 2

// IMU күйі мен бақылауы: bool dmpReady = false; // егер DMP бастамасы сәтті болса 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 үзу түйреуішінің жоғары бос орынға жеткенін көрсетеді dmpDataReady () {mpuInterrupt = true; }

void setup () {#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400 кГц I2C сағаты. Егер компиляция қиындықтары болса, осы жолға түсініктеме беріңіз #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif

relativ.startNative (); // «startNative» Arduino DUE // сияқты жергілікті USB бар 32 биттік ARM ядро микроконтроллері үшін қолданыла алады. // Relativ.start (); // «старт»-Arduino MEGA, Arduino UNO сияқты NAT-NATIVE USB микроконтроллеріне арналған.. // Олар айтарлықтай баяу. 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 (шын);

// Arduino үзілісті анықтауды қосуды қосады AttInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus ();

dmpReady = ақиқат;

// кейінірек салыстыру үшін күтілетін DMP пакетінің өлшемін алу packetSize = mpu.dmpGetFIFOPacketSize (); } басқа {// ҚАТЕ! }}

void loop () {// Егер (! dmpReady) қайтарылса, DMP дұрыс бапталмаса, ештеңе жасамаңыз;

// (! mpuInterrupt && fifoCount <packetSize) {} кезінде MPU үзілісінің немесе қосымша пакеттің болуын күтіңіз.

// үзіліс жалаушасын қалпына келтіру және INT_STATUS байтты mpuInterrupt = false алу; mpuIntStatus = mpu.getIntStatus ();

// ағымдағы FIFO санын алу fifoCount = mpu.getFIFOCount ();

егер ((mpuIntStatus & 0x10) || fifoCount == 1024) {mpu.resetFIFO (); } // үзілісті тексеріңіз, егер if (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 «ұсынылған Arduino DUE // сияқты Native USB бар 32 биттік ARM ядро микроконтроллері үшін қолданыла алады. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation» ND-NATIVE USB микроконтроллері үшін, мысалы Arduino MEGA, Arduino UNO.. // Олар айтарлықтай баяу. }}

4 -қадам: Ойнаңыз

кез келген vr ойынында шағын тақтаны жылжыту камераны айналдыруы керек

Ұсынылған: