The preloaded firmware shipped on the USB Prank.

Dependencies:   USBDevice mbed

Committer:
Experiment626
Date:
Sat Sep 13 03:28:16 2014 +0000
Revision:
0:01e3d602e31f
Child:
1:2449ac218b24
Official USB Prank Firmware 1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Experiment626 0:01e3d602e31f 1 #include "mbed.h"
Experiment626 0:01e3d602e31f 2 #include "USBMouse.h"
Experiment626 0:01e3d602e31f 3 #include <stdlib.h>
Experiment626 0:01e3d602e31f 4 #include <math.h>
Experiment626 0:01e3d602e31f 5
Experiment626 0:01e3d602e31f 6 #define DELAY_TO_NEXT_RADIUS (rand() % 5 + 1)
Experiment626 0:01e3d602e31f 7 #define DELAY_TO_RESTART (rand() % 30 + 1)
Experiment626 0:01e3d602e31f 8
Experiment626 0:01e3d602e31f 9 USBMouse mouse;
Experiment626 0:01e3d602e31f 10
Experiment626 0:01e3d602e31f 11 main()
Experiment626 0:01e3d602e31f 12 {
Experiment626 0:01e3d602e31f 13 static const float DELAY_TO_START = 25.0;
Experiment626 0:01e3d602e31f 14 float DELAY_TO_NEXT_POINT = 0.001;
Experiment626 0:01e3d602e31f 15 static const int16_t RADIUS_INC = 2;
Experiment626 0:01e3d602e31f 16 static const int16_t ANGLE_INC = 2;
Experiment626 0:01e3d602e31f 17 static const int8_t NUM_CIRCLE_SIZES = 4;
Experiment626 0:01e3d602e31f 18
Experiment626 0:01e3d602e31f 19 int16_t x = 0;
Experiment626 0:01e3d602e31f 20 int16_t y = 0;
Experiment626 0:01e3d602e31f 21 int16_t angle = 0;
Experiment626 0:01e3d602e31f 22 int16_t radius = 5; // if radius is too large, OS dependent, Windows 8 it isn't visible
Experiment626 0:01e3d602e31f 23 int16_t recenter_radius_correction = 0;
Experiment626 0:01e3d602e31f 24
Experiment626 0:01e3d602e31f 25
Experiment626 0:01e3d602e31f 26 int8_t circle_count;
Experiment626 0:01e3d602e31f 27
Experiment626 0:01e3d602e31f 28 int nextPointFrequency;
Experiment626 0:01e3d602e31f 29
Experiment626 0:01e3d602e31f 30 // Start-up Code
Experiment626 0:01e3d602e31f 31 for (circle_count = 1; circle_count <= 5; circle_count++)
Experiment626 0:01e3d602e31f 32 {
Experiment626 0:01e3d602e31f 33 while (angle <= 360)
Experiment626 0:01e3d602e31f 34 {
Experiment626 0:01e3d602e31f 35 x = cos((double)angle*3.14/180.0)*5;
Experiment626 0:01e3d602e31f 36 y = sin((double)angle*3.14/180.0)*5;
Experiment626 0:01e3d602e31f 37 mouse.move(x, y);
Experiment626 0:01e3d602e31f 38 angle += ANGLE_INC;
Experiment626 0:01e3d602e31f 39 wait(.001);
Experiment626 0:01e3d602e31f 40 } // draw circle
Experiment626 0:01e3d602e31f 41
Experiment626 0:01e3d602e31f 42 wait(.25);
Experiment626 0:01e3d602e31f 43 x = y = angle = 0;
Experiment626 0:01e3d602e31f 44 } // end circle_count
Experiment626 0:01e3d602e31f 45
Experiment626 0:01e3d602e31f 46 wait(DELAY_TO_START);
Experiment626 0:01e3d602e31f 47
Experiment626 0:01e3d602e31f 48 while (true)
Experiment626 0:01e3d602e31f 49 {
Experiment626 0:01e3d602e31f 50 for (circle_count = 1; circle_count <= NUM_CIRCLE_SIZES; circle_count++)
Experiment626 0:01e3d602e31f 51 {
Experiment626 0:01e3d602e31f 52 while (angle <= 360)
Experiment626 0:01e3d602e31f 53 {
Experiment626 0:01e3d602e31f 54 x = cos((double)angle*3.14/180.0)*radius;
Experiment626 0:01e3d602e31f 55 y = sin((double)angle*3.14/180.0)*radius;
Experiment626 0:01e3d602e31f 56 mouse.move(x, y);
Experiment626 0:01e3d602e31f 57 recenter_radius_correction -= x;
Experiment626 0:01e3d602e31f 58 angle += ANGLE_INC;
Experiment626 0:01e3d602e31f 59 wait(DELAY_TO_NEXT_POINT);
Experiment626 0:01e3d602e31f 60 } // draw circle
Experiment626 0:01e3d602e31f 61
Experiment626 0:01e3d602e31f 62 nextPointFrequency = rand() % 1000 + 1;
Experiment626 0:01e3d602e31f 63
Experiment626 0:01e3d602e31f 64 if(nextPointFrequency < 100)
Experiment626 0:01e3d602e31f 65 nextPointFrequency = 100;
Experiment626 0:01e3d602e31f 66
Experiment626 0:01e3d602e31f 67 DELAY_TO_NEXT_POINT = 1/(float)nextPointFrequency;
Experiment626 0:01e3d602e31f 68
Experiment626 0:01e3d602e31f 69 wait(DELAY_TO_NEXT_RADIUS);
Experiment626 0:01e3d602e31f 70 x = y = angle = 0;
Experiment626 0:01e3d602e31f 71 radius += RADIUS_INC;
Experiment626 0:01e3d602e31f 72 // FIX: Change ANGLE_INCREMENT and DELAY_TO_NEXT_POINT so circle drawn relative resolution and time
Experiment626 0:01e3d602e31f 73 mouse.move(recenter_radius_correction,0);
Experiment626 0:01e3d602e31f 74 recenter_radius_correction = 0;
Experiment626 0:01e3d602e31f 75 } // end circle_count
Experiment626 0:01e3d602e31f 76
Experiment626 0:01e3d602e31f 77 radius = 5;
Experiment626 0:01e3d602e31f 78
Experiment626 0:01e3d602e31f 79 wait(DELAY_TO_RESTART);
Experiment626 0:01e3d602e31f 80 }
Experiment626 0:01e3d602e31f 81 }