Alberto Piganti
/
blip_USBmouse
miniblip mouse emulator
Fork of Official_USBPrank by
main.cpp@2:3e61d74d6937, 2015-11-26 (annotated)
- 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?
User | Revision | Line number | New 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 | } |