Library containing Crazyflie 2.0 sensors drivers: - LPS25H (barometer) - MPU9250 (IMU) - PMW3901 (optical flow) - VL53L0X (range)
Dependents: Drones-Controlador controladoatitude_cteste Drone_Controlador_Atitude optical_test
LPS25H/LPS25H.h@15:e07de535b86f, 2018-10-17 (annotated)
- Committer:
- fbob
- Date:
- Wed Oct 17 13:26:29 2018 +0000
- Revision:
- 15:e07de535b86f
- Parent:
- 12:2bbe233d25fb
Changed range and optical flow parameters names
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fbob | 8:930aa9d0f5ae | 1 | #ifndef LPS25H_h |
fbob | 8:930aa9d0f5ae | 2 | #define LPS25H_h |
fbob | 8:930aa9d0f5ae | 3 | |
fbob | 8:930aa9d0f5ae | 4 | #include "mbed.h" |
fbob | 8:930aa9d0f5ae | 5 | |
fbob | 8:930aa9d0f5ae | 6 | // LPS25H I2C address |
fbob | 8:930aa9d0f5ae | 7 | #define LPS25H_ADDRESS 0b1011101 << 1 |
fbob | 8:930aa9d0f5ae | 8 | |
fbob | 8:930aa9d0f5ae | 9 | // Device identity |
fbob | 8:930aa9d0f5ae | 10 | #define WHO_AM_I 0x0F |
fbob | 8:930aa9d0f5ae | 11 | |
fbob | 8:930aa9d0f5ae | 12 | // Pressure configuration register addresses |
fbob | 8:930aa9d0f5ae | 13 | #define CTRL_REG1 0x20 |
fbob | 8:930aa9d0f5ae | 14 | #define CTRL_REG2 0x21 |
fbob | 8:930aa9d0f5ae | 15 | #define CTRL_REG3 0x22 |
fbob | 8:930aa9d0f5ae | 16 | #define CTRL_REG4 0x23 |
fbob | 8:930aa9d0f5ae | 17 | |
fbob | 8:930aa9d0f5ae | 18 | // Pressure output register addresses |
fbob | 8:930aa9d0f5ae | 19 | #define PRESS_OUT_XL 0x28 |
fbob | 8:930aa9d0f5ae | 20 | #define PRESS_OUT_L 0x29 |
fbob | 8:930aa9d0f5ae | 21 | #define PRESS_OUT_H 0x2A |
fbob | 8:930aa9d0f5ae | 22 | |
fbob | 8:930aa9d0f5ae | 23 | /** LPS25H (barometer sensor) class |
fbob | 8:930aa9d0f5ae | 24 | * |
fbob | 8:930aa9d0f5ae | 25 | * Example code (print pressure and altitude data on serial port every 0.2 second): |
fbob | 8:930aa9d0f5ae | 26 | * @code |
fbob | 8:930aa9d0f5ae | 27 | * #include "mbed.h" |
fbob | 8:930aa9d0f5ae | 28 | * #include "USBSerial.h" |
fbob | 8:930aa9d0f5ae | 29 | * #include "LPS25H.h" |
fbob | 8:930aa9d0f5ae | 30 | * |
fbob | 8:930aa9d0f5ae | 31 | * USBSerial pc; |
fbob | 8:930aa9d0f5ae | 32 | * LPS25H baro(PC_9,PA_8); |
fbob | 8:930aa9d0f5ae | 33 | * |
fbob | 8:930aa9d0f5ae | 34 | * int main() |
fbob | 8:930aa9d0f5ae | 35 | * { |
fbob | 12:2bbe233d25fb | 36 | * baro.init(); |
fbob | 8:930aa9d0f5ae | 37 | * while(1) |
fbob | 8:930aa9d0f5ae | 38 | * { |
fbob | 8:930aa9d0f5ae | 39 | * baro.read(); |
fbob | 8:930aa9d0f5ae | 40 | * pc.printf("Pressure [hPa]: %6.2f \n", baro.p); |
fbob | 8:930aa9d0f5ae | 41 | * pc.printf("Altitude [m]: %6.2f \n\n", baro.z); |
fbob | 8:930aa9d0f5ae | 42 | * wait(0.2); |
fbob | 8:930aa9d0f5ae | 43 | * } |
fbob | 8:930aa9d0f5ae | 44 | * } |
fbob | 8:930aa9d0f5ae | 45 | * @endcode |
fbob | 8:930aa9d0f5ae | 46 | * (Need to target to NUCLEO-F401RE board platform) |
fbob | 8:930aa9d0f5ae | 47 | */ |
fbob | 8:930aa9d0f5ae | 48 | class LPS25H |
fbob | 8:930aa9d0f5ae | 49 | { |
fbob | 8:930aa9d0f5ae | 50 | public: |
fbob | 8:930aa9d0f5ae | 51 | /** Class constructor */ |
fbob | 8:930aa9d0f5ae | 52 | LPS25H(PinName sda, PinName scl); |
fbob | 8:930aa9d0f5ae | 53 | |
fbob | 8:930aa9d0f5ae | 54 | /** Initialize sensor */ |
fbob | 8:930aa9d0f5ae | 55 | bool init(); |
fbob | 8:930aa9d0f5ae | 56 | /** Read sensor data */ |
fbob | 8:930aa9d0f5ae | 57 | void read(); |
fbob | 8:930aa9d0f5ae | 58 | |
fbob | 8:930aa9d0f5ae | 59 | /** Pressure data [hPa] */ |
fbob | 8:930aa9d0f5ae | 60 | float p; |
fbob | 8:930aa9d0f5ae | 61 | /** Altitude data [m] */ |
fbob | 8:930aa9d0f5ae | 62 | float z; |
fbob | 8:930aa9d0f5ae | 63 | private: |
fbob | 8:930aa9d0f5ae | 64 | /** I2C bus */ |
fbob | 8:930aa9d0f5ae | 65 | I2C i2c; |
fbob | 8:930aa9d0f5ae | 66 | |
fbob | 8:930aa9d0f5ae | 67 | /** Setup I2C bus */ |
fbob | 8:930aa9d0f5ae | 68 | void setup_i2c(); |
fbob | 8:930aa9d0f5ae | 69 | /** Test I2C bus */ |
fbob | 8:930aa9d0f5ae | 70 | bool test_i2c(); |
fbob | 8:930aa9d0f5ae | 71 | |
fbob | 8:930aa9d0f5ae | 72 | /** Setup barometer */ |
fbob | 8:930aa9d0f5ae | 73 | void setup_baro(); |
fbob | 8:930aa9d0f5ae | 74 | /** Read barometer */ |
fbob | 8:930aa9d0f5ae | 75 | void read_baro(); |
fbob | 8:930aa9d0f5ae | 76 | |
fbob | 8:930aa9d0f5ae | 77 | /** Write data into register on MPU9250 I2C bus address */ |
fbob | 8:930aa9d0f5ae | 78 | void write_reg(uint8_t reg, uint8_t data); |
fbob | 8:930aa9d0f5ae | 79 | /** Read data from register on MPU9250 I2C bus address */ |
fbob | 8:930aa9d0f5ae | 80 | char read_reg(uint8_t reg); |
fbob | 8:930aa9d0f5ae | 81 | }; |
fbob | 8:930aa9d0f5ae | 82 | |
fbob | 8:930aa9d0f5ae | 83 | #endif |