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
PMW3901/PMW3901.h@7:56608cce81ee, 2018-05-14 (annotated)
- Committer:
- fbob
- Date:
- Mon May 14 20:18:02 2018 +0000
- Revision:
- 7:56608cce81ee
- Parent:
- 6:c7bc001826ba
- Child:
- 12:2bbe233d25fb
Updated init functions
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fbob | 5:1ef8b91a0318 | 1 | #ifndef PMW3901_h |
fbob | 5:1ef8b91a0318 | 2 | #define PMW3901_h |
fbob | 5:1ef8b91a0318 | 3 | |
fbob | 5:1ef8b91a0318 | 4 | #include "mbed.h" |
fbob | 5:1ef8b91a0318 | 5 | |
fbob | 6:c7bc001826ba | 6 | // |
fbob | 6:c7bc001826ba | 7 | #define PRODUCT_ID 0x00 |
fbob | 6:c7bc001826ba | 8 | // |
fbob | 5:1ef8b91a0318 | 9 | #define MOTION 0x02 |
fbob | 5:1ef8b91a0318 | 10 | // Accelerometer output register addresses |
fbob | 5:1ef8b91a0318 | 11 | #define DELTA_X_L 0x03 |
fbob | 5:1ef8b91a0318 | 12 | #define DELTA_X_H 0x04 |
fbob | 5:1ef8b91a0318 | 13 | #define DELTA_Y_L 0x05 |
fbob | 5:1ef8b91a0318 | 14 | #define DELTA_Y_H 0x06 |
fbob | 5:1ef8b91a0318 | 15 | |
fbob | 5:1ef8b91a0318 | 16 | /** PMW3901 (optical flow sensor) class |
fbob | 5:1ef8b91a0318 | 17 | * |
fbob | 7:56608cce81ee | 18 | * Example code (print optical flow data on serial port every 0.2 second): |
fbob | 5:1ef8b91a0318 | 19 | * @code |
fbob | 5:1ef8b91a0318 | 20 | * #include "mbed.h" |
fbob | 5:1ef8b91a0318 | 21 | * #include "USBSerial.h" |
fbob | 5:1ef8b91a0318 | 22 | * #include "PMW3901.h" |
fbob | 5:1ef8b91a0318 | 23 | * |
fbob | 5:1ef8b91a0318 | 24 | * USBSerial pc; |
fbob | 5:1ef8b91a0318 | 25 | * PMW3901 flow(PA_7,PA_6,PA_5,PB_4); |
fbob | 5:1ef8b91a0318 | 26 | * |
fbob | 5:1ef8b91a0318 | 27 | * int main() |
fbob | 7:56608cce81ee | 28 | * { |
fbob | 7:56608cce81ee | 29 | * if(!flow.init()) |
fbob | 7:56608cce81ee | 30 | * { |
fbob | 7:56608cce81ee | 31 | * pc.printf("Failed to detect and initialize optical flow on I2C bus!"); |
fbob | 7:56608cce81ee | 32 | * while(1); |
fbob | 7:56608cce81ee | 33 | * } |
fbob | 5:1ef8b91a0318 | 34 | * while(1); |
fbob | 5:1ef8b91a0318 | 35 | * { |
fbob | 5:1ef8b91a0318 | 36 | * flow.read(); |
fbob | 7:56608cce81ee | 37 | * pc.printf("Optical flow [px]: %6.2f %6.2f \n\n", flow.x, flow.y); |
fbob | 7:56608cce81ee | 38 | * wait(0.2); |
fbob | 5:1ef8b91a0318 | 39 | * } |
fbob | 5:1ef8b91a0318 | 40 | * } |
fbob | 5:1ef8b91a0318 | 41 | * @endcode |
fbob | 5:1ef8b91a0318 | 42 | * (Need to target to NUCLEO-F401RE board platform) |
fbob | 5:1ef8b91a0318 | 43 | */ |
fbob | 5:1ef8b91a0318 | 44 | class PMW3901 |
fbob | 5:1ef8b91a0318 | 45 | { |
fbob | 5:1ef8b91a0318 | 46 | public: |
fbob | 5:1ef8b91a0318 | 47 | /** Class constructor */ |
fbob | 5:1ef8b91a0318 | 48 | PMW3901(PinName mosi, PinName miso, PinName sclk, PinName csel); |
fbob | 5:1ef8b91a0318 | 49 | |
fbob | 5:1ef8b91a0318 | 50 | /** Initialize optical flow */ |
fbob | 6:c7bc001826ba | 51 | bool init(); |
fbob | 5:1ef8b91a0318 | 52 | /** **/ |
fbob | 5:1ef8b91a0318 | 53 | void read(); |
fbob | 5:1ef8b91a0318 | 54 | |
fbob | 6:c7bc001826ba | 55 | /** Optical flow data in x-axis (px) **/ |
fbob | 6:c7bc001826ba | 56 | float x; |
fbob | 6:c7bc001826ba | 57 | /** Optical flow data in y-axis (px) **/ |
fbob | 6:c7bc001826ba | 58 | float y; |
fbob | 5:1ef8b91a0318 | 59 | private: |
fbob | 5:1ef8b91a0318 | 60 | /** SPI bus */ |
fbob | 5:1ef8b91a0318 | 61 | SPI spi; |
fbob | 5:1ef8b91a0318 | 62 | /** Chip select */ |
fbob | 5:1ef8b91a0318 | 63 | DigitalOut cs; |
fbob | 5:1ef8b91a0318 | 64 | |
fbob | 6:c7bc001826ba | 65 | /** **/ |
fbob | 6:c7bc001826ba | 66 | void setup_spi(); |
fbob | 6:c7bc001826ba | 67 | /** **/ |
fbob | 6:c7bc001826ba | 68 | bool test_spi(); |
fbob | 5:1ef8b91a0318 | 69 | /** **/ |
fbob | 5:1ef8b91a0318 | 70 | void setup_flow(); |
fbob | 5:1ef8b91a0318 | 71 | /** **/ |
fbob | 5:1ef8b91a0318 | 72 | void read_flow(); |
fbob | 5:1ef8b91a0318 | 73 | }; |
fbob | 5:1ef8b91a0318 | 74 | |
fbob | 5:1ef8b91a0318 | 75 | #endif |