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 ...
}
|