miniblip mouse emulator

Dependencies:   USBDevice mbed

Fork of Official_USBPrank by GHI Electronics

Committer:
pighixxx
Date:
Thu Nov 26 09:29:46 2015 +0000
Revision:
2:3e61d74d6937
Parent:
1:2449ac218b24
miniblip mouse emulator

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pighixxx 2:3e61d74d6937 1 // miniblip USB Mouse
Experiment626 1:2449ac218b24 2
Experiment626 0:01e3d602e31f 3 #include "mbed.h"
Experiment626 0:01e3d602e31f 4 #include "USBMouse.h"
Experiment626 0:01e3d602e31f 5 #include <stdlib.h>
Experiment626 0:01e3d602e31f 6 #include <math.h>
pighixxx 2:3e61d74d6937 7
Experiment626 0:01e3d602e31f 8 #define DELAY_TO_NEXT_RADIUS (rand() % 5 + 1)
Experiment626 0:01e3d602e31f 9 #define DELAY_TO_RESTART (rand() % 30 + 1)
pighixxx 2:3e61d74d6937 10
pighixxx 2:3e61d74d6937 11 USBMouse mouse;
Experiment626 0:01e3d602e31f 12
pighixxx 2:3e61d74d6937 13 DigitalOut myled(P0_7);
pighixxx 2:3e61d74d6937 14 myled = 0;
Experiment626 0:01e3d602e31f 15
Experiment626 0:01e3d602e31f 16 main()
Experiment626 0:01e3d602e31f 17 {
pighixxx 2:3e61d74d6937 18 // Turn off miniblip buzzer
pighixxx 2:3e61d74d6937 19 PwmOut speaker(P0_8);
pighixxx 2:3e61d74d6937 20 speaker=0.0;
Experiment626 0:01e3d602e31f 21 static const float DELAY_TO_START = 25.0;
Experiment626 0:01e3d602e31f 22 float DELAY_TO_NEXT_POINT = 0.001;
Experiment626 0:01e3d602e31f 23 static const int16_t RADIUS_INC = 2;
Experiment626 0:01e3d602e31f 24 static const int16_t ANGLE_INC = 2;
Experiment626 0:01e3d602e31f 25 static const int8_t NUM_CIRCLE_SIZES = 4;
Experiment626 0:01e3d602e31f 26
Experiment626 0:01e3d602e31f 27 int16_t x = 0;
Experiment626 0:01e3d602e31f 28 int16_t y = 0;
Experiment626 0:01e3d602e31f 29 int16_t angle = 0;
pighixxx 2:3e61d74d6937 30 int16_t radius = 5;
Experiment626 0:01e3d602e31f 31 int16_t recenter_radius_correction = 0;
Experiment626 0:01e3d602e31f 32
Experiment626 0:01e3d602e31f 33 int8_t circle_count;
Experiment626 0:01e3d602e31f 34
Experiment626 0:01e3d602e31f 35 int nextPointFrequency;
Experiment626 0:01e3d602e31f 36
Experiment626 0:01e3d602e31f 37 for (circle_count = 1; circle_count <= 5; circle_count++)
Experiment626 0:01e3d602e31f 38 {
Experiment626 0:01e3d602e31f 39 while (angle <= 360)
Experiment626 0:01e3d602e31f 40 {
Experiment626 0:01e3d602e31f 41 x = cos((double)angle*3.14/180.0)*5;
Experiment626 0:01e3d602e31f 42 y = sin((double)angle*3.14/180.0)*5;
Experiment626 0:01e3d602e31f 43 mouse.move(x, y);
Experiment626 0:01e3d602e31f 44 angle += ANGLE_INC;
Experiment626 0:01e3d602e31f 45 wait(.001);
pighixxx 2:3e61d74d6937 46 }
Experiment626 0:01e3d602e31f 47
Experiment626 0:01e3d602e31f 48 wait(.25);
Experiment626 0:01e3d602e31f 49 x = y = angle = 0;
pighixxx 2:3e61d74d6937 50 }
pighixxx 2:3e61d74d6937 51
Experiment626 0:01e3d602e31f 52 wait(DELAY_TO_START);
Experiment626 0:01e3d602e31f 53
Experiment626 0:01e3d602e31f 54 while (true)
Experiment626 0:01e3d602e31f 55 {
Experiment626 0:01e3d602e31f 56 for (circle_count = 1; circle_count <= NUM_CIRCLE_SIZES; circle_count++)
Experiment626 0:01e3d602e31f 57 {
Experiment626 0:01e3d602e31f 58 while (angle <= 360)
Experiment626 0:01e3d602e31f 59 {
Experiment626 0:01e3d602e31f 60 x = cos((double)angle*3.14/180.0)*radius;
Experiment626 0:01e3d602e31f 61 y = sin((double)angle*3.14/180.0)*radius;
Experiment626 0:01e3d602e31f 62 mouse.move(x, y);
Experiment626 0:01e3d602e31f 63 recenter_radius_correction -= x;
Experiment626 0:01e3d602e31f 64 angle += ANGLE_INC;
Experiment626 0:01e3d602e31f 65 wait(DELAY_TO_NEXT_POINT);
pighixxx 2:3e61d74d6937 66 }
Experiment626 0:01e3d602e31f 67
Experiment626 0:01e3d602e31f 68 nextPointFrequency = rand() % 1000 + 1;
Experiment626 0:01e3d602e31f 69
Experiment626 0:01e3d602e31f 70 if(nextPointFrequency < 100)
Experiment626 0:01e3d602e31f 71 nextPointFrequency = 100;
Experiment626 0:01e3d602e31f 72
Experiment626 0:01e3d602e31f 73 DELAY_TO_NEXT_POINT = 1/(float)nextPointFrequency;
Experiment626 0:01e3d602e31f 74
Experiment626 0:01e3d602e31f 75 wait(DELAY_TO_NEXT_RADIUS);
Experiment626 0:01e3d602e31f 76 x = y = angle = 0;
Experiment626 0:01e3d602e31f 77 radius += RADIUS_INC;
Experiment626 0:01e3d602e31f 78 mouse.move(recenter_radius_correction,0);
Experiment626 0:01e3d602e31f 79 recenter_radius_correction = 0;
pighixxx 2:3e61d74d6937 80 }
Experiment626 0:01e3d602e31f 81
pighixxx 2:3e61d74d6937 82 radius = 5;
Experiment626 0:01e3d602e31f 83 wait(DELAY_TO_RESTART);
Experiment626 0:01e3d602e31f 84 }
pighixxx 2:3e61d74d6937 85 }