Skip to content

Instantly share code, notes, and snippets.

@bsautner
Created April 5, 2023 16:36
Show Gist options
  • Save bsautner/388f167ea1ecb0a1d5d11a73cf662e2a to your computer and use it in GitHub Desktop.
Save bsautner/388f167ea1ecb0a1d5d11a73cf662e2a to your computer and use it in GitHub Desktop.
//compass
if (millis() - throttle > 500) {
throttle = millis();
sensors_event_t event;
accel.getEvent(&event);
/* Display the results (acceleration is measured in m/s^2) */
if (accelerometer_x > accelerometer_x + 1 || event.acceleration.x < accelerometer_x - 1) {
accelerometer_x = accelerometer_x;
Serial.print("accelerometer_x:");
Serial.println(event.acceleration.x);
}
if (accelerometer_y > accelerometer_y + 1 || event.acceleration.y < accelerometer_y - 1) {
accelerometer_y = accelerometer_y;
Serial.print("accelerometer_y:");
Serial.println(event.acceleration.y);
}
if (accelerometer_z > accelerometer_z + 1 || event.acceleration.x < accelerometer_z - 1) {
accelerometer_z = accelerometer_z;
Serial.print("accelerometer_z:");
Serial.println(event.acceleration.z);
}
float Pi = 3.14159;
// Calculate the angle of the vector y,x
float heading = (atan2(event.magnetic.y, event.magnetic.x) * 180) / Pi;
// Normalize to 0-360
if (heading < 0)
{
heading = 360 + heading;
}
if (heading > lastHeading + 3 || heading < lastHeading - 3) {
lastHeading = heading;
Serial.print("compass_heading:");
Serial.println(heading);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment