FXOS8700CQ class modified for el17yfk
FXOS8700CQ.h@0:f66eda6a492a, 2017-01-31 (annotated)
- Committer:
- eencae
- Date:
- Tue Jan 31 19:02:23 2017 +0000
- Revision:
- 0:f66eda6a492a
- Child:
- 1:09311e0a2c64
Library for interfacing with FXOS8700CQ accelerometer and magnetometer.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:f66eda6a492a | 1 | /* FXOS8700CQ Library |
eencae | 0:f66eda6a492a | 2 | |
eencae | 0:f66eda6a492a | 3 | Sample code from ELEC2645 - demonstrates how to create a library |
eencae | 0:f66eda6a492a | 4 | for the K64F on-board accelerometer and magnetometer |
eencae | 0:f66eda6a492a | 5 | |
eencae | 0:f66eda6a492a | 6 | (c) Craig A. Evans, University of Leeds, Jan 2017 |
eencae | 0:f66eda6a492a | 7 | |
eencae | 0:f66eda6a492a | 8 | */ |
eencae | 0:f66eda6a492a | 9 | |
eencae | 0:f66eda6a492a | 10 | #ifndef FXOS8700CQ_H |
eencae | 0:f66eda6a492a | 11 | #define FXOS8700CQ_H |
eencae | 0:f66eda6a492a | 12 | |
eencae | 0:f66eda6a492a | 13 | #include "mbed.h" |
eencae | 0:f66eda6a492a | 14 | |
eencae | 0:f66eda6a492a | 15 | // mbed API uses 8-bit addresses so need to left-shift 7-bit addresses by 1 |
eencae | 0:f66eda6a492a | 16 | #define FXOS8700CQ_ADDR (0x1D << 1) // for K64F board |
eencae | 0:f66eda6a492a | 17 | // values from 13.2 datasheet |
eencae | 0:f66eda6a492a | 18 | #define FXOS8700CQ_STATUS 0x00 |
eencae | 0:f66eda6a492a | 19 | #define FXOS8700CQ_WHO_AM_I 0x0D |
eencae | 0:f66eda6a492a | 20 | #define FXOS8700CQ_XYZ_DATA_CFG 0x0E |
eencae | 0:f66eda6a492a | 21 | #define FXOS8700CQ_CTRL_REG1 0x2A |
eencae | 0:f66eda6a492a | 22 | #define FXOS8700CQ_M_CTRL_REG1 0x5B |
eencae | 0:f66eda6a492a | 23 | #define FXOS8700CQ_M_CTRL_REG2 0x5C |
eencae | 0:f66eda6a492a | 24 | #define FXOS8700CQ_WHO_AM_I_VAL 0xC7 |
eencae | 0:f66eda6a492a | 25 | #define FXOS8700CQ_READ_LEN 13 |
eencae | 0:f66eda6a492a | 26 | |
eencae | 0:f66eda6a492a | 27 | #define PI 3.14159265359f |
eencae | 0:f66eda6a492a | 28 | #define RAD2DEG 57.2957795131f |
eencae | 0:f66eda6a492a | 29 | |
eencae | 0:f66eda6a492a | 30 | struct Data { |
eencae | 0:f66eda6a492a | 31 | float ax; |
eencae | 0:f66eda6a492a | 32 | float ay; |
eencae | 0:f66eda6a492a | 33 | float az; |
eencae | 0:f66eda6a492a | 34 | float mx; |
eencae | 0:f66eda6a492a | 35 | float my; |
eencae | 0:f66eda6a492a | 36 | float mz; |
eencae | 0:f66eda6a492a | 37 | }; |
eencae | 0:f66eda6a492a | 38 | |
eencae | 0:f66eda6a492a | 39 | class FXOS8700CQ |
eencae | 0:f66eda6a492a | 40 | { |
eencae | 0:f66eda6a492a | 41 | |
eencae | 0:f66eda6a492a | 42 | public: |
eencae | 0:f66eda6a492a | 43 | FXOS8700CQ(PinName sda, PinName scl); |
eencae | 0:f66eda6a492a | 44 | ~FXOS8700CQ(); |
eencae | 0:f66eda6a492a | 45 | void init(); |
eencae | 0:f66eda6a492a | 46 | Data get_values(); |
eencae | 0:f66eda6a492a | 47 | float get_pitch(); |
eencae | 0:f66eda6a492a | 48 | float get_roll(); |
eencae | 0:f66eda6a492a | 49 | |
eencae | 0:f66eda6a492a | 50 | private: |
eencae | 0:f66eda6a492a | 51 | I2C* i2c; |
eencae | 0:f66eda6a492a | 52 | |
eencae | 0:f66eda6a492a | 53 | void send_byte_to_reg(char byte,char reg); |
eencae | 0:f66eda6a492a | 54 | char read_byte_from_reg(char reg); |
eencae | 0:f66eda6a492a | 55 | void read_bytes_from_reg(char reg,int number_of_bytes,char bytes[]); |
eencae | 0:f66eda6a492a | 56 | }; |
eencae | 0:f66eda6a492a | 57 | |
eencae | 0:f66eda6a492a | 58 | #endif |