예제 #1
0
static void read_accel_raws() {
  mpu6050_read_accel(&accel_raws);
  record_max_accel_value();

  median_filter_in(accel_x_filter, accel_raws.x);
  median_filter_in(accel_y_filter, accel_raws.y);
  median_filter_in(accel_z_filter, accel_raws.z);
}
예제 #2
0
static void mpu6050_work(struct work_struct *work)
{
    int ret;
    struct mpu6050_data *mpu6050 = container_of(
            (struct delayed_work *)work, struct mpu6050_data, work);

    mpu6050_read_gyro(mpu6050);
    mpu6050_read_accel(mpu6050);
    mpu6050_read_temprature(mpu6050);

    mpu6050_dump_all(mpu6050);

    schedule_delayed_work(&mpu6050->work,
            msecs_to_jiffies(mpu6050->delay_ms));
}
예제 #3
0
void calibrate_accel() {
  axis_int16_t accel_raws;
  axis_float_t accel_sums;

  delay(5000);
  Serial.println("calibrating accel");

  for(int i = 0; i < 10000; i++) {
    mpu6050_read_accel(&accel_raws);
    accel_sums.x += accel_raws.x;
    accel_sums.y += accel_raws.y;
    accel_sums.z += accel_raws.z;
    delay(1);
  }

  Serial.print("x avg: ");
  Serial.println(accel_sums.x / 10000);
  Serial.print("y avg: ");
  Serial.println(accel_sums.y / 10000);
  Serial.print("z avg: ");
  Serial.println(accel_sums.z / 10000);
}