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

Dependencies:   USBDEVICE mbed

Committer:
julgonmej
Date:
Tue May 09 15:56:24 2017 +0000
Revision:
7:bb9d609a8493
Parent:
6:989396ea046f
Child:
8:427f11739ba4
Working

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jamike 0:6410755cb90c 1 #include "mbed.h"
jamike 0:6410755cb90c 2
jamike 0:6410755cb90c 3 #include <math.h>
jamike 0:6410755cb90c 4
jamike 0:6410755cb90c 5 #include "USBMouse.h"
jamike 0:6410755cb90c 6
jamike 0:6410755cb90c 7 USBMouse mouse(ABS_MOUSE);
julgonmej 5:b3c465e3e54e 8 DigitalOut myled(LED1);
jamike 0:6410755cb90c 9
julgonmej 7:bb9d609a8493 10 AnalogIn ex(PC_2);
julgonmej 7:bb9d609a8493 11 AnalogIn ey(PC_3);
julgonmej 7:bb9d609a8493 12 DigitalIn click(PB_7, PullUp);
julgonmej 6:989396ea046f 13
julgonmej 6:989396ea046f 14 Serial mipc(USBTX, USBRX);
julgonmej 6:989396ea046f 15
jamike 0:6410755cb90c 16 int main(void) {
julgonmej 6:989396ea046f 17 mipc.printf("HOLA");
julgonmej 7:bb9d609a8493 18 unsigned int x_center = (X_MAX_ABS - X_MIN_ABS)/2;
julgonmej 7:bb9d609a8493 19 unsigned int y_center = (Y_MAX_ABS - Y_MIN_ABS)/2;
julgonmej 7:bb9d609a8493 20 uint16_t x_screen = x_center;
julgonmej 7:bb9d609a8493 21 uint16_t y_screen = y_center;
julgonmej 7:bb9d609a8493 22 uint16_t px;
julgonmej 7:bb9d609a8493 23 uint16_t py;
julgonmej 7:bb9d609a8493 24 bool sw = 0;
julgonmej 7:bb9d609a8493 25 bool swOld = 0;
julgonmej 5:b3c465e3e54e 26 myled = 0;
jamike 0:6410755cb90c 27
jamike 0:6410755cb90c 28 while (1) {
julgonmej 5:b3c465e3e54e 29 myled = !myled;
julgonmej 7:bb9d609a8493 30 px = ex.read_u16();
julgonmej 7:bb9d609a8493 31 py = ey.read_u16();
julgonmej 7:bb9d609a8493 32 sw = !click.read();
julgonmej 7:bb9d609a8493 33 //mipc.printf("PALANCA X %d, PALANCA Y %d, BOTON %d\r\n", px, py, sw);
julgonmej 7:bb9d609a8493 34
julgonmej 7:bb9d609a8493 35 if(px > 40000 || px < 25000) {
julgonmej 7:bb9d609a8493 36 x_screen += (px - 32768)/250;
julgonmej 7:bb9d609a8493 37 }
julgonmej 7:bb9d609a8493 38 if(py > 40000 || py < 25000) {
julgonmej 7:bb9d609a8493 39 y_screen += (py - 32768)/250;
julgonmej 7:bb9d609a8493 40 }
julgonmej 7:bb9d609a8493 41 //mipc.printf("PUNTO X %d, PUNTO Y %d\r\n", x_screen, y_screen);
jamike 0:6410755cb90c 42 mouse.move(x_screen, y_screen);
julgonmej 7:bb9d609a8493 43 mouse.update(x_screen, y_screen,0,0);
julgonmej 7:bb9d609a8493 44
julgonmej 7:bb9d609a8493 45 if(!swOld && sw) {
julgonmej 7:bb9d609a8493 46 //mouse.click(MOUSE_LEFT);
julgonmej 7:bb9d609a8493 47 mouse.update(x_screen, y_screen,1,0);
julgonmej 7:bb9d609a8493 48 swOld = 1;
julgonmej 7:bb9d609a8493 49 //mipc.printf("CLICK");
julgonmej 7:bb9d609a8493 50 } else if (swOld && !sw){
julgonmej 7:bb9d609a8493 51 swOld = 0;
julgonmej 7:bb9d609a8493 52 mouse.update(x_screen, y_screen,0,0);
julgonmej 7:bb9d609a8493 53 }
julgonmej 7:bb9d609a8493 54
julgonmej 7:bb9d609a8493 55 //mouse.move(x_screen, y_screen);
julgonmej 7:bb9d609a8493 56 wait(0.007);
jamike 0:6410755cb90c 57 }
jamike 0:6410755cb90c 58 }