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

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?

UserRevisionLine numberNew 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