Mine, not yours justin
Dependencies: HMC6352 USBHost mbed-rtos mbed
Fork of Project by
PositionSystem.h
- Committer:
- ganeshsubram1
- Date:
- 2014-04-25
- Revision:
- 4:b2a30c313297
- Parent:
- 3:6a7620e9abd9
File content as of revision 4:b2a30c313297:
#include "USBHostMouse.h" #include "HMC6352.h" #define PFLAG_ON 0 #define PFLAG_OFF 1 #define PFLAG_CALIB 2 #define PTURN_SPEED (0.5) float PTURN_RIGHT = 0; extern Serial pc(USBTX, USBRX); // updates xy position if on, does nothing if off extern char PFlag = PFLAG_ON; // whenever a turn is complete, this should store // the degrees facing (0, 90, 180, 270) in system extern int t_position = 0; // variables to keep track of coordinate position float x_position = 0; float y_position = 0; // variables to keep track of movement during turning float pturn_x = 0; float pturn_y = 0; /* mouse event handler */ void onMouseEvent(uint8_t buttons, int8_t x_mickey, int8_t y_mickey, int8_t z) { // calculate new position if(PFlag == PFLAG_ON) { // mouse movements are in mickeys. 1 mickey = ~230 DPI = ~1/230th of an inch float temp = y_mickey / 232.6; // determine direction we are facing and add to that direction if(t_position == 0) y_position += temp; else if(t_position == 90) x_position += temp; else if(t_position == 180) y_position -= temp; else x_position -= temp; } else if(PFlag == PFLAG_CALIB) { PTURN_RIGHT += x_mickey / 232.6; } else { pturn_x += x_mickey / 232.6; pturn_y += y_mickey / 232.6; } } // intialize x and y variables for turning void turnInit() { pturn_x = 0; pturn_y = 0; } /* positioning system thread function */ void PositionSystemMain(void const *) { USBHostMouse mouse; while(1) { // try to connect a USB mouse while(!mouse.connect()) Thread::wait(500); // when connected, attach handler called on mouse event mouse.attachEvent(onMouseEvent); // wait until the mouse is disconnected while(mouse.connected()) Thread::wait(500); } }