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
- Committer:
- fbob
- Date:
- 2018-10-17
- Revision:
- 15:e07de535b86f
- Parent:
- 12:2bbe233d25fb
File content as of revision 15:e07de535b86f:
#ifndef LPS25H_h #define LPS25H_h #include "mbed.h" // LPS25H I2C address #define LPS25H_ADDRESS 0b1011101 << 1 // Device identity #define WHO_AM_I 0x0F // Pressure configuration register addresses #define CTRL_REG1 0x20 #define CTRL_REG2 0x21 #define CTRL_REG3 0x22 #define CTRL_REG4 0x23 // Pressure output register addresses #define PRESS_OUT_XL 0x28 #define PRESS_OUT_L 0x29 #define PRESS_OUT_H 0x2A /** LPS25H (barometer sensor) class * * Example code (print pressure and altitude data on serial port every 0.2 second): * @code * #include "mbed.h" * #include "USBSerial.h" * #include "LPS25H.h" * * USBSerial pc; * LPS25H baro(PC_9,PA_8); * * int main() * { * baro.init(); * while(1) * { * baro.read(); * pc.printf("Pressure [hPa]: %6.2f \n", baro.p); * pc.printf("Altitude [m]: %6.2f \n\n", baro.z); * wait(0.2); * } * } * @endcode * (Need to target to NUCLEO-F401RE board platform) */ class LPS25H { public: /** Class constructor */ LPS25H(PinName sda, PinName scl); /** Initialize sensor */ bool init(); /** Read sensor data */ void read(); /** Pressure data [hPa] */ float p; /** Altitude data [m] */ float z; private: /** I2C bus */ I2C i2c; /** Setup I2C bus */ void setup_i2c(); /** Test I2C bus */ bool test_i2c(); /** Setup barometer */ void setup_baro(); /** Read barometer */ void read_baro(); /** Write data into register on MPU9250 I2C bus address */ void write_reg(uint8_t reg, uint8_t data); /** Read data from register on MPU9250 I2C bus address */ char read_reg(uint8_t reg); }; #endif