Minimus kode for gy8xmpu6050, bmp085, hmc5883L // for gy-88 etc // mpu6050, bmp085, hmc5883L #include <Wire.h> #include <bmp085.h> // som I lige har installeret #include "I2Cdev.h" // skal osse installeres #include <MPU6050.h> #include <HMC5883L.h> MPU6050 accelgyro; HMC5883L mag; float tryk, temp, hojde; int16_t mx,my,mz,ax,ay,az,gx,gy,gz; /** Acc and Gyro: AFS_SEL | Full Scale Range | LSB Sensitivity * --------+------------------+---------------- * 0 | +/- 2g | 8192 LSB/mg * 1 | +/- 4g | 4096 LSB/mg * 2 | +/- 8g | 2048 LSB/mg * 3 | +/- 16g | 1024 LSB/mg #define MPU6050_ACCEL_FS_2 0x00 #define MPU6050_ACCEL_FS_4 0x01 #define MPU6050_ACCEL_FS_8 0x02 #define MPU6050_ACCEL_FS_16 0x03 FS_SEL | Full Scale Range | LSB Sensitivity * -------+--------------------+---------------- * 0 | +/- 250 degrees/s | 131 LSB/deg/s * 1 | +/- 500 degrees/s | 65.5 LSB/deg/s * 2 | +/- 1000 degrees/s | 32.8 LSB/deg/s * 3 | +/- 2000 degrees/s | 16.4 LSB/deg/s #define MPU6050_GYRO_FS_250 0x00 #define MPU6050_GYRO_FS_500 0x01 #define MPU6050_GYRO_FS_1000 0x02 #define MPU6050_GYRO_FS_2000 0x03 mpu.setFullScaleGyroRange(MPU6050_GYRO_FS_2000); mpu.setFullScaleAccelRange(MPU6050_ACCEL_FS_4); Serial.println(mpu.getFullScaleGyroRange()); Serial.println(mpu.getFullScaleAccelRange()); **/ void setup() { Serial.begin(115200); Wire.begin(); // I2C net til IMU board bmp085Init(0x68,102500.0); // ress at sealevel today accelgyro.initialize(); mag.initialize(); } #define SP(x) Serial.print(x) void printData() { Serial.print("temp(C) "); Serial.print(temp); Serial.print("\t tryk(Pa) "); Serial.print(tryk); Serial.print("\t hojde(m)"); Serial.println(hojde); SP(mx); SP(" "); SP(my); SP(" "); SP(mz); SP("\n"); SP(ax); SP(" "); SP(ay); SP(" "); SP(az); SP("\n"); SP(gx); SP(" "); SP(gy); SP(" "); SP(gz); SP("\n"); } void loop() { bmp085Measure(&temp, &tryk, &hojde); accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz); mag.getHeading(&mx,&my,&mz); printData(); delay(100); // delay er maaske for kort hvis vi skal sende over radio ... } |