XYZ platform including 3 motors and 8 magnetometers (LIS3MDL).
Fork of XYZ_sensor_Platform by
xyz_sensor_platform.h
- Committer:
- hober
- Date:
- 2017-11-14
- Revision:
- 5:eddad24530e3
- Parent:
- 4:229de5852b9e
- Child:
- 7:0ad7d240be7a
File content as of revision 5:eddad24530e3:
#ifndef __XYZ_SENSOR_PLATFORM_H #define __XYZ_SENSOR_PLATFORM_H /*** Includes ----------------------------------------------------------------- ***/ //#include "mbed.h" #include "altimu_10_v5.h" #include "motor.h" #include "motor_targets.h" //#define MOTOR_INITIAL /*** Typedefs ----------------------------------------------------------------- ***/ typedef struct { int32_t AXIS_X; int32_t AXIS_Y; int32_t AXIS_Z; } AxesRaw_TypeDef; class XYZSensorPlatform { public: XYZSensorPlatform(); void init(void); void go_forward() { motorY->go(NON_MOTOR_SIDE); } void go_backward() { motorX->go(MOTOR_SIDE); } void go_up() { motorZ->go(MOTOR_SIDE); } void go_down() { motorZ->go(NON_MOTOR_SIDE); } void go_right() { motorY->go(MOTOR_SIDE); } void go_left() { motorY->go(NON_MOTOR_SIDE); } void set_speed(float speed) { motorX->setSpeed(speed); motorY->setSpeed(speed); motorZ->setSpeed(speed); } float speed() { return motorX->speed(); } void position(float* pos) { pos[0] = motorX->position(); pos[1] = motorY->position(); pos[2] = motorZ->position(); } void reset() { motorX->reset(); motorY->reset(); motorZ->reset(); } void to(float x, float y, float z) { motorX->to(x); motorY->to(y); motorZ->to(z); } AxesRaw_TypeDef get_mag() { AxesRaw_TypeDef ret; magnetometer->get_m_axes((int32_t *)&ret); return ret; } int get_mag_raw(int16_t *ret) { return magnetometer->get_m_axes_raw(ret); } AxesRaw_TypeDef get_acc() { AxesRaw_TypeDef ret; accelerometer->get_x_axes((int32_t *)&ret); return ret; } AxesRaw_TypeDef get_gyr() { AxesRaw_TypeDef ret; gyroscope->get_g_axes((int32_t *)&ret); return ret; } void setSensorI2cFrequency(int hz){ sensor->setI2cFrequency(hz); } private: void x_zero(); void x_end(); void y_zero(); void y_end(); void z_zero(); void z_end(); Motor *motorX, *motorY, *motorZ; float x,y,z; InterruptIn xZero, xEnd, yZero, yEnd, zZero, zEnd; AltIMU_10_v5 *sensor; GyroSensor *gyroscope; MotionSensor *accelerometer; MagneticSensor *magnetometer; TempSensor *temp_sensor; }; #endif // __XYZ_SENSOR_PLATFORM_H