// Update Sensor Readings into _latest_sensor_data
bool FC_IMU::update_sensors() {
  uint8_t data[14];
  _tw.read_bytes(_i2c_address, ACCEL_XOUT_H, 14, data);
  
  _accel_data[0]  =  ((((int16_t)data[0])  << 8) | data[1])  - _accel_baseline[0];
  _accel_data[1]  =  ((((int16_t)data[2])  << 8) | data[3])  - _accel_baseline[1];
  _accel_data[2]  =  ((((int16_t)data[4])  << 8) | data[5])  - _accel_baseline[2] + (int16_t)16384;
  _gyro_data[0]   =  ((((int16_t)data[8])  << 8) | data[9])  - _gyro_baseline[0];
  _gyro_data[1]   =  ((((int16_t)data[10]) << 8) | data[11]) - _gyro_baseline[1];
  _gyro_data[2]   =  ((((int16_t)data[12]) << 8) | data[13]) - _gyro_baseline[2]; 
	
	if (abs(_gyro_data[0]) < 30 ) {
		_gyro_data[0] = (int16_t)0;
	}
	
	if (abs(_gyro_data[1]) < 30 ) {
		_gyro_data[1] = (int16_t)0;
	}
	
	if (abs(_gyro_data[2]) < 100 ) {
		_gyro_data[2] = (int16_t)0;
	}
  
  gyro_rate();
  accel_angle();
  
  update_quaternion();
}
Example #2
0
void Options::set_all_sliders()
{
	rotation_x_view->set_value(rotation_x.to_degrees(), 0, max_angle_value);
	rotation_y_view->set_value(rotation_y.to_degrees(), 0, max_angle_value);
	rotation_z_view->set_value(rotation_z.to_degrees(), 0, max_angle_value);

	target_x_view->set_value(target_x.to_degrees(), 0, max_angle_value);
	target_y_view->set_value(target_y.to_degrees(), 0, max_angle_value);
	target_z_view->set_value(target_z.to_degrees(), 0, max_angle_value);

	update_quaternion();

	update_all_slider_text();
}
Example #3
0
void Options::set_all_sliders()
{
	set_value(slider_rotation_x, rotation_x.to_degrees(), 0, max_angle_value);
	set_value(slider_rotation_y, rotation_y.to_degrees(), 0, max_angle_value);
	set_value(slider_rotation_z, rotation_z.to_degrees(), 0, max_angle_value);

	set_value(slider_target_x, target_x.to_degrees(), 0, max_angle_value);
	set_value(slider_target_y, target_y.to_degrees(), 0, max_angle_value);
	set_value(slider_target_z, target_z.to_degrees(), 0, max_angle_value);

	update_quaternion();

	update_all_slider_text();
}
Example #4
0
void Options::slider_rotation_z_changed()
{
	rotation_z.set_degrees(rotation_z_view->get_value(0.0f, max_angle_value));
	update_quaternion();
}
Example #5
0
void Options::slider_rotation_y_changed()
{
	rotation_y.set_degrees(get_value(slider_rotation_y, 0.0f, max_angle_value));
	update_quaternion();
}