Example of usb mouse on smt32 platform using a analog 2-axis joystick

Dependencies:   USBDEVICE mbed

main.cpp

Committer:
julgonmej
Date:
2017-05-09
Revision:
7:bb9d609a8493
Parent:
6:989396ea046f
Child:
8:427f11739ba4

File content as of revision 7:bb9d609a8493:

#include "mbed.h"

#include <math.h>

#include "USBMouse.h"

USBMouse mouse(ABS_MOUSE);
DigitalOut myled(LED1);

AnalogIn ex(PC_2);
AnalogIn ey(PC_3);
DigitalIn click(PB_7, PullUp);

Serial mipc(USBTX, USBRX);

int main(void) {
    mipc.printf("HOLA");
    unsigned int x_center = (X_MAX_ABS - X_MIN_ABS)/2;
    unsigned int y_center = (Y_MAX_ABS - Y_MIN_ABS)/2;
    uint16_t x_screen = x_center;
    uint16_t y_screen = y_center;
    uint16_t px;
    uint16_t py;
    bool sw = 0;
    bool swOld = 0;
    myled = 0;

    while (1) {
        myled = !myled;
        px = ex.read_u16();
        py = ey.read_u16();
        sw = !click.read();
        //mipc.printf("PALANCA X %d,    PALANCA Y %d,     BOTON %d\r\n", px, py, sw);
        
        if(px > 40000 || px < 25000) {
            x_screen += (px - 32768)/250;
        }
        if(py > 40000 || py < 25000) {
            y_screen += (py - 32768)/250;
        }         
        //mipc.printf("PUNTO X %d,   PUNTO Y %d\r\n", x_screen, y_screen);
        mouse.move(x_screen, y_screen);
        mouse.update(x_screen, y_screen,0,0);
        
        if(!swOld && sw) {
            //mouse.click(MOUSE_LEFT);
            mouse.update(x_screen, y_screen,1,0);
            swOld = 1;
            //mipc.printf("CLICK");
        } else if (swOld && !sw){
            swOld = 0;
            mouse.update(x_screen, y_screen,0,0);
        }
        
        //mouse.move(x_screen, y_screen);
        wait(0.007);
    }
}