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

Revision:
5:1ef8b91a0318
Child:
6:c7bc001826ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PMW3901/PMW3901.h	Fri May 04 23:03:00 2018 +0000
@@ -0,0 +1,64 @@
+#ifndef PMW3901_h
+#define PMW3901_h
+
+#include "mbed.h"
+
+#define MOTION 0x02
+// Accelerometer output register addresses
+#define DELTA_X_L 0x03
+#define DELTA_X_H 0x04
+#define DELTA_Y_L 0x05
+#define DELTA_Y_H 0x06
+
+/** PMW3901 (optical flow sensor) class
+ *
+ * Example code (print optical flow data on serial port every 1 second):
+ * @code
+ * #include "mbed.h"
+ * #include "USBSerial.h"
+ * #include "PMW3901.h"
+ *
+ * USBSerial pc;
+ * PMW3901 flow(PA_7,PA_6,PA_5,PB_4);
+ * 
+ * int main() 
+ * {
+ *     flow.init();
+ *     while(1);
+ *     {
+ *          flow.read();
+            pc.printf("Optical flow []: %d %d \n\n", flow.x, flow.y);
+ *          wait(1);
+ *     }
+ * }
+ * @endcode
+ * (Need to target to NUCLEO-F401RE board platform)
+ */
+class PMW3901
+{
+    public:
+        /** Class constructor */
+        PMW3901(PinName mosi, PinName miso, PinName sclk, PinName csel);
+        
+        /** Initialize optical flow */
+        int init();
+        /** **/
+        void read();
+        
+        /** Optical flow data in x-axis **/
+        int16_t x;
+        /** Optical flow data in y-axis **/
+        int16_t y;
+    private:
+        /** SPI bus */
+        SPI spi;
+        /** Chip select */
+        DigitalOut cs;
+        
+         /** **/
+        void setup_flow();
+        /** **/
+        void read_flow();
+};
+
+#endif
\ No newline at end of file