#ifndef MAGNETOMETER_CONFIG_H #define MAGNETOMETER_CONFIG_H #define I2C_PORT i2c0 #define I2C_SDA (8) #define I2C_SCL (9) #define DIRECTION_READ_DELAY (100) #define NUM_READINGS ( 10 ) // Number of readings to // take before // calculating // direction // #define ALPHA ( 0.1f ) // Low Pass Filter // Coefficient // LSM303DLHC temperature compensation coefficients #define SCALE_Z (1.0f) // Scale for Z-axis #define OFFSET_Z (0.0f) // Offset for Z-axis #define TEMPERATURE_OFFSET \ (32.0f) // Reference // temperature for // calibration #define TEMPERATURE_COEFFICIENT_Z \ (0.33f) // Temperature // coefficient for // Z-axis /** * @brief The orientation of the car */ typedef enum { NORTH, NORTH_EAST, EAST, SOUTH_EAST, SOUTH, SOUTH_WEST, WEST, NORTH_WEST } compass_direction_t; /** * Angle of the car */ typedef enum { UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3 } angle_t; /** * @brief The direction of the car * roll = angle of the car (left or right) * pitch = angle of the car (up or down) * heading = direction of the car (north, east, south, west) in degrees * orientation = orientation of the car (north, east, south, west) */ typedef struct { float roll; float pitch; float yaw; compass_direction_t orientation; angle_t roll_angle; angle_t pitch_angle; } direction_t; #endif