Table des matières:

Arduino Vr : 4 étapes
Arduino Vr : 4 étapes

Vidéo: Arduino Vr : 4 étapes

Vidéo: Arduino Vr : 4 étapes
Vidéo: Arduino Workshop - Chapter Three - FOR Loops 2024, Juillet
Anonim
Arduino Vr
Arduino Vr

Bonjour, je m'appelle Christian et j'ai 13 ans. J'aime l'arduino et j'ai un talent pour cela alors voici mon instructable pour un arduino vr.

Fournitures

Fournitures:

1. Carte Arduino Mega, Due, Uno ou Yun.

2. Fils mâles à mâles (fils de connexion standard).

3. Petite planche à pain

4. USB

5. GY-521 MPU-6050

Optionnel:

6. Écran LCD 5,5 pouces 2560 * 1440 2K HDMI vers MIPI

7. Lentille de Fresnel Longueur focale 50mm

8. Imprimante 3D ou service d'imprimante 3D

Étape 1: Assembler

Assembler
Assembler

Utilisez le schéma pour l'assembler.

Étape 2: Comment installer la bibliothèque ?

Jetez un œil au Github: https://github.com/relativty/Relativ Vous pouvez soit l'installer à l'aide de Git, soit directement Télécharger.

Étape 3: Coder

// i2cdevlib et MPU6050 sont nécessaires:

// Un grand merci à l'incroyable Jeff Rowberg <3, allez voir son repo pour en savoir plus sur MPU6050. //================================================ ==============================

// I2Cdev et MPU6050 doivent être installés en tant que bibliothèques, sinon les fichiers.cpp/.h // pour les deux classes doivent être dans le chemin d'inclusion de votre projet

#include "Relativ.h"

#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif

MPU6050 mpu; Relatif relatif;

#define INTERRUPT_PIN 2

// Statut et contrôle de l'IMU: bool dmpReady = false; // true si l'initialisation DMP a réussi uint8_t mpuIntStatus; uint8_t devStatus; // 0 = succès, !0 = erreur uint16_t packetSize; uint16_t fifoCount; uint8_t fifoBuffer[64];

quaternion q; // [l, x, y, z]

volatile bool mpuInterrupt = false; // indique si la broche d'interruption MPU est devenue haute void dmpDataReady() { mpuInterrupt = true; }

void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); Wire.setClock(400000); // Horloge I2C 400 kHz. Commentez cette ligne si vous rencontrez des difficultés de compilation #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #fin si

relativ.startNative(); // "startNative" peut être utilisé pour un microcontrôleur à noyau ARM 32 bits avec USB natif comme Arduino DUE // qui est recommandé. // Relativ.start(); // "start" est pour les microcontrôleurs USB NON NATIFS, comme Arduino MEGA, Arduino UNO.. // Ceux-ci sont nettement plus lents. mpu.initialize(); pinMode(INTERRUPT_PIN, INPUT);

SerialUSB.println(mpu.testConnection() ? F("Connexion MPU6050 réussie"): F("Connexion MPU6050 échouée"));

// configurer le DMP devStatus = mpu.dmpInitialize();

// ================================== // fournissez vos propres décalages de gyroscope ici: // === =============================== mpu.setXGyroOffset (220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788);

// devSTATus si tout a fonctionné correctement if (devStatus == 0) { // activer le DMP, maintenant qu'il est prêt mpu.setDMPEnabled(true);

// activer la détection d'interruption Arduino attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus();

dmpReady = vrai;

// obtenir la taille de paquet DMP attendue pour une comparaison ultérieure packetSize = mpu.dmpGetFIFOPacketSize(); } else { // ERREUR ! } }

void loop() { // Ne rien faire si DMP ne s'initialise pas correctement if (!dmpReady) return;

// attend que l'interruption MPU ou les paquets supplémentaires soient disponibles pendant que (!mpuInterrupt && fifoCount < packetSize) { }

// réinitialiser l'indicateur d'interruption et obtenir l'octet INT_STATUS mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus();

// obtenir le nombre FIFO actuel fifoCount = mpu.getFIFOCount();

if ((mpuIntStatus & 0x10) || fifoCount == 1024) { mpu.resetFIFO(); } // vérifie les interruptions else 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" peut être utilisé pour un microcontrôleur de base ARM 32 bits avec USB natif comme Arduino DUE // qui est recommandé. //relativ.updateOrientation(qx, qy, qz, qw, 4); // Relativ.updateOrientation" est pour les microcontrôleurs USB NON NATIFS, comme Arduino MEGA, Arduino UNO.. // Ceux-ci sont nettement plus lents. } }

Étape 4: Jouez

déplacer la petite planche à pain sur n'importe quel jeu de réalité virtuelle devrait faire pivoter la caméra

Conseillé: