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:
Fri May 04 23:03:00 2018 +0000
Revision:
5:1ef8b91a0318
Child:
6:c7bc001826ba
Started building PMW3901 library

Who changed what in which revision?

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