PecMan
/
FinalProjectKeyboard
Pecman
main.cpp@1:8546d208bd4f, 2016-04-27 (annotated)
- Committer:
- wretrop
- Date:
- Wed Apr 27 16:41:29 2016 +0000
- Revision:
- 1:8546d208bd4f
- Parent:
- 0:f23fd07d1d96
- Child:
- 2:5fec7dd286d2
Updated sensing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pedromtz1000 | 0:f23fd07d1d96 | 1 | #include "mbed.h" |
pedromtz1000 | 0:f23fd07d1d96 | 2 | #include "USBKeyboard.h" |
pedromtz1000 | 0:f23fd07d1d96 | 3 | |
pedromtz1000 | 0:f23fd07d1d96 | 4 | Serial pc(USBTX, USBRX); |
pedromtz1000 | 0:f23fd07d1d96 | 5 | |
wretrop | 1:8546d208bd4f | 6 | AnalogIn inputx(PTB0); // AnalogIn inputx(PTB0); |
wretrop | 1:8546d208bd4f | 7 | AnalogIn inputy(PTB1); //AnalogIn inputy(PTB1); |
pedromtz1000 | 0:f23fd07d1d96 | 8 | AnalogIn inputz(PTB2); //AnalogIn inputz(PTB2); |
pedromtz1000 | 0:f23fd07d1d96 | 9 | |
wretrop | 1:8546d208bd4f | 10 | Timeout debounceUp; |
wretrop | 1:8546d208bd4f | 11 | Timeout debounceDown; |
wretrop | 1:8546d208bd4f | 12 | Timeout middle1; |
wretrop | 1:8546d208bd4f | 13 | Timeout middle2; |
wretrop | 1:8546d208bd4f | 14 | |
wretrop | 1:8546d208bd4f | 15 | |
wretrop | 1:8546d208bd4f | 16 | PwmOut led1(LED1); |
wretrop | 1:8546d208bd4f | 17 | PwmOut led2(LED2); |
wretrop | 1:8546d208bd4f | 18 | PwmOut led3(LED3); |
wretrop | 1:8546d208bd4f | 19 | |
wretrop | 1:8546d208bd4f | 20 | int xR; |
wretrop | 1:8546d208bd4f | 21 | int yR; |
wretrop | 1:8546d208bd4f | 22 | int zR; |
wretrop | 1:8546d208bd4f | 23 | |
wretrop | 1:8546d208bd4f | 24 | int sumX; |
wretrop | 1:8546d208bd4f | 25 | int sumY; |
wretrop | 1:8546d208bd4f | 26 | int sumZ; |
wretrop | 1:8546d208bd4f | 27 | |
wretrop | 1:8546d208bd4f | 28 | |
wretrop | 1:8546d208bd4f | 29 | int x1=0; // variable for initialization |
wretrop | 1:8546d208bd4f | 30 | int y1=0; // variable for initialization |
wretrop | 1:8546d208bd4f | 31 | int z1=0; // variable for initialization |
wretrop | 1:8546d208bd4f | 32 | |
wretrop | 1:8546d208bd4f | 33 | |
wretrop | 1:8546d208bd4f | 34 | int x=0; // variable for x axes |
wretrop | 1:8546d208bd4f | 35 | int y=0; // variable for y axes |
wretrop | 1:8546d208bd4f | 36 | int z=0; // variable for z axes |
wretrop | 1:8546d208bd4f | 37 | |
wretrop | 1:8546d208bd4f | 38 | |
wretrop | 1:8546d208bd4f | 39 | bool midFl1 = 1; |
wretrop | 1:8546d208bd4f | 40 | bool midFl2 = 1; |
wretrop | 1:8546d208bd4f | 41 | bool dwn = 0; |
wretrop | 1:8546d208bd4f | 42 | bool up = 0; |
wretrop | 1:8546d208bd4f | 43 | |
wretrop | 1:8546d208bd4f | 44 | void DBUp(){ |
wretrop | 1:8546d208bd4f | 45 | up = 0; |
wretrop | 1:8546d208bd4f | 46 | } |
wretrop | 1:8546d208bd4f | 47 | |
wretrop | 1:8546d208bd4f | 48 | void DBDown(){ |
wretrop | 1:8546d208bd4f | 49 | dwn = 0; |
wretrop | 1:8546d208bd4f | 50 | } |
wretrop | 1:8546d208bd4f | 51 | |
wretrop | 1:8546d208bd4f | 52 | void mid1(){ |
wretrop | 1:8546d208bd4f | 53 | midFl1 = 1; |
wretrop | 1:8546d208bd4f | 54 | } |
wretrop | 1:8546d208bd4f | 55 | |
wretrop | 1:8546d208bd4f | 56 | void mid2(){ |
wretrop | 1:8546d208bd4f | 57 | midFl2 = 1; |
wretrop | 1:8546d208bd4f | 58 | } |
wretrop | 1:8546d208bd4f | 59 | |
pedromtz1000 | 0:f23fd07d1d96 | 60 | |
pedromtz1000 | 0:f23fd07d1d96 | 61 | int main() { |
wretrop | 1:8546d208bd4f | 62 | //led1=0.9; |
pedromtz1000 | 0:f23fd07d1d96 | 63 | pc.baud(9600); // baud rate: 9600 bps interaction with computer |
pedromtz1000 | 0:f23fd07d1d96 | 64 | |
wretrop | 1:8546d208bd4f | 65 | wait(1); |
pedromtz1000 | 0:f23fd07d1d96 | 66 | |
wretrop | 1:8546d208bd4f | 67 | for(int i =0; i < 10;i++){ |
wretrop | 1:8546d208bd4f | 68 | xR = inputx.read_u16(); |
wretrop | 1:8546d208bd4f | 69 | yR = inputy.read_u16(); |
wretrop | 1:8546d208bd4f | 70 | zR = inputz.read_u16(); |
wretrop | 1:8546d208bd4f | 71 | sumX += xR; |
wretrop | 1:8546d208bd4f | 72 | sumY += yR; |
wretrop | 1:8546d208bd4f | 73 | sumZ += zR; |
wretrop | 1:8546d208bd4f | 74 | } |
pedromtz1000 | 0:f23fd07d1d96 | 75 | |
wretrop | 1:8546d208bd4f | 76 | x1 = sumX/10; |
wretrop | 1:8546d208bd4f | 77 | y1 = sumY/10; |
wretrop | 1:8546d208bd4f | 78 | z1 = sumZ/10; |
pedromtz1000 | 0:f23fd07d1d96 | 79 | |
pedromtz1000 | 0:f23fd07d1d96 | 80 | //************Eric Algorithm****************** |
pedromtz1000 | 0:f23fd07d1d96 | 81 | int status[]={0,0}; //0 means break,1 is up, 2 is down. status(0) is last, status(1) is current |
pedromtz1000 | 0:f23fd07d1d96 | 82 | int L=1; // 0 = not outputting, =1 is ouputting |
pedromtz1000 | 0:f23fd07d1d96 | 83 | //******************************************** |
wretrop | 1:8546d208bd4f | 84 | |
wretrop | 1:8546d208bd4f | 85 | |
pedromtz1000 | 0:f23fd07d1d96 | 86 | USBKeyboard keyboard; |
pedromtz1000 | 0:f23fd07d1d96 | 87 | while (true) { |
wretrop | 1:8546d208bd4f | 88 | L=1; |
wretrop | 1:8546d208bd4f | 89 | z = inputz.read_u16()-z1; //Calibration |
wretrop | 1:8546d208bd4f | 90 | x = inputx.read_u16()-x1; //Calibration |
wretrop | 1:8546d208bd4f | 91 | y = inputy.read_u16()-y1; //Calibration |
wretrop | 1:8546d208bd4f | 92 | // pc.printf("X: %d Y: %d Z: %d \n\r", x,y,z); |
wretrop | 1:8546d208bd4f | 93 | //Establish Up |
wretrop | 1:8546d208bd4f | 94 | if (x > -800 && y < 1500 && up == 0) { |
wretrop | 1:8546d208bd4f | 95 | // status[0] = status[1]; |
wretrop | 1:8546d208bd4f | 96 | // status[1] = 1; |
wretrop | 1:8546d208bd4f | 97 | // pc.printf("Down"); |
wretrop | 1:8546d208bd4f | 98 | keyboard.keyCode(UP_ARROW); |
wretrop | 1:8546d208bd4f | 99 | led1 = 1; |
wretrop | 1:8546d208bd4f | 100 | led2 = 0.9; |
wretrop | 1:8546d208bd4f | 101 | led3 = 1; |
wretrop | 1:8546d208bd4f | 102 | |
wretrop | 1:8546d208bd4f | 103 | up = 1; |
wretrop | 1:8546d208bd4f | 104 | |
wretrop | 1:8546d208bd4f | 105 | debounceUp.attach(&DBDown, 0.100); |
wretrop | 1:8546d208bd4f | 106 | // up = 0; |
wretrop | 1:8546d208bd4f | 107 | |
wretrop | 1:8546d208bd4f | 108 | } |
pedromtz1000 | 0:f23fd07d1d96 | 109 | |
wretrop | 1:8546d208bd4f | 110 | //Establish Down |
wretrop | 1:8546d208bd4f | 111 | if(x < -3500 && y > 5000 && dwn == 0) { |
wretrop | 1:8546d208bd4f | 112 | // status[0] = status[1]; |
wretrop | 1:8546d208bd4f | 113 | // status[1] = 2; |
wretrop | 1:8546d208bd4f | 114 | // pc.printf("Up"); |
wretrop | 1:8546d208bd4f | 115 | keyboard.keyCode(DOWN_ARROW); |
wretrop | 1:8546d208bd4f | 116 | led1 = 1; |
wretrop | 1:8546d208bd4f | 117 | led2 = 1; |
wretrop | 1:8546d208bd4f | 118 | led3 = 0.9; |
wretrop | 1:8546d208bd4f | 119 | dwn = 1; |
wretrop | 1:8546d208bd4f | 120 | debounceDown.attach(&DBUp, 0.100); |
wretrop | 1:8546d208bd4f | 121 | // dwn = 0; |
wretrop | 1:8546d208bd4f | 122 | |
wretrop | 1:8546d208bd4f | 123 | } |
pedromtz1000 | 0:f23fd07d1d96 | 124 | |
pedromtz1000 | 0:f23fd07d1d96 | 125 | //When not moving |
wretrop | 1:8546d208bd4f | 126 | if (x < -2000 && x > -3000 && y < 4000 && y > 3000 && midFl1 == 1){ |
wretrop | 1:8546d208bd4f | 127 | // dwn = 0; |
wretrop | 1:8546d208bd4f | 128 | up = 0; |
wretrop | 1:8546d208bd4f | 129 | midFl1 = 0; |
wretrop | 1:8546d208bd4f | 130 | middle1.attach(&mid1,0.50); |
wretrop | 1:8546d208bd4f | 131 | led1 = 0.9; |
wretrop | 1:8546d208bd4f | 132 | led2 = 1; |
wretrop | 1:8546d208bd4f | 133 | led3 = 1; |
wretrop | 1:8546d208bd4f | 134 | } |
wretrop | 1:8546d208bd4f | 135 | |
wretrop | 1:8546d208bd4f | 136 | if (x < -1000 && x > -2800 && y < 3000 && y > 2000 && midFl2 == 1){ |
wretrop | 1:8546d208bd4f | 137 | dwn = 0; |
wretrop | 1:8546d208bd4f | 138 | // up = 0; |
wretrop | 1:8546d208bd4f | 139 | midFl2 = 0; |
wretrop | 1:8546d208bd4f | 140 | middle2.attach(&mid2,0.50); |
wretrop | 1:8546d208bd4f | 141 | led1 = 0.9; |
wretrop | 1:8546d208bd4f | 142 | led2 = 0.9; |
wretrop | 1:8546d208bd4f | 143 | led3 = 1; |
wretrop | 1:8546d208bd4f | 144 | } |
pedromtz1000 | 0:f23fd07d1d96 | 145 | |
pedromtz1000 | 0:f23fd07d1d96 | 146 | wait_ms(50); |
wretrop | 1:8546d208bd4f | 147 | } |
pedromtz1000 | 0:f23fd07d1d96 | 148 | } |