kekw
Dependencies: mbed C12832_lcd MMA7660
controller.h@2:b07d155d316c, 2020-01-19 (annotated)
- Committer:
- gri
- Date:
- Sun Jan 19 14:57:41 2020 +0000
- Revision:
- 2:b07d155d316c
KEKw
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gri | 2:b07d155d316c | 1 | #include "mbed.h" |
gri | 2:b07d155d316c | 2 | #include "MMA7660.h" |
gri | 2:b07d155d316c | 3 | #include "C12832_lcd.h" |
gri | 2:b07d155d316c | 4 | #include "USBMouse.h" |
gri | 2:b07d155d316c | 5 | |
gri | 2:b07d155d316c | 6 | C12832_LCD lcd; |
gri | 2:b07d155d316c | 7 | USBMouse mouseOne; |
gri | 2:b07d155d316c | 8 | MMA7660 MMAOne(p28, p27); |
gri | 2:b07d155d316c | 9 | |
gri | 2:b07d155d316c | 10 | DigitalIn click(p14); |
gri | 2:b07d155d316c | 11 | DigitalIn left(p13); |
gri | 2:b07d155d316c | 12 | DigitalIn right(p16); |
gri | 2:b07d155d316c | 13 | DigitalIn up(p15); |
gri | 2:b07d155d316c | 14 | DigitalIn down(p12); |
gri | 2:b07d155d316c | 15 | |
gri | 2:b07d155d316c | 16 | AnalogIn potX(p19); |
gri | 2:b07d155d316c | 17 | AnalogIn potY(p20); |
gri | 2:b07d155d316c | 18 | |
gri | 2:b07d155d316c | 19 | class controller{ |
gri | 2:b07d155d316c | 20 | public: |
gri | 2:b07d155d316c | 21 | virtual int calculateX(int x){ return x; } |
gri | 2:b07d155d316c | 22 | virtual int calculateY(int y){ return y; } |
gri | 2:b07d155d316c | 23 | virtual void leftClick(){ |
gri | 2:b07d155d316c | 24 | if(click == 1){ |
gri | 2:b07d155d316c | 25 | mouseOne.buttons(1,0,0); |
gri | 2:b07d155d316c | 26 | wait(0.2); |
gri | 2:b07d155d316c | 27 | } |
gri | 2:b07d155d316c | 28 | } |
gri | 2:b07d155d316c | 29 | virtual void moveCursor() {lcd.printf("Test\n\r");} |
gri | 2:b07d155d316c | 30 | protected: |
gri | 2:b07d155d316c | 31 | int x,y; |
gri | 2:b07d155d316c | 32 | }; |
gri | 2:b07d155d316c | 33 | class accelController: public controller{ |
gri | 2:b07d155d316c | 34 | public: |
gri | 2:b07d155d316c | 35 | accelController(){ |
gri | 2:b07d155d316c | 36 | x = 0; |
gri | 2:b07d155d316c | 37 | y = 0; |
gri | 2:b07d155d316c | 38 | } |
gri | 2:b07d155d316c | 39 | int calculateX(){ return (this->x + MMAOne.x() * 32.0)/2.0; } |
gri | 2:b07d155d316c | 40 | int calculateY(){ return (this->y - MMAOne.y() * 16.0)/2.0; } |
gri | 2:b07d155d316c | 41 | void moveCursor(){ |
gri | 2:b07d155d316c | 42 | x = calculateX(); |
gri | 2:b07d155d316c | 43 | y = calculateY(); |
gri | 2:b07d155d316c | 44 | wait(.1); //time delay |
gri | 2:b07d155d316c | 45 | mouseOne.move((-x)*2, (-y)*2); |
gri | 2:b07d155d316c | 46 | leftClick(); |
gri | 2:b07d155d316c | 47 | } |
gri | 2:b07d155d316c | 48 | }; |
gri | 2:b07d155d316c | 49 | class joystickController: public controller{ |
gri | 2:b07d155d316c | 50 | public: |
gri | 2:b07d155d316c | 51 | joystickController(){ |
gri | 2:b07d155d316c | 52 | x = 0; |
gri | 2:b07d155d316c | 53 | y = 0; |
gri | 2:b07d155d316c | 54 | } |
gri | 2:b07d155d316c | 55 | void calculateX(){ |
gri | 2:b07d155d316c | 56 | if(left == 1){ this->x = (this->x - (25)) / 3; } // move mouse left |
gri | 2:b07d155d316c | 57 | else if(right == 1){ this->x = (25) / 2; } // move mouse right |
gri | 2:b07d155d316c | 58 | else{ this->x = 0; } // keeps mouse stationary |
gri | 2:b07d155d316c | 59 | } |
gri | 2:b07d155d316c | 60 | void calculateY(){ |
gri | 2:b07d155d316c | 61 | |
gri | 2:b07d155d316c | 62 | if(up == 1){ this->y = (this->y - (25)) / 3; } // move mouse down |
gri | 2:b07d155d316c | 63 | else if(down == 1){ this->y = (25) / 2; } // move mouse up |
gri | 2:b07d155d316c | 64 | else{ this->y = 0; } // keeps mouse stationary |
gri | 2:b07d155d316c | 65 | } |
gri | 2:b07d155d316c | 66 | void moveCursor(){ |
gri | 2:b07d155d316c | 67 | calculateX(); |
gri | 2:b07d155d316c | 68 | calculateY(); |
gri | 2:b07d155d316c | 69 | mouseOne.buttons(0,0,0); |
gri | 2:b07d155d316c | 70 | mouseOne.move(x, y); |
gri | 2:b07d155d316c | 71 | leftClick(); |
gri | 2:b07d155d316c | 72 | wait(0.001); |
gri | 2:b07d155d316c | 73 | } |
gri | 2:b07d155d316c | 74 | }; |
gri | 2:b07d155d316c | 75 | class potController: public controller{ |
gri | 2:b07d155d316c | 76 | int16_t a_inx; |
gri | 2:b07d155d316c | 77 | int16_t a_iny; |
gri | 2:b07d155d316c | 78 | public: |
gri | 2:b07d155d316c | 79 | potController(){ |
gri | 2:b07d155d316c | 80 | x = 0; |
gri | 2:b07d155d316c | 81 | y = 0; |
gri | 2:b07d155d316c | 82 | } |
gri | 2:b07d155d316c | 83 | void calculateX(){ |
gri | 2:b07d155d316c | 84 | a_inx = (int16_t)(potY.read() * 100.0); |
gri | 2:b07d155d316c | 85 | if(a_inx > 52){x = (x - (50 - a_inx)) / 3;} |
gri | 2:b07d155d316c | 86 | else if(a_inx < 47){x = (a_inx - 50) / 2;} |
gri | 2:b07d155d316c | 87 | else{x = 0;} |
gri | 2:b07d155d316c | 88 | } |
gri | 2:b07d155d316c | 89 | void calculateY(){ |
gri | 2:b07d155d316c | 90 | a_iny = (int16_t)(potX.read() * 100.0); |
gri | 2:b07d155d316c | 91 | if(a_iny > 52 && a_iny != 99){ y = (y - (50 - a_iny)) / 3; } |
gri | 2:b07d155d316c | 92 | else if(a_iny < 47){ y = (a_iny - 50) / 2; } |
gri | 2:b07d155d316c | 93 | else{ y = 0; } |
gri | 2:b07d155d316c | 94 | } |
gri | 2:b07d155d316c | 95 | void moveCursor(){ |
gri | 2:b07d155d316c | 96 | |
gri | 2:b07d155d316c | 97 | calculateX(); |
gri | 2:b07d155d316c | 98 | calculateY(); |
gri | 2:b07d155d316c | 99 | leftClick(); |
gri | 2:b07d155d316c | 100 | mouseOne.move(x, y); |
gri | 2:b07d155d316c | 101 | wait(0.001); |
gri | 2:b07d155d316c | 102 | } |
gri | 2:b07d155d316c | 103 | |
gri | 2:b07d155d316c | 104 | }; |