Boundary mods

Dependencies:   USBDevice mbed

Fork of FinalProjectKeyboard by PecMan

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?

UserRevisionLine numberNew 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 }