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@5:1ef8b91a0318, 2018-05-04 (annotated)
- Committer:
- fbob
- Date:
- Fri May 04 23:03:00 2018 +0000
- Revision:
- 5:1ef8b91a0318
- Child:
- 6:c7bc001826ba
Started building PMW3901 library
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 | 5:1ef8b91a0318 | 6 | #define MOTION 0x02 |
fbob | 5:1ef8b91a0318 | 7 | // Accelerometer output register addresses |
fbob | 5:1ef8b91a0318 | 8 | #define DELTA_X_L 0x03 |
fbob | 5:1ef8b91a0318 | 9 | #define DELTA_X_H 0x04 |
fbob | 5:1ef8b91a0318 | 10 | #define DELTA_Y_L 0x05 |
fbob | 5:1ef8b91a0318 | 11 | #define DELTA_Y_H 0x06 |
fbob | 5:1ef8b91a0318 | 12 | |
fbob | 5:1ef8b91a0318 | 13 | /** PMW3901 (optical flow sensor) class |
fbob | 5:1ef8b91a0318 | 14 | * |
fbob | 5:1ef8b91a0318 | 15 | * Example code (print optical flow data on serial port every 1 second): |
fbob | 5:1ef8b91a0318 | 16 | * @code |
fbob | 5:1ef8b91a0318 | 17 | * #include "mbed.h" |
fbob | 5:1ef8b91a0318 | 18 | * #include "USBSerial.h" |
fbob | 5:1ef8b91a0318 | 19 | * #include "PMW3901.h" |
fbob | 5:1ef8b91a0318 | 20 | * |
fbob | 5:1ef8b91a0318 | 21 | * USBSerial pc; |
fbob | 5:1ef8b91a0318 | 22 | * PMW3901 flow(PA_7,PA_6,PA_5,PB_4); |
fbob | 5:1ef8b91a0318 | 23 | * |
fbob | 5:1ef8b91a0318 | 24 | * int main() |
fbob | 5:1ef8b91a0318 | 25 | * { |
fbob | 5:1ef8b91a0318 | 26 | * flow.init(); |
fbob | 5:1ef8b91a0318 | 27 | * while(1); |
fbob | 5:1ef8b91a0318 | 28 | * { |
fbob | 5:1ef8b91a0318 | 29 | * flow.read(); |
fbob | 5:1ef8b91a0318 | 30 | pc.printf("Optical flow []: %d %d \n\n", flow.x, flow.y); |
fbob | 5:1ef8b91a0318 | 31 | * wait(1); |
fbob | 5:1ef8b91a0318 | 32 | * } |
fbob | 5:1ef8b91a0318 | 33 | * } |
fbob | 5:1ef8b91a0318 | 34 | * @endcode |
fbob | 5:1ef8b91a0318 | 35 | * (Need to target to NUCLEO-F401RE board platform) |
fbob | 5:1ef8b91a0318 | 36 | */ |
fbob | 5:1ef8b91a0318 | 37 | class PMW3901 |
fbob | 5:1ef8b91a0318 | 38 | { |
fbob | 5:1ef8b91a0318 | 39 | public: |
fbob | 5:1ef8b91a0318 | 40 | /** Class constructor */ |
fbob | 5:1ef8b91a0318 | 41 | PMW3901(PinName mosi, PinName miso, PinName sclk, PinName csel); |
fbob | 5:1ef8b91a0318 | 42 | |
fbob | 5:1ef8b91a0318 | 43 | /** Initialize optical flow */ |
fbob | 5:1ef8b91a0318 | 44 | int init(); |
fbob | 5:1ef8b91a0318 | 45 | /** **/ |
fbob | 5:1ef8b91a0318 | 46 | void read(); |
fbob | 5:1ef8b91a0318 | 47 | |
fbob | 5:1ef8b91a0318 | 48 | /** Optical flow data in x-axis **/ |
fbob | 5:1ef8b91a0318 | 49 | int16_t x; |
fbob | 5:1ef8b91a0318 | 50 | /** Optical flow data in y-axis **/ |
fbob | 5:1ef8b91a0318 | 51 | int16_t y; |
fbob | 5:1ef8b91a0318 | 52 | private: |
fbob | 5:1ef8b91a0318 | 53 | /** SPI bus */ |
fbob | 5:1ef8b91a0318 | 54 | SPI spi; |
fbob | 5:1ef8b91a0318 | 55 | /** Chip select */ |
fbob | 5:1ef8b91a0318 | 56 | DigitalOut cs; |
fbob | 5:1ef8b91a0318 | 57 | |
fbob | 5:1ef8b91a0318 | 58 | /** **/ |
fbob | 5:1ef8b91a0318 | 59 | void setup_flow(); |
fbob | 5:1ef8b91a0318 | 60 | /** **/ |
fbob | 5:1ef8b91a0318 | 61 | void read_flow(); |
fbob | 5:1ef8b91a0318 | 62 | }; |
fbob | 5:1ef8b91a0318 | 63 | |
fbob | 5:1ef8b91a0318 | 64 | #endif |