Мазмұны:

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

Бейне: Arduino Vr: 4 қадам

Бейне: Arduino Vr: 4 қадам
Бейне: DIY пульт управления на ардуино за $9 под Qczek LRS Payne RC 2024, Қараша
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 ойынында шағын тақтаны жылжыту камераны айналдыруы керек

Ұсынылған: